MTP多令牌预测:Qwen3性能提升3倍的隐藏开关

一个被默认关闭的免费加速开关
同样的显卡,同样的模型文件,同样的提示词——一台机器每秒生成60个令牌,另一台却达到167。它们之间没有任何硬件差异,没有更激进的量化,也没有牺牲任何输出质量。改变这一切的,只是一个配置标志(flag)。
它叫做 MTP(Multi-Token Prediction,多令牌预测)。据技术社区深度拆解,这个能力早已包含在你磁盘上的模型文件里,却在几乎所有主流推理工具中默认处于关闭状态。Qwen 团队在发布权重时就训练好了 MTP 头(MTP head),这意味着这份加速是「免费」的——无需额外下载,无需任何交换,输出结果与原始完全一致。
这就变得有些尴尬了:你终端里看到的吞吐数字,可能远远低于这个模型本应达到的水平。而所谓「3倍提速」,最初正是来自发布当天一位开发者测量表格中的一行数据。

MTP到底解决了什么问题
要理解这个开关的价值,得先看它修复的瓶颈。文本生成本质上是一个队列:模型一次前向传播(forward pass)只吐出一个令牌,然后为下一个词重新走完整个数十亿参数的计算流程。
关键在于,这个过程并非受算术能力限制,而是受内存带宽限制。你的显卡在每次前向传播中,大部分时间都花在从显存总线上「拖动」权重,好让每个权重恰好参与一次乘法。所以一张每秒输出80个令牌的显卡,并不是在「思考」80次——它是在为80个单词,把同样的18GB权重数据从内存里读取了80遍。
这背后涉及GPU计算中一个核心概念——算术强度(Arithmetic Intensity)。现代GPU的浮点运算能力远超其显存带宽所能喂饱的程度。以NVIDIA RTX 4090为例,其FP16算力达330 TFLOPS,但显存带宽仅约1 TB/s。当模型推理时,每个参数只做一次乘加运算,算术强度极低(约1 FLOP/byte),GPU绝大部分计算单元实际处于空闲等待数据到达的状态。这种场景被称为"内存带宽受限"(memory-bound),与训练时批量处理大量数据的"计算受限"(compute-bound)场景形成鲜明对比。这也解释了为什么HBM(高带宽显存)的规格往往比CUDA核心数量更能决定推理速度——买更多的算力并不能解决"数据搬不过来"的问题。
推测性解码:用低成本的预测换速度
推测性解码(Speculative Decoding) 针对的正是这种浪费。它的逻辑很简单:让一个轻量级的组件提前猜测接下来的几个令牌,然后真正的大模型在一次前向传播中批量验证所有草稿令牌,成本大约相当于过去生成单个令牌的开销。
这一方法最早由Google DeepMind的Yaniv Leviathan等人在2022年论文《Fast Inference from Transformers via Speculative Decoding》中系统提出,几乎同期Stern等人也独立发表了类似方法。其数学保证建立在一个精巧的**拒绝采样(rejection sampling)**方案上:大模型在验证阶段会计算每个草稿令牌的真实概率分布,若草稿模型给出的概率高于大模型的概率,则按比例随机拒绝,确保最终采样分布与直接从大模型采样完全一致。这意味着推测性解码不是一种近似方法,而是在数学上严格等价于原始解码。
- 猜对了:4个令牌以1个的价格「一次性到达」
- 猜错了:错误的草稿被丢弃,你回到起点
最关键的一点是——完整模型会在输出每个草稿令牌之前验证它,所以推测永远不可能改变最终答案。这意味着开启 MTP 在质量上不花你任何代价。
通常,推测需要你额外下载并常驻内存一个「草稿模型」。而 Qwen 的巧妙之处在于,它把草稿头直接训练进了模型文件里。这一方案源自Meta在2024年发表的Multi-Token Prediction研究,核心思路是在主模型的Transformer最后几层之上,额外训练若干轻量级的预测头。每个MTP头共享主模型的隐藏状态表示,仅包含一个小型的前馈网络和输出投影层,参数量通常不到主模型的1%。这些头在预训练阶段就与主模型联合训练,学习预测第2、第3乃至第N个未来令牌。由于共享了主模型的深层语义表示,MTP头的预测准确率远高于独立小模型的随机猜测,同时几乎不增加模型文件体积。
以某量化版本为例,包含 MTP 头的标签是18GB,不包含的也是18GB——草稿头几乎不占额外空间(实测约2.5GB额外内存用于草稿计算)。
为什么这么少的工具显示出理想速度
一个能力,四个名字
第一个原因是枯燥但真实的:四种主流运行时对这个功能的「拼写」各不相同,且没有一个默认开启。
- 在 llama.cpp 中,它是一个
spec类型参数 - 在 vLLM 中,它藏在服务配置的 JSON blob 里
- 在 SGLang 中,它是一个推测算法选项
- 在 Ollama 中,你根本不设置标志,而是要拉取不同的标签
一个能力,四个名字,四种入口。
一次悄无声息的重命名
更尖锐的原因是「重命名腐烂」。在该模型发布前三个月,llama.cpp 项目改变了这个标志的拼写方式,而 MTP 支持在三天后才进入主分支。旧的拼写没有被移除,仍然被「接受」,却被悄悄忽略。
结果就是:生成照常运行,但推测停止了,你的吞吐量崩溃到一半,而命令行和日志都不会给你任何提示。据报道,一次测量显示吞吐从约每秒140令牌回落到约70。所有在那个「改名日」之前写的教程,都还带着已经失效的旧拼写——这才是它「感觉像秘密」的真正原因:不是能力本身晦涩,而是指令过时了。
藏在标志背后的参数调节
改用正确的词、开启它之后,你会遇到真正的调节旋钮——这个标志接受一个数字,表示一次要猜测多少个令牌。
发布当天,一位开发者在 Blackwell 工作站显卡上把这个数字从2扫到8,公布了完整曲线:
| 草稿令牌数 | 接受率 |
|---|---|
| 2 | 81% |
| 5 | 56% |
| 8 | 40% |
但吞吐量并不随接受率线性变化。它在第5步左右攀升到约每秒115令牌形成峰值,然后回落。而大多数在线配方默认发货的是2到3——这留下了高达27%未被利用的性能空间。社区复制的默认值,往往不是硬件真正想要的值。
这里存在一个有趣的权衡:猜测更多令牌意味着更大的批量验证开销(验证N个草稿令牌的计算量略大于验证1个),但只要接受率足够高,"一次验证通过多个令牌"带来的带宽节省仍然远超额外的计算成本。然而随着猜测窗口拉长,后续令牌的预测难度呈指数上升(第5个令牌的条件概率远低于第2个),导致边际收益递减。最佳猜测数量因此高度依赖具体硬件的算力/带宽比值和模型本身的可预测性——没有放之四海而皆准的最优值。
决定速度的,竟是质量设置
另一位开发者发现了更微妙的事:草稿接受率从上个版本的约85%跌到这个版本的约65%。原因与模型无关,而是温度(temperature)。它默认以1.0运行采样器,因为这是模型作者自己推荐的。更高的温度会「压平」下一个令牌的概率分布,使草稿头更容易猜错。
温度是控制语言模型输出随机性的核心采样参数。在softmax计算中,温度作为除数应用于logits:T=0.1时概率分布极度尖锐,模型几乎确定性地选择最高概率令牌;T=1.0时保持原始训练分布;T>1.0时分布趋于均匀,低概率令牌获得更多被选中的机会。推测性解码的效率直接取决于草稿模型与主模型概率分布的重合度。当温度较低时,两个模型大概率会"同意"选择概率最高的那几个令牌,接受率自然很高。当温度升高,主模型可能从分布的长尾中采样到"意外"令牌,而草稿头由于容量有限很难预测这些低概率选择,导致接受率骤降。
换句话说,一个写在配置里、排在推测参数之前三行的「质量设置」,实际上决定了你的速度。你甚至可以违背作者建议、降低温度,来「购买」额外的吞吐量。温度参数本质上控制了"可预测性",而可预测性正是推测性解码的加速引擎。
跨硬件的真实表现
Blackwell 的天花板与格式陷阱
供应商在发布当天报出了每秒206令牌的惊人数字(一位用户称在 Windows 上达到216)。但要注意:这个头条成绩的功劳并不属于 MTP,而是属于一种叫 NVFP4 的4比特格式配合独立草稿器并行运行——而该格式只存在于 Blackwell 芯片上。
NVFP4是NVIDIA专为Blackwell架构(GB100/GB200系列芯片)设计的原生4比特浮点数格式。与传统的INT4量化将浮点权重映射到整数不同,NVFP4保留了浮点数的指数位,能更好地表示参数分布中的长尾值,从而在极低比特宽度下维持更高的模型精度。Blackwell芯片的第五代Tensor Core在硬件级原生支持FP4运算,每个时钟周期处理的元素数量是FP8的两倍。这意味着在相同显存带宽下,FP4可以将有效吞吐量翻倍——不仅因为每个权重占用的字节更少(从而减少内存读取量),还因为硬件能直接对这种格式执行乘加运算而无需反量化开销。
在3090或4090上,这个数字不是「更慢」,而是根本无法达到,因为Ampere和Ada Lovelace架构的Tensor Core最低只支持INT8/FP8精度的硬件加速,运行4比特模型时需要软件层面的反量化步骤,无法获得同等的吞吐收益。
AMD 与 Apple:可移植但有代价
- AMD 侧:独立扫描显示 Vulkan 后端在生成速度上领先 ROCm 约20%~30%,而 ROCm 在提示处理上领先。一位16GB Radeon 用户在12.8万令牌上下文下测得约每秒30令牌,在半上下文并开启标志后达到51——快了近60%。
- Apple 侧:一台48GB笔记本从4比特下每秒8.3令牌提升到移植草稿头后的20.3,平均2.45倍。更有意思的是,带草稿的4比特(20令牌/秒)竟然击败了不带草稿的8比特(14.6令牌/秒)——更好的答案 + 更快的速度,这是量化本身通常给不了的交易。这个结果看似反直觉,但道理很简单:8比特模型的权重体积是4比特的两倍,Apple Silicon的统一内存带宽成为更严重的瓶颈,而4比特模型加上MTP的推测性解码,通过减少总的内存读取次数和每次读取的数据量,实现了双重加速。
一个尖锐的反对意见
不过,在讨论中最响亮的回复并不买账。他质疑:整个堆栈是否为这种混合架构做了前缀缓存(prefix caching)?因为代理任务每一轮都要重读整个历史,如果没有前缀缓存,一旦对话变长,「3倍」就会退化成「半倍」。
前缀缓存是一种KV Cache复用技术,当多轮对话或多个请求共享相同的前缀文本时(如系统提示词、工具定义、历史对话记录),服务器可以将已计算好的Key-Value缓存保存下来,后续请求直接复用而无需重新计算。在代理(Agent)工作流中,模型每一步行动都需要重新阅读完整的任务描述和所有历史交互记录,这些前缀可能占到总输入的90%以上。如果没有前缀缓存,每一轮推理的预填充(prefill)阶段都要从零开始处理数千甚至数万个令牌,这个预填充时间会远超生成阶段本身——而推测性解码只加速生成阶段,对预填充毫无帮助。目前vLLM的Automatic Prefix Caching和SGLang的RadixAttention都实现了前缀缓存,但将其与推测性解码同时启用在工程上仍面临缓存失效策略和显存管理的复杂挑战。
他声称市面上还没有服务器同时具备前缀缓存与推测功能。这是一个论点而非基准,但它恰恰问到了最正确的问题。
什么时候该开,什么时候别指望它
梳理下来,可以得出几条清晰的行动建议:
- 在模型已经能装进显存的机器上,立即开启它——因为它无损,且已在你下载的文件里。
- 别为这个标志去买显存。在装不下模型、被迫走系统内存的机器上,真正的瓶颈是那根 PCIe 电缆。PCIe 4.0 x16的理论带宽约为32 GB/s,而即便是消费级GPU的GDDR6X显存带宽也在1 TB/s级别——两者相差30倍以上。有测试显示,推测只隐藏了7.5%的内存延迟——它能隐藏已开始的传输延迟,却无法隐藏尚未开始的传输。当权重必须通过PCIe从系统内存搬运时,这条窄管道才是真正的天花板,推测性解码对此无能为力。
- 调好那个「猜测数量」旋钮,通常5左右接近甜蜜点,而不是默认的2~3。但最优值因硬件和使用场景而异,值得花几分钟做一次简单的扫描测试。
- 注意温度与速度的隐性绑定,愿意的话可以用降低温度来换吞吐。对于代码生成、数据提取等确定性较高的任务,降低温度本身也有益于输出质量,此时与推测性解码形成正向循环。
最核心的一句话是:MTP 是「乘法」而非「创造」。它把你已经拥有的速度翻倍,但无法凭空变出速度。这里引用的每个数字都是真实的,都是某个人在某种被裁剪过的最优条件下测量到的上限。理解这些条件,才能让这个自发布以来就一直「免费躺在文件里」、却到处默认关闭的开关,真正为你所用。
核心要点
相关推荐

WeatherNext 3达5公里精度,AI气象模型与推理成本迎来突破
Google DeepMind发布WeatherNext 3实现5公里精度AI气象预报,Meta推出Muse低价实时转写模型,微软称AI推理成本三年降300倍,OpenAI宣布进入AGI时代,涵盖自动驾驶与AI短剧人脸授权等产业动态。

Coze扣子多Agent协作实战:构建AI智能体团队完整指南
深度解析Coze扣子平台的多Agent协作模式,涵盖智能体类型、RAG知识库、工作流编排等核心功能,提供从零基础到企业级部署的完整实践路径,助力技术人员快速掌握AI Agent开发能力。

WAS Node Suite v3:告别依赖地狱的ComfyUI节点包全面升级
WAS Node Suite v3 对 ComfyUI 节点包进行彻底重构,实现零外部依赖安装、PyTorch 原生化改造、节点数量翻倍及灵活功能门控,彻底解决依赖冲突问题,提升AI图像生成工作流的稳定性。