为什么 MTP 比标准解码更慢?

Reddit r/LocalLLaMA 工具

摘要

一位用户询问,为什么对于 Ornith 1.5 9B,llama.cpp 中的多 Token 预测(MTP)推测解码虽然草稿接受率高达 0.95,吞吐量却低于标准解码(约 15 tok/s,而标准解码约为 30 tok/s),并指出内存带宽和 GPU 利用率均减半。

我正在尝试使用最新版 llama.cpp 运行 Ornith 1.5 9B(我也勉强能运行 35B A3B,但我想要一个运行起来相对轻松的模型),使用的命令是:llama serve --flash-attn on --cache_type-k q8_0 --cache-type-v q8_0 --hf-repo ornith-ai/Ornith-1.5-9B-GGUF --spec-draft-p-min 0.9 --spec-type draft-mtp。这样得到的文本生成(TG)速度约为 15 tok/s,提示词处理(PP)速度约为 200 tok/s。然而,不使用 MTP 时,这两项速度都能达到两倍。我的草稿接受率很高,达到 0.95,平均长度为 2.27。顺便说一下,我用的是一张 8 GB 显存的 RTX 4060,不过我觉得这与问题无关。我注意到,使用 MTP 时,显存带宽利用率和 GPU 利用率都只有不使用 MTP 时的一半左右。
查看原文

相似文章

MTP+GGML_CUDA_ENABLE_UNIFIED_MEMORY=1 - llama.cpp

Reddit r/LocalLLaMA

一位用户在 llama.cpp 上使用 GGML_CUDA_ENABLE_UNIFIED_MEMORY=1 标志对令牌生成速度进行基准测试,比较启用和未启用 MTP(多令牌预测)时的性能。结果显示,在 RTX5090 上使用 Qwen3.6-27B 模型时,启用 MTP 后速度从 49 tok/s 显著提升至 64 tok/s。