如果主模型、assistant 草稿模型和推理框架都配对正确,MTP 可以让 Gemma 4 在本地显卡上明显提速。一些 12GB 显存的显卡,例如 RTX 4070,在合适量化和参数下,有机会看到接近 120 tokens/s 的生成速度。
但这不是一个“复制命令就必然得到”的数字。它更适合作为调参目标:跑得起来、显存够、草稿命中率高、采样参数稳定,速度才会漂亮。
MTP 在这里做什么
MTP 是 Multi-Token Prediction,也就是多 Token 预测。
普通自回归模型一次生成一个 token。assistant-MTP 则先替主模型草拟未来几个 token,再由主模型并行验证。如果草稿猜对,主模型就能一次接受多个 token,减少逐 token 等待。
这套机制常叫:
Speculative Decoding- 投机解码
- 草稿模型加速
- draft model / drafter
它的目标是加速,不是提升模型能力。最后是否接受某个 token,仍然由主模型决定。
命令行示例
下面是一个偏进阶的 llama-cli 参考命令:
|
|
这条命令的意思是:
- 用
gemma-4-12b-it-qat-GGUF.gguf作为主模型。 - 用
gemma-4-12b-it-qat-assistant-MTP-Q8_0-GGUF.gguf作为草稿模型。 - 每轮最多让草稿模型预测 2 个 token。
- 尽量把模型层卸载到 GPU。
- 直接传入一个 prompt 测试生成速度。
注意:不同 llama.cpp 版本的参数名可能不同。有的版本用 -md,有的版本更推荐 --model-draft;有的版本用 --draft-max,有的版本用 --spec-draft-n-max。实测前先看:
|
|
或者:
|
|
参数解释
-m
|
|
这是主模型。最终输出由它验证和决定。
assistant-MTP 必须和主模型匹配。不要随便拿一个 assistant 模型去配另一个尺寸或版本的主模型,否则轻则没有速度收益,重则直接加载失败或输出异常。
-md
|
|
-md 用来挂载 draft model,也就是 assistant-MTP 草稿模型。
可以把它理解成“预测候选答案的小助手”。它先猜接下来几个 token,主模型再决定是否接受。
如果你的 llama.cpp 版本不认识 -md,试试:
|
|
--draft-max
|
|
它控制草稿模型一次最多预测多少 token。
建议从 2 开始,而不是一上来拉很大。草稿 token 越多,不代表越快;如果猜错率上升,主模型会频繁拒绝,反而浪费计算。
可以这样试:
|
|
|
|
|
|
观察 tokens/s 和输出质量,再决定保留哪个值。
-ngl 99
|
|
这个参数表示尽量把模型层卸载到 GPU。对 12GB 显存来说,如果模型量化足够小,可能可以把大部分甚至全部层放进显卡。
但 8GB 显存通常不要照抄。因为 MTP 会多加载一个 assistant 模型,显存压力比只跑主模型更高。
如果 OOM,可以按这个顺序降:
|
|
|
|
|
|
真正稳定的值要看模型量化、上下文长度、显卡剩余显存和系统桌面占用。
-p
|
|
-p 是直接传入 prompt。
这里的 <|think|> 是否需要,取决于当前 GGUF 模型的聊天模板和模型说明。它不是所有 Gemma 4 模型的通用开关。为了做速度测试,可以先用更简单的 prompt:
|
|
先确认 MTP 本身能跑,再讨论模板和特殊 token。
更稳的测试命令
第一次测试建议把参数写保守一点:
|
|
如果能稳定跑,再逐步提高 -ngl:
|
|
再试:
|
|
不要第一次就把 -ngl 拉满。MTP 多了一个 draft 模型,显存余量比普通运行更重要。
为什么 120 tokens/s 不一定复现
120 tokens/s 很诱人,但它依赖很多条件。
| 影响因素 | 说明 |
|---|---|
| 显卡 | RTX 4070 这类 12GB 显卡比 8GB 显卡更容易跑高 -ngl |
| 量化 | QAT / Q4 / Q8 draft 模型组合会影响显存和速度 |
| draft 命中率 | 草稿猜得越准,主模型一次接受的 token 越多 |
| prompt 类型 | 结构化文本、代码、固定格式通常更容易加速 |
| temperature | 越随机,草稿越难猜中 |
| 上下文长度 | 上下文越长,KV cache 压力越大 |
| llama.cpp 版本 | MTP 支持仍在演进,参数和性能可能变化 |
因此,文章里更建议把它当成“可以冲的速度目标”,而不是承诺值。
适合用来测速的 prompt
MTP 最容易在结构化、低随机性的输出里体现价值。测速时别只让模型自由写散文,可以多试这些:
|
|
|
|
|
|
如果这些任务的 tokens/s 明显提升,并且输出结构没有变差,说明 assistant-MTP 在你的机器上是有价值的。
常见问题
加了 -md 反而 OOM
正常。assistant-MTP 也要占显存或内存。
先降:
|
|
再降上下文:
|
|
如果还不稳,就换更小量化,或者先不用 MTP。
参数不识别
说明 llama.cpp 版本和文章里的命令不一致。先看帮助:
|
|
重点搜索:
|
|
|
|
如果当前版本没有 MTP / draft 支持,需要更新 llama.cpp。
输出变奇怪
先去掉 <|think|>,用普通 prompt 测试。再把 temperature 降低:
|
|
然后把 draft 数量降到:
|
|
如果这样恢复正常,说明之前的模板、采样或 draft 参数太激进。
小结
Gemma 4 assistant-MTP 的高速度玩法,本质是主模型加草稿模型的投机解码。-md 挂载草稿模型,--draft-max 控制一次草拟多少 token,-ngl 决定 GPU 卸载程度。
12GB 显存机器可以尝试冲更高速度,120 tokens/s 可以作为调参目标;8GB 显存机器则要更保守,因为 draft 模型会额外占资源。
最稳的做法是先跑通,再加速:先低 -ngl、短上下文、低 draft 数量,确认稳定后再逐步提高。