在 Gemma 4 相关模型里看到 assistant-MTP、assistant、MTP drafter 这类名字时,不要把它当成一个独立聊天模型。
它更准确的定位是:Gemma 4 主模型配套的多 Token 预测草稿模型,用来做 Speculative Decoding,也就是投机解码。
一句话概括:主模型负责最终判断,assistant-MTP 负责提前打草稿。如果草稿猜对了,主模型一次确认多个 token,生成速度就能提高。
它到底是什么
MTP 是 Multi-Token Prediction,意思是多 Token 预测。
Gemma 4 的 assistant-MTP 可以理解成一个轻量级辅助模型,也常被叫作 drafter、draft model 或草稿模型。它通常和对应的 Gemma 4 主模型配对使用,例如:
Gemma 4 12B搭配对应的12B assistant-MTPGemma 4 26B搭配对应的26B assistant-MTPGemma 4 31B搭配对应的31B assistant-MTP
它的作用不是直接回答用户问题,而是替主模型预测接下来几个可能出现的 token。
最终输出仍然由主模型验证后决定。所以 assistant-MTP 更像一个“预读器”或“草稿头”,不是新的聊天模型。
为什么普通生成会慢
传统自回归语言模型生成文本时,一般是这样:
- 根据已有上下文预测下一个 token。
- 把这个 token 加回上下文。
- 再预测下一个 token。
- 重复直到生成完成。
这个过程很稳,但天然是串行的。哪怕后面几个 token 很容易猜,比如固定格式、代码模板、常见短语,模型也要一个一个算。
在本地推理或消费级显卡上,这种逐 token 生成会放大显存带宽瓶颈:每生成一个 token,都要重复搬运大量模型权重,计算单元不一定被充分利用。
MTP 的思路就是利用这个空档:让更轻的草稿模型先猜多个 token,再交给主模型并行验证。
投机解码怎么工作
可以把流程拆成四步:
-
assistant-MTP 先预测未来几个 token。
例如一次猜 4 个候选 token。
-
主模型读取这些候选 token。
主模型不盲信草稿,而是并行检查这些 token 是否符合自己的分布。
-
猜对的 token 被接受。
如果前 3 个都通过验证,就相当于主模型一次生成了 3 个 token。
-
猜错的位置回退。
如果第 4 个不被接受,就从那里重新按主模型逻辑继续生成。
所以它不是“牺牲质量换速度”。主模型仍然负责最终验证,只是把可能正确的后续 token 提前拿来检查。
为什么输出可以保持一致
投机解码最容易误解的一点是:是不是用了小模型,结果就变差?
在标准 speculative decoding 里,答案通常是否定的。因为草稿模型只负责提出候选,主模型负责验收。被接受的 token 必须符合主模型的采样逻辑;不符合的 token 会被拒绝。
这意味着理论上最终输出分布可以保持与不使用草稿模型时一致。Google 对 Gemma 4 MTP drafter 的定位也是:在不降低输出质量和推理逻辑的前提下提升速度。
实际工程里,最终效果还取决于推理框架实现、采样参数、MTP 支持是否完整、主模型和 assistant 模型是否正确配对。
它为什么能加速
加速来自两个因素:
- 草稿模型更轻,预测候选 token 的成本低。
- 主模型可以一次验证多个候选 token,减少逐 token 等待。
如果 assistant-MTP 猜得准,一次主模型前向就能接受多个 token,吞吐会明显提高。Google 发布时提到,Gemma 4 搭配 MTP drafter 在部分硬件和框架中最高可获得约 3 倍速度提升。
但这个数字不是任何场景都能稳定复现。加速效果取决于:
- 主模型大小。
- assistant 模型和主模型的匹配程度。
- 每次预测多少 speculative tokens。
- prompt 类型。
- 采样温度。
- 推理框架实现。
- GPU / CPU / 内存带宽。
通常来说,格式化文本、代码、固定结构、常见短语更容易被草稿模型猜中;高度开放、随机性强、temperature 很高的生成,加速效果可能变弱。
如何使用
assistant-MTP 需要推理框架支持。不是下载了 assistant 模型就能直接聊天。
常见使用方式有两类。
方式一:主模型内置 MTP 支持
部分框架会直接读取 Gemma 4 的 MTP 相关结构,通过参数开启。例如 vLLM 社区里常见的方向是用 speculative config:
|
|
这种方式不一定需要单独指定 assistant 模型,具体取决于模型格式和框架实现。
方式二:单独加载 assistant / drafter 模型
在 GGUF / llama.cpp 这类本地推理场景里,更常见的是主模型和 draft 模型分开加载。思路类似:
|
|
这里的重点是:
-m指主模型。--model-draft指 assistant-MTP 草稿模型。--spec-type draft-mtp开启 MTP 草稿模式。--spec-draft-n-max 4表示最多草拟 4 个 token。
不同 llama.cpp 版本参数可能会变化,实际使用前要以当前版本 --help 和模型卡说明为准。
参数怎么调
--spec-draft-n-max
这个参数控制一次最多让 assistant-MTP 草拟多少 token。
可以从小值开始:
|
|
再尝试:
|
|
值越大,不一定越快。如果草稿命中率下降,主模型会频繁拒绝候选,反而浪费计算。
temperature
temperature 越高,输出越随机,assistant-MTP 越难猜中主模型后续 token。
如果目标是加速和稳定,可以先用:
|
|
或者更低:
|
|
代码补全、格式修复、结构化输出任务,低 temperature 通常更适合。
上下文长度
MTP 不是显存魔法。主模型和草稿模型都需要占资源,长上下文仍然会吃 KV cache。
8GB 或 12GB 显存机器不要一上来就开 64K / 128K。可以先用:
|
|
确认稳定后再往上调。
适合哪些任务
assistant-MTP 更适合这些场景:
- 代码补全。
- JSON / Markdown / XML 这类结构化输出。
- 固定格式报告。
- 数学步骤或表格类输出。
- 低温度、确定性较强的问答。
- 本地模型聊天时降低延迟。
这些任务的共同点是:后续 token 有较强规律,草稿模型更容易猜中。
不适合哪些任务
它不适合被当作“提高模型智商”的工具。
assistant-MTP 不会让主模型更聪明,也不会改善事实准确性。它解决的是生成速度问题,不是推理质量问题。
这些场景收益可能不明显:
- temperature 很高的创意写作。
- 强随机采样。
- 草稿模型和主模型不匹配。
- 推理框架 MTP 支持不完整。
- 显存已经非常紧张,还要额外加载 draft 模型。
尤其是小显存机器,要注意 assistant-MTP 也会占显存或内存。速度收益可能被额外资源占用抵消。
常见误区
误区一:assistant-MTP 是聊天模型
不是。它是给主模型做 speculative decoding 的辅助模型。直接拿它聊天,没有实际意义,也可能效果很差。
误区二:用了 MTP 输出一定不变
理论目标是保持主模型输出分布一致,因为最终由主模型验证。但工程实现、采样参数、框架版本都会影响实际行为。生产使用前仍要对比测试。
误区三:--spec-draft-n-max 越大越好
不一定。草拟越多,猜错概率也可能越高。要看接受率和 tokens/s,不能只看参数值。
误区四:它能解决显存不足
不能。MTP 是推理加速,不是显存压缩。小显存机器更应该先解决量化、上下文长度、GPU 卸载层数,再考虑 MTP。
怎么判断是否真的加速
不要只凭体感。建议对同一组 prompt 做 A/B 测试:
- 不开启 MTP,记录 tokens/s。
- 开启 MTP,记录 tokens/s。
- 保持相同模型、上下文、temperature、prompt。
- 比较输出质量和延迟。
可以用三类 prompt 测:
|
|
|
|
|
|
如果这些结构化任务明显变快,而且输出质量没有下降,说明 assistant-MTP 在你的环境里值得保留。
小结
Gemma 4 的 assistant-MTP 是配合主模型使用的多 Token 预测草稿模型。它通过 speculative decoding 提前预测多个 token,再由主模型并行验证,从而减少逐 token 生成带来的延迟。
它的价值是加速,不是提升模型能力。正确使用方式是:主模型负责最终输出,assistant-MTP 负责提前草拟;推理框架负责验证和接受候选 token。
如果你已经能稳定跑 Gemma 4,再考虑 MTP。先从较小的 speculative token 数开始,观察 tokens/s、显存占用和输出质量,再决定是否把它加入日常运行脚本。
参考资料: