MTP 下的质量较差 - Qwen 3.6, Gemma 4
摘要
用户报告称,Qwen 3.6 和 Gemma 4 的 MTP 版本在代码审查任务中的输出质量低于非 MTP 版本,尽管其 token 生成速率更高,但实际速度提升微乎其微。
你好。我正在使用 Llama.cpp 在 4 块 5070ti 上自托管 Qwen 3.6 27B Q8_K_XL(4 张卡通过单个 x16 插槽分叉为 4x4 再通过转接线连接)。我已在几个工作仓库中用 Opencode CLI 对其进行了测试,在大约 8/10 的情况下,非 MTP 模型的输出远优于 MTP 模型。提示词很简单:`对这个分支进行代码审查。` 非 MTP 模型能发现更多问题,描述更详细,还附带了修复建议代码片段,各方面都更好。通常消耗的 token 也更少(例如非 MTP 约 40k token,而 MTP 约 60k token)。实际速度也并不理想:
- 非 MTP 模型大约是 2000 tokens/s 的预填充速度和 50-60 tokens/s 的生成速度。
- MTP 模型大约是 1300 tokens/s 的预填充速度和 100-120 tokens/s 的生成速度。
因此,尽管 MTP 的生成速度翻倍,但在实际 agent 任务中,MTP 与非 MTP 的耗时差异在 20% 以内。我不明白哪里做错了——大家都说 MTP 是免费的性能提升且质量不变,但对我而言,MTP 降低了输出质量,需要更多显存(这点我预料到了),消耗更多上下文……
我的设置:
**Qwen MTP**(文件来自 https://huggingface.co/unsloth/Qwen3.6-27B-MTP-GGUF)
```bash
exec /opt/llama.cpp/build-cuda/bin/llama-server \
--host 0.0.0.0 \
--port 8081 \
--alias Qwen3.6-27B \
--model /opt/models/qwen36/27b/unsloth/Qwen3.6-27B-UD-Q8_K_XL.gguf \
--ctx-size 262144 \
--device CUDA0,CUDA1,CUDA2,CUDA3 \
--fit off \
--split-mode tensor \
--tensor-split 1,1,1,1 \
--gpu-layers all \
--flash-attn on \
--kv-offload \
--cache-type-k f16 \
--cache-type-v f16 \
--batch-size 4096 \
--ubatch-size 1024 \
--parallel 1 \
--jinja \
--top-p 0.95 \
--top-k 20 \
--temp 0.6 \
--min-p 0.00 \
--spec-type draft-mtp \
--spec-draft-n-max 2 \
--no-cache-idle-slots \
--cache-ram 32768 \
--presence-penalty 0.0 \
--repeat-penalty 1.0 \
--mmproj /opt/models/qwen36/27b/unsloth/mmproj-BF16.gguf \
--image-min-tokens 1024 \
--cache-prompt \
--ctx-checkpoints 128 \
--checkpoint-min-step 512 \
--cache-reuse 512 \
--cache-idle-slots \
--no-context-shift \
--no-kv-unified \
--slot-prompt-similarity 0.10 \
--reasoning on \
--chat-template-kwargs '{"preserve_thinking":true}' \
--no-mmproj-offload
```
**Qwen 非 MTP**(文件来自 https://huggingface.co/unsloth/Qwen3.6-27B-GGUF)唯一的不同是:
```bash
--model /opt/models/qwen36/27b/unsloth/Qwen3.6-27B-UD-NoMTP-Q8_K_XL.gguf
# 缺少 --spec-type 和 --spec-draft-n-max 标志
```
我还尝试了 https://huggingface.co/unsloth/gemma-4-31B-it-qat-GGUF ,对比 MTP 和非 MTP 时也有类似体验。有人遇到过同样的情况吗?
附注:等我回家后,可能会在某个 OSS 仓库上添加一些示例,可能还会带上 llama.cpp 的日志。
相似文章
MTP 关键在于接受率
一位用户在 M4 Max Studio 上使用 mlx-vlm 对 Gemma 4 进行了 MTP(多令牌预测)基准测试,发现它在代码生成方面表现出色(速度快 1.53 倍,接受率 66%),但对 JSON 输出不利(速度慢 50%,接受率仅 8%),对长篇散文则影响中性,表明当令牌接受率低于 50% 时,MTP 的优势便荡然无存。
你对Gemma4 QAT的体验如何?
用户分享了使用Gemma4 QAT模型的积极体验,提到质量提升和MTP带来的速度增益,并询问其他人的体验。
在6GB显存笔记本上使用Qwen3.6-35B-A3B的MTP:不值得
在6GB显存笔记本上对llama.cpp中Qwen3.6-35B-A3B模型的多Token预测(MTP)支持进行的基准测试显示,MTP不值得使用,因为提示处理速度显著变慢,抵消了微小的生成速度提升。作者发现,对草稿KV缓存使用q4_0量化可以节省显存而不影响质量。
我在 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 倍,最优推测令牌数量因模型和引擎而异。
@Snixtp: https://x.com/Snixtp/status/2055734339346768225
某用户使用llama.cpp在单张RTX 3090上对Qwen3.6 27B的MTP变体与普通版本进行了基准测试,发现MTP在长上下文(32k-64k)下生成速度最高可提升2.37倍,但预填充较慢且暂不支持并发。