LFM2.5-DSpark使推理速度最高提升3.2倍
摘要
Liquid AI 发布了LFM2.5系列的DSpark草稿模型检查点,使推理速度在GPU和设备上最高提升3.2倍,质量损失极小,并在首日就支持llama.cpp和SGLang等开源工具。
查看缓存全文
缓存时间: 2026/08/20 21:51
LFM2.5-DSpark 推理速度最高提升 3.2 倍
来源:https://huggingface.co/blog/LiquidAI/lfm25-dspark 返回文章列表
今天,我们为 LFM2.5 系列的三款模型——LFM2.5-1.2B-Instruct、LFM2.5-2.6B 和 LFM2.5-8B-A1B——发布了 DSpark 草稿模型检查点。这些检查点增加了推测解码路径,以极小的内存增加换取大幅解码速度提升,同时不改变输出质量:
- 推理速度更快:在 GPU 上吞吐量提升高达 3.18 倍,在设备端提升高达 2.87 倍。
- 迈向设备端智能体推理:LFM2.5-2.6B 的函数调用延迟平均降低 57%。
- 首日支持 llama.cpp 和 SGLang:兼容 LFM 的 DSpark 集成已开源至上游。
DSpark 工作原理
传统 LLM 推理的解码阶段通常是内存瓶颈。大部分延迟来自将权重从 DRAM 流式加载到 SRAM,而非密集计算。推测解码通过使用轻量级的草稿模型来生成候选令牌,然后让目标模型在一次前向传播中验证所有这些令牌,从而分摊了加载权重的成本。
多年来,已提出多种推测方法,其中最著名的有 EAGLE-3、DFlash,以及最近的 DSpark。DSpark 结合了三个组件:
- DFlash 风格的并行骨干网络,以目标模型的上下文特征为条件,在一次前向传播中为所有草稿令牌生成隐藏状态。
- 一个轻量级序列头,被建模为相邻令牌之间的马尔可夫链,增加了令牌间的依赖性,从而提高了靠后位置的接受率。
- 一个置信度调度的验证器,预测每个令牌的存活概率,并在验证成本高于其节省时裁剪低置信度的后缀。
训练与架构
我们遵循 DSpark 的方案,使用了更大更多样化的数据混合集,涵盖 SFT、对话、代码和函数调用数据。基于我们的消融实验,草稿模型的第一版是简化的仅注意力草稿模型,包含 5 层和一个 9 块大小的结构。对于每个草稿模型,我们在整个数据集上运行了 15 个 epoch,并选择了接受率最高的 epoch,而非损失最低的。
最终得到的草稿模型相对较小,每个约 3 亿参数。
| 组件 | LFM2.5-1.2B-Instruct | LFM2.5-8B-A1B | LFM2.5-2.6B |
|---|---|---|---|
| 解码器堆栈 (5层) | 241.2M | 241.2M | 241.2M |
| 隐藏状态投影 | 21.0M | 21.0M | 21.0M |
| 马尔可夫头 | 33.6M | 65.5M | 65.5M |
| 归一化 + 置信度头 | 27.5k | 27.5k | 27.5k |
| 总计 | 295.7M | 327.7M | 327.7M |
质量对等性
在贪心解码下,只有当草稿令牌与目标模型的分布匹配时才会被接受。在被拒绝时,目标模型自身的令牌将取而代之。因此,输出的序列与基线贪心解码完全相同,因此基准测试准确率(pass@1 或精确匹配)没有变化。
在 CPU 和 GPU 上的推理加速
我们为 LFM2.5 提供的 DSpark 草稿模型首日支持 llama.cpp(其实现构建在官方代码库之上,我们使用实验性 Metal 内核运行)和 SGLang(其实现构建在 SGLang 的官方 DSpark 实现之上)。
我们使用 llama.cpp 和 Metal,在配备 M4 Max 芯片的 MacBook Pro 上,使用 FP16 GGUF 权重和最多 256 个输出令牌,测量设备端吞吐量。我们使用 SGLang,在单张 H100 80GB 显卡上使用 BF16 测量 GPU 吞吐量。两种配置均使用 DSpark 块大小为 9、批大小为 1 和温度为 0。我们在五个基准数据集上进行了评估。
所有三款草稿模型在大规模加速器(H100)和边缘部署(M4 Max MacBook)上均带来了显著的吞吐量提升。
对于 LFM2.5-2.6B,在 MacBook 上的加速尤为明显,因为它将用户可享受的交互水平远超大多数专有云模型提供的吞吐量(约 140 tok/s,取决于数据集)。
| 数据集 | 接受率 (10个中) | H100 加速 | M4 Max 加速 |
|---|---|---|---|
| MATH500 | 5.42 | 3.06x 326 → 1000 tok/s | 2.25x 61 → 137 tok/s |
| HumanEval | 4.54 | 2.56x 326 → 835 tok/s | 2.63x 61 → 161 tok/s |
| MBPP | 4.71 | 2.64x 326 → 861 tok/s | 2.11x 62 → 132 tok/s |
| GSM8K | 4.32 | 2.22x 312 → 693 tok/s | 2.36x 60 → 143 tok/s |
| MT-Bench | 5.07 | 2.87x 325 → 933 tok/s | 1.99x 62 → 123 tok/s |
| 平均值 | 4.81 | 2.67x 323 → 864 tok/s | 2.27x 61 → 139 tok/s |
在各种多工具场景下,DSpark 为 LFM2.5-2.6B 平均降低了 57% 的延迟。
对于 LFM2.5-1.2B-Instruct,我们看到数据集接受率差异较大,因此加速比根据底层文本分布的不同而有高达 52% 的变化。
| 数据集 | 接受率 (10个中) | H100 加速 | M4 Max 加速 |
|---|---|---|---|
| MATH500 | 6.02 | 2.56x 668 → 1712 tok/s | 2.62x 140 → 366 tok/s |
| HumanEval | 5.31 | 2.26x 664 → 1499 tok/s | 2.87x 136 → 389 tok/s |
| MBPP | 5.52 | 2.37x 667 → 1578 tok/s | 2.74x 137 → 375 tok/s |
| GSM8K | 4.34 | 1.67x 624 → 1041 tok/s | 2.73x 140 → 381 tok/s |
| MT-Bench | 3.90 | 1.66x 657 → 1091 tok/s | 1.72x 137 → 237 tok/s |
| 平均值 | 5.02 | 2.10x 656 → 1384 tok/s | 2.54x 138 → 350 tok/s |
对于 LFM2.5-8B-A1B,与两个稠密模型相比,其接受率有所提高,但在设备端平均仅获得 18% 的提升。这种差距是由于 llama.cpp 的 Metal 后端中当前的 MoE 实现所致,并且因为验证 k 个令牌会激活更多专家,从而比单个解码步骤产生更多的权重流量。
| 数据集 | 接受率 (10个中) | H100 加速 | M4 Max 加速 |
|---|---|---|---|
| MATH500 | 8.27 | 3.18x 428 → 1362 tok/s | 1.21x 93 → 112 tok/s |
| HumanEval | 7.02 | 2.58x 426 → 1100 tok/s | 1.12x 91 → 101 tok/s |
| MBPP | 6.93 | 2.64x 426 → 1122 tok/s | 1.09x 89 → 97 tok/s |
| GSM8K | 4.02 | 1.29x 385 → 496 tok/s | 1.44x 90 → 129 tok/s |
| MT-Bench | 8.52 | 3.02x 426 → 1288 tok/s | 1.04x 87 → 90 tok/s |
| 平均值 | 6.95 | 2.54x 418 → 1074 tok/s | 1.18x 90 → 106 tok/s |
如何使用 LFM2.5-DSpark
使用 SGLang 运行 DSpark 草稿模型需要构建包含对 LFM2 目标支持的 DSpark 的 SGLang 版本(PR #31041)。启动目标模型并附带草稿:
python -m sglang.launch_server \
--model-path LiquidAI/LFM2.5-2.6B \
--speculative-algorithm DSPARK \
--speculative-draft-model-path LiquidAI/LFM2.5-2.6B-DSpark \
--speculative-draft-attention-backend flashinfer \
--disable-radix-cache --mem-fraction-static 0.75 --port 30000
然后查询 http://localhost:30000/v1 处的 OpenAI 兼容端点。块大小从草稿的 config.json 中读取;基线是没有三个 --speculative-* 标志的相同命令。
使用 llama.cpp 运行它们需要相应的 llama.cpp 构建版本(PR#27383)。
llama-server -m LFM2.5-2.6B-F16.gguf \
-md LFM2.5-2.6B-DSpark-F16.gguf \
--spec-type draft-dspark --spec-draft-n-max 10 --spec-draft-n-min 0 \
-fa on -ngl 99
块大小从侧载元数据中读取(n-max 被钳制到该值)。推测解码是精确的:目标验证每个提议的令牌,因此贪心输出与单独使用目标模型时相同;每次响应的 timings 会报告 draft_n/draft_n_accepted。
快速开始
DSpark 草稿模型检查点已在 Hugging Face 上提供,格式为 Safetensors 和 GGUF:
- Safetensors:LFM2.5-2.6B-DSpark、LFM2.5-1.2B-Instruct-DSpark 和 LFM2.5-8B-A1B-DSpark
- GGUF:LFM2.5-2.6B-DSpark-GGUF、LFM2.5-1.2B-Instruct-DSpark-GGUF、LFM2.5-8B-A1B-DSpark-GGUF
我们迫不及待想看到你们构建的产品。
引用
如需引用,请使用以下参考文献或 BibTeX:
Liquid AI, “LFM2.5-DSpark: Up to 3.2x Faster Inference from H100 to MacBook”, Liquid AI Blog, Aug 2026.
@article{liquidAI2026dspark,
author = {Liquid AI},
title = {LFM2.5-DSpark: Up to 3.2x Faster Inference from H100 to MacBook},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm2.5-dspark},
}
相似文章
使用 LFM2.5-VL-DSpark 加速视觉语言模型
今天,我们为视觉语言模型 (VLM) LFM2.5-VL-3B 发布了一个实验性的 DSpark 草稿模型,它增加了一个推测解码路径,以实现更快的推理速度,同时内存成本最小。
@Prince_Canuma:LFM2.5 DSpark by @liquidai 即将加入 mlx-vlm v0.6.16,支持在 M5 Max 上进行精确推测解码,速度提升高达 3.7× …
LFM2.5 DSpark by liquidai 已集成到 mlx-vlm v0.6.16 中,使 M5 Max 上的推测解码速度提升高达 3.7×,且输出零漂移,用于设备端视觉语言模型推理。
@ramin_m_h: 昨天我们让它们更压缩了!今天我们用推测解码让它们比以往更快!高达4倍解码速度 …
Liquid AI 发布了针对其 LFM 系列的 DSpark 草稿模型,结合推测解码,在设备上实现高达4倍的解码加速,同时保持输出质量。
DeepSeek开源DSpark,一个可将LLM推理速度提升高达85%的新框架(阅读时间18分钟)
DeepSeek开源了DSpark,这是一个采用MIT许可证的框架,利用推测解码技术将LLM推理速度提升高达85%,支持包括自家DeepSeek-V4、阿里巴巴Qwen和谷歌Gemma在内的多个模型系列。
@mgoin_: GLM 5.2 DSpark 预览来了!https://huggingface.co/RedHatAI/GLM-5.2-speculator.dspark-preview… 这是第一个 DS…
RedHatAI 发布了 GLM-5.2-FP8 的预览版 DSpark speculator,这是首个为非 DeepSeek 前沿模型设计的 DSpark draft 模型,在 4×B300 上使用 vLLM nightly 实现了约 1.5 倍更快的解码速度。该检查点仍在完善中,提供了训练细节和接受率指标。