Gemma 4 assistant-MTP 是什么:多 Token 预测草稿模型怎么加速推理

解释 Gemma 4 assistant-MTP 的作用:它不是独立聊天模型,而是配合主模型做 Multi-Token Prediction 和 speculative decoding 的草稿模型,用来在不改变最终输出的前提下提升生成速度。

在 Gemma 4 相关模型里看到 assistant-MTPassistantMTP drafter 这类名字时,不要把它当成一个独立聊天模型。

它更准确的定位是:Gemma 4 主模型配套的多 Token 预测草稿模型,用来做 Speculative Decoding,也就是投机解码。

一句话概括:主模型负责最终判断,assistant-MTP 负责提前打草稿。如果草稿猜对了,主模型一次确认多个 token,生成速度就能提高。

它到底是什么

MTPMulti-Token Prediction,意思是多 Token 预测。

Gemma 4 的 assistant-MTP 可以理解成一个轻量级辅助模型,也常被叫作 drafterdraft model 或草稿模型。它通常和对应的 Gemma 4 主模型配对使用,例如:

  • Gemma 4 12B 搭配对应的 12B assistant-MTP
  • Gemma 4 26B 搭配对应的 26B assistant-MTP
  • Gemma 4 31B 搭配对应的 31B assistant-MTP

它的作用不是直接回答用户问题,而是替主模型预测接下来几个可能出现的 token。

最终输出仍然由主模型验证后决定。所以 assistant-MTP 更像一个“预读器”或“草稿头”,不是新的聊天模型。

为什么普通生成会慢

传统自回归语言模型生成文本时,一般是这样:

  1. 根据已有上下文预测下一个 token。
  2. 把这个 token 加回上下文。
  3. 再预测下一个 token。
  4. 重复直到生成完成。

这个过程很稳,但天然是串行的。哪怕后面几个 token 很容易猜,比如固定格式、代码模板、常见短语,模型也要一个一个算。

在本地推理或消费级显卡上,这种逐 token 生成会放大显存带宽瓶颈:每生成一个 token,都要重复搬运大量模型权重,计算单元不一定被充分利用。

MTP 的思路就是利用这个空档:让更轻的草稿模型先猜多个 token,再交给主模型并行验证。

投机解码怎么工作

可以把流程拆成四步:

  1. assistant-MTP 先预测未来几个 token。

    例如一次猜 4 个候选 token。

  2. 主模型读取这些候选 token。

    主模型不盲信草稿,而是并行检查这些 token 是否符合自己的分布。

  3. 猜对的 token 被接受。

    如果前 3 个都通过验证,就相当于主模型一次生成了 3 个 token。

  4. 猜错的位置回退。

    如果第 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:

1
2
vllm serve google/gemma-4-31B-it \
  --speculative-config '{"method":"mtp","num_speculative_tokens":1}'

这种方式不一定需要单独指定 assistant 模型,具体取决于模型格式和框架实现。

方式二:单独加载 assistant / drafter 模型

在 GGUF / llama.cpp 这类本地推理场景里,更常见的是主模型和 draft 模型分开加载。思路类似:

1
2
3
4
5
6
llama-server \
  -m gemma-4-12B-it-Q4_K_M.gguf \
  --model-draft gemma-4-12B-it-assistant-MTP-Q8_0.gguf \
  --spec-type draft-mtp \
  --spec-draft-n-max 4 \
  --ctx-size 8192

这里的重点是:

  • -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。

可以从小值开始:

1
--spec-draft-n-max 2

再尝试:

1
--spec-draft-n-max 4

值越大,不一定越快。如果草稿命中率下降,主模型会频繁拒绝候选,反而浪费计算。

temperature

temperature 越高,输出越随机,assistant-MTP 越难猜中主模型后续 token。

如果目标是加速和稳定,可以先用:

1
--temp 0.7

或者更低:

1
--temp 0.4

代码补全、格式修复、结构化输出任务,低 temperature 通常更适合。

上下文长度

MTP 不是显存魔法。主模型和草稿模型都需要占资源,长上下文仍然会吃 KV cache。

8GB 或 12GB 显存机器不要一上来就开 64K / 128K。可以先用:

1
--ctx-size 8192

确认稳定后再往上调。

适合哪些任务

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 测试:

  1. 不开启 MTP,记录 tokens/s。
  2. 开启 MTP,记录 tokens/s。
  3. 保持相同模型、上下文、temperature、prompt。
  4. 比较输出质量和延迟。

可以用三类 prompt 测:

1
写一个 Python 函数,把 Markdown 表格转换成 CSV。
1
2
修复下面 JSON,只输出合法 JSON:
{"name":"demo","items":[{"id":1,"tags":["a","b",],},]}
1
用固定格式输出 5 条 Linux 故障排查步骤,每条包含:问题、命令、判断标准。

如果这些结构化任务明显变快,而且输出质量没有下降,说明 assistant-MTP 在你的环境里值得保留。

小结

Gemma 4 的 assistant-MTP 是配合主模型使用的多 Token 预测草稿模型。它通过 speculative decoding 提前预测多个 token,再由主模型并行验证,从而减少逐 token 生成带来的延迟。

它的价值是加速,不是提升模型能力。正确使用方式是:主模型负责最终输出,assistant-MTP 负责提前草拟;推理框架负责验证和接受候选 token。

如果你已经能稳定跑 Gemma 4,再考虑 MTP。先从较小的 speculative token 数开始,观察 tokens/s、显存占用和输出质量,再决定是否把它加入日常运行脚本。

参考资料:

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计