llama.cpp MTP推测解码简化:2026年7月在密集模型上大获成功,MoE上表现平平
摘要
对llama.cpp中原生MTP推测解码的分析表明,像Qwen3.6-27B这样的密集模型获得了显著的加速(1.4倍至2.2倍),但在MoE架构上结果不尽人意,由于每步开销已经很低,收益微乎其微。
想要总结一下当前的实际状况,因为几个月前的讨论相当分散。简而言之:原生MTP(多令牌预测)支持通过 `--spec-type draft-mtp` 参数落地,让模型可以直接使用自带的MTP头,而无需单独的草稿模型。Qwen3.6、DeepSeek和GLM都配备了可以利用此功能的MTP头。早先的推测性检查点合并(四月时的PR #19493)为此奠定了基础,使得该方法在混合/循环架构上变得可靠,因为旧的回滚方法对这些架构根本无效。实际结果因架构而异:密集模型:确实有实质性提升,人们报告在Qwen3.6-27B密集模型上获得了约1.4倍到2.2倍的加速。MoE模型:提升幅度小得多,有时甚至没有。仔细想想这个道理就通了:MoE每步解码的活跃参数成本已经很低,因此MTP可以节省的额外开销所剩无几。同样的模式也出现在Gemma 4上:密集版的31B模型获得了显著的MTP加速,而MoE变体几乎没变化。值得一提的是,旧式推测解码(单独的轻量草稿模型、n-gram匹配)的独立验证结果参差不齐。至少有一项针对Qwen3.6-35B-A3B在单张RTX 3090上的详细基准测试发现,ngram-cache、ngram-mod或经典草稿模型方法均未带来净加速,某些配置甚至出现了负收益。因此,如果你想加速推理,现在更可靠的手段似乎是原生MTP头,而不是那些较旧的草稿模型技巧。
相似文章
我测试了 llama.cpp 在 Qwen 3.6 27B 上的所有推测性解码方法:MTP ~2.7x, DFlash ~3.7x, n-gram 堆叠在真实编码中达到 ~6x。本地 AI 获胜。我在 RTX 6000 PRO 上的发现。
llama.cpp 在 Qwen 3.6 27B 上的推测性解码方法的全面基准测试表明,在 DFlash 上叠加 n-gram 堆叠在迭代编码任务中实现了高达 6 倍的加速,其中 ngram-mod 贡献了大部分增益且零 VRAM 成本。
llama + spec: 由 am17an 提交的 MTP 支持 · Pull Request #22673 · ggml-org/llama.cpp
拉取请求为 llama.cpp 添加多令牌预测(MTP)支持,启用推测解码以加速推理。
我在 vLLM 和 llama.cpp 上对 Gemma 4 和 Qwen 3.6 测试了 MTP —— 推理速度提升 3.34 倍,这是我的发现(RTX 6000 PRO)。
使用 vLLM 和 llama.cpp 对 Gemma 4 31B 和 Qwen 3.6 27B 进行的多令牌预测(MTP)基准测试显示,推理速度最高提升 3.34 倍,最优推测令牌数量因模型和引擎而异。
@julien_c: 我注意到网上有些困惑,关于如何以最简单的方式运行带MTP(多令牌预测)的llama.cpp……
Julien C 解释了如何运行带有MTP(多令牌预测)的llama.cpp,以实现约2倍的生成速度,可以使用Dense 27B或MoE 35B模型,并提供了安装和配置说明。
Strix Halo上的llama.cpp多令牌预测(MTP)基准测试:27B模型大幅提速,35B模型表现不一
在Strix Halo上对llama.cpp中的多令牌预测(MTP)进行的基准测试显示,长上下文聊天场景下27B Qwen模型显著加速,而35B模型则表现不一。