跳到正文
动手理解 · CONCEPT LAB

草稿猜一串,目标模型为什么能一次验一片?

小 Drafter 先串行生成多个候选 token;大 Target 用一次并行前向给这些位置评分,再按拒绝采样规则接受前缀并保证分布正确。

已经发生 正在观察 接下来
01 / 04

状态传导图

CTX 当前上下文
DRAFT 小模型
d1 草稿 1
d2 草稿 2
d3 草稿 3
PACK 候选序列

γ 太短摊不薄验证成本,太长又可能在后半段频繁被拒。

观察点 01

快模型先低成本猜出一小段候选

Drafter 逐 token 生成 γ 个草稿,也可以用多头、树或半自回归方式一次提出多个候选。它必须足够快,同时与目标模型保持较高一致。

草稿成本较低
候选覆盖长度一小段
此刻要记住

草稿不是最终答案;它的价值是把多个位置凑成一次目标模型验证。

概念专题 · 推理&部署 / 投机解码与 MTP

投机解码与 MTP:先便宜地猜,再由目标模型批量验

投机解码(Speculative Decoding)先让一个便宜的草稿猜出接下来几个 token,再让目标模型一次性批量评分——接受得多时,一轮就能前进多个 token。标准投机采样用接受/校正规则保持目标模型的输出分布;但实际加速可能小于 1×,也可能超过 3×,取决于草稿一致度、验证实现、batch、硬件和上下文。近似接受法则则不一定严格分布等价。

标准算法:理论上保持目标分布 猜一段 → 大模型一次验 经典论文约 2–3×,不是固定收益 草稿家族:小模型 / MTP / Medusa / EAGLE / 并行 MTP 深挖:训练目标 → 权重结构 → Serving 前沿拆解:DSpark(陆续加)
一图看懂投机解码:小而快的草稿先猜一串 token → 目标模型用一次批量前传给各位置评分。图中展示草稿全部被接受的理想化一轮,但省略了标准算法全接受后从 p 再采的额外 token;一般情形会从左到右接受,并在首次拒绝处校正。猜得越准,一轮平均发出的 token 越多。图是机制简化;“无损”特指标准算法保持目标分布,并不保证两次随机采样得到逐字相同的文本。查看原图 ↗
01 · 一句话讲清

实习生先打草稿,老板一眼批一片

大模型生成慢,是因为它逐字(自回归)蹦——每吐一个 token 都要把整个大模型再跑一遍。投机解码的点子很简单:让一个便宜的「草稿员」先把接下来几个字猜出来,大模型不用一个个写,只要「一次性批改」这串草稿。批改是并行的,所以一轮能前进好几个字。

类比:老板批实习生的草稿
普通解码:大老板每次亲自写一个字,写完再写下一个——慢,但每个字都是老板的水平。
投机解码:实习生(草稿模型)先刷刷写一小段,老板(大模型)一眼扫过去:从头开始,认可的部分直接采用,直到遇到第一个「不是我会写的」就打住、由老板亲手改这个字。
结果:如果采用标准接受/校正规则,统计上的输出分布不变;若草稿足够便宜且与老板足够一致,就能省下多次逐 token 前传。
为什么「快」还能保持分布
关键在投机采样的接受/校正规则:草稿 token 按目标分布 p 与草稿分布 q 的概率比接受;第一次拒绝时,不是简单“让目标模型随便重采”,而是从校正残差 (p-q)+ 归一化后的分布采一个替代 token。数学上可证,标准算法最终仍采自目标分布。
这是分布保持性质;Medusa 的 typical acceptance 等近似变体要另行讨论质量,而不能自动套用“精确无损”。
02 · 先理解瓶颈

大模型为什么逐字慢

自回归生成:每生成一个新 token,都要做一次完整的大模型前传(KV Cache 能省掉重算历史,但仍是「一步一个、必须串行」)。问题是——在小 batch / decode 阶段,这一步前传的瓶颈往往不是算力,而是把上百 GB 的模型权重从显存搬进计算单元(带宽受限)。既然搬一次权重很贵,那「搬一次只产 1 个 token」就太亏了。

投机解码的本质:把目标模型的一次前传摊给多个 token
在带宽受限的小 batch decode 场景里,目标模型批量评分 5 个草稿位置,可能比连续做 5 次单 token 前传便宜得多,成本甚至可能接近少量普通解码步;但“验证 5 个≈生成 1 个”不是恒等式。投机解码利用的是「批量验证的边际成本低于多次串行前传」,让一次昂贵验证平均发出多个 token。
⚠️ 实际成本取决于 γ、上下文、attention 实现、batch、硬件、MoE 与量化;草稿太慢或接受率太低时也可能倒退。
LtokenTdraft+TverifyE[Nemit]L_{\text{token}}\approx\dfrac{T_{\text{draft}}+T_{\text{verify}}}{\mathbb{E}[N_{\text{emit}}]}

这是忽略调度等开销的近似式:Tdraft=一轮草稿耗时、Tverify=一轮目标验证耗时、E[Nemit]=每轮实际发出 token 数的期望(包含拒绝处的校正 token,或全接受后的额外 token)。三个主要杠杆是:草稿更快草稿与目标更一致验证更高效

03 · 核心机制

三步:草稿 → 并行验证 → 拒绝采样

一轮标准投机采样:草稿模型自回归提出 γ 个候选,目标模型用一次批量前传给这 γ 个位置及其后一位置评分;随后从左到右随机接受。若首次拒绝,就丢弃该 token 及后缀,并从校正残差分布采一个替代 token;若 γ 个全接受,则从目标分布再采一个额外 token。

① 草稿模型猜 γ 个 token(便宜、快) 深度 学习 一门 ② 目标模型批量评分 → 接受前缀 + 1 个校正/额外 token 深度 学习 ✗拒 一门 校正采样 本轮一次前进 3 个 token 「深度 学习 的」← 拒绝 token 不会保留 ③ 按 min(1,p/q) 接受;拒绝时从归一化的 (p−q)₊ 校正残差采样
γ (gamma) 一轮草稿提出的 token 数 E[Nemit] 一轮实际发出 token 数的期望 校正 / 额外 token 拒绝时校正;全接受时从 p 多采一个 分布保持 标准算法的最终分布 = 目标分布
分布保持到底怎么保证
记目标分布为 p、草稿分布为 q。对从 q 采到的草稿 token x,以下面的概率接受:
接受概率=min ⁣(1, ptarget(x)pdraft(x))\text{接受概率}=\min\!\left(1,\ \dfrac{p_{\text{target}}(x)}{p_{\text{draft}}(x)}\right)
若被拒,替代 token 必须从下面这个归一化校正残差采样,而不是直接从原始 p 重采:
r(x)=[p(x)q(x)]+y[p(y)q(y)]+r(x)=\dfrac{\left[p(x)-q(x)\right]_+}{\sum_y\left[p(y)-q(y)\right]_+}
直觉是:草稿已经覆盖的那部分概率质量不能再算一次,只补目标分布相对草稿“缺少”的部分。可以证明接受部分与校正部分合起来恰好是 p注意:这是算法层的分布等价,不是固定随机种子下逐字或逐 bit 相同。基础推导要求 pq 是同一 token 空间中、分别经过各自 sampling processor 后的真实归一化分布;两边的 temperature、top-k 或 top-p 不必取相同值,只要验收使用实际的 p/q。设置越不一致,通常只是接受率越低。异词表实现则还要显式做 token 映射或交集,不能直接套公式。
三项手算:接受质量 + 校正质量 = 目标分布
假设同一位置上,目标分布 p=[0.6, 0.3, 0.1],草稿分布 q=[0.4, 0.4, 0.2]。草稿被接受后留下的无条件概率质量min(p,q)=[0.4, 0.3, 0.1],合计 0.8;因此拒绝总概率是 0.2。校正残差 (p-q)+=[0.2,0,0],归一化后为 [1,0,0],乘上拒绝概率贡献 [0.2,0,0]。两部分相加正好得到 [0.6,0.3,0.1]=p。这是单 token 的最小证明;多 token 算法逐位置应用同一不变量。
04 · 怎么衡量

能快多少?看「接受长度」和「加速比」

核心指标
平均发出长度 E[Nemit]:一次目标验证后实际提交多少 token,含校正或全接受后的额外 token。
加速比:普通解码延迟 ÷ 投机解码延迟;同时受发出长度、草稿/验证开销、batch、上下文与硬件影响。
接受率 α:单个草稿 token 被接受的平均概率;它高通常有利,但不能单独决定端到端速度。
典型数字(口径相关)
Leviathan 2023 的 T5-small→T5-XXL 部分配置,在翻译/摘要实验中报告 2.3×–3.4×,对应表中接受率约 53%–75%;Chen 2023 在其 Chinchilla-70B 分布式实验中报告约 2–2.5×。这些不是跨模型保证。
接受率由草稿—目标一致度、任务数据、采样参数和上下文共同决定;不能简单断言某一类任务总比另一类高。
可手算案例:为什么 70% 接受率不等于 3×
若简化假设每个草稿 token 独立且以同一概率 α 被接受,一轮草稿长度为 γ,标准算法每轮发出长度的期望是:
E[Nemit]=1αγ+11α\mathbb{E}[N_{\text{emit}}]=\dfrac{1-\alpha^{\gamma+1}}{1-\alpha}
α=1 时取极限 γ+1。取 α=0.7γ=3,则 E[Nemit] = (1-0.7⁴)/(1-0.7) ≈ 2.533。若一次目标验证成本记为 1、每个草稿步成本为 0.05,理想化加速约为 2.533 ÷ (1+3×0.05) ≈ 2.20×,不是 2.53×。真实系统还要计调度、树构造、KV 和 batch 影响;该例只用于看清“发出更多”与“草稿也要付费”的权衡。
05 · 生产边界

线上是否更快,主要由负载而不是论文峰值决定

投机解码减少的是目标模型的串行轮次,却会增加草稿计算、验证位置、KV 写入和调度工作。低并发、decode 受显存带宽约束时,它往往最有机会获益;并发与 batch 上升后,普通解码本身已能摊薄权重读取,而验证的有效 batch 近似变成 B×K,收益会收窄,甚至应把草稿长度 K 降到 0。

并发会改写成本账
一篇 2026 年预印本在 vLLM 0.10.1.1 + H100 的特定实验中,Llama-3.1-8B / GSM8K 的 EAGLE 加速从 batch 1 的 1.73×降到 batch 128 的 1.21×;其被测设置中,目标验证占投机路径时间的 42%–95%。这是一个系统研究样本,不是所有引擎或模型的通则,却说明只看接受率不够。
长输出要检查接受长度漂移
另一篇 2026 年预印本在其模型与任务上观察到,DFlash、EAGLE-3、PARD 的平均接受长度会随生成位置下降;图示个别设置里 EAGLE-3 在约 20K 输出 token后接近 1.1。这不能外推成所有长上下文都会失效,但生产压测应按输出位置分桶,而不是只报整段平均值。

截至 2026-07-26:引擎已经在做动态取舍

引擎当前官方文档列出的路线部署时要核对
vLLMEAGLE、MTP、独立 draft、PARD、DFlash、DSpark、MLP、n-gram、suffix、Dynamic SD官方把适用场景指向中低 QPS、memory-bound 负载;动态策略会随并发缩短 K,高负载可关闭投机。当前 Dynamic SD 只注明已测 EAGLE / EAGLE-3 / DFlash,且不兼容 data parallel。
TensorRT-LLMdraft-target、EAGLE-3、MTP、n-gram、PARD、DFlash、suffix 等发布的 latest 功能页仍写“不能动态关闭”;当前 main 的 PyTorch backend 开发者接口已提供 draft_len_schedule / max_concurrency,但仅对支持 dynamic draft length 的 speculative mode 生效,可在 batch 阈值外把草稿长度置 0。两处存在文档时差,必须按安装版本与 backend 实测。
SGLangEAGLE-2/3、MTP、DFlash、STANDALONE、NGRAM,并提供 Adaptive SD当前 Adaptive SD 仅支持 EAGLE-2(算法值 EAGLE)或 EAGLE-3(算法值 EAGLE3),且 topk=1;不同路径也不能任意叠加 DP attention、PP 或 overlap scheduler。

“理论无损”也不是“工程逐字复现”:精确接受算法保持目标概率分布;浮点归约、batch 形状、kernel、随机数消费顺序仍可能改变一次具体输出。vLLM 文档还明确不保证投机模式下稳定返回 token logprob。验收应分开检查统计分布/质量bitwise reproducibility

06 · 草稿哪来 · 进化史

Drafter 进化史:草稿来源与候选结构同时演进

投机解码的关键权衡是「草稿如何既便宜、又与目标模型一致」。从 2018 年的 blockwise 前身到 2026 年的并行 drafter,可以看到两种演化方向:草稿来源从外置小模型扩展到并行解码头、目标特征条件 drafter 与原生 MTP 模块;候选结构从单链扩展到树和整块并行。它们不是严格替代关系,不同负载仍可能选择不同路线。

2018Blockwise多输出头(前身) 2023创始独立小模型+拒绝采样 2023SpecInfer树状验证 2024目标侧轻量草稿Medusa · EAGLE · MTP 2025EAGLE-3 · PARD多层融合+并行掩码草稿 2026并行/DSpark整块+半自回归

创始:独立小模型 + 拒绝采样

Leviathan / Chen · 2023
架构:另取一个更小、更快且词表兼容的模型自回归猜 γ 个 token,目标模型批量评分,标准接受/校正规则保持目标分布。草稿可专门训练,也可用现成同族小模型,不一定必须另训。地位:Leviathan 与 Chen 在 2023 年分别给出这一精确投机采样范式及速度实验。代价:需要加载、部署和维护第二套权重;草稿链本身仍是串行的。目标模型和草稿模型并不要求参数同源,但 tokenizer/词表映射与解码分布必须处理正确。

树状验证:一次验多条路

SpecInfer · 2023-05
架构:草稿不再只给一条链,而是组织成候选 token 树;目标模型用树状 attention 在一次前传中并行验证多条路径。SpecInfer 论文在其分布式 benchmark 报告 1.5–2.8×,在 offload 场景报告 2.6–3.5×。这些数字依赖论文的模型、硬件和基线。影响:Medusa、EAGLE-2 等后续方案也采用或优化了树状候选验证,但具体采样正确性取决于各自接受算法。

Medusa:把草稿头「焊」在目标模型上

2024 · 自带草稿头的代表
架构:在目标模型最后隐状态上并联多个轻量解码头,并行预测未来不同位置,再用树状 attention 验证多条候选。训练:Medusa-1 冻结主干、只训练新增头;Medusa-2 联合微调主干与头。论文 v3 摘要报告 Medusa-1 超过 2.2×、Medusa-2 在其模型规模实验中为 2.3–2.8×;图 3 的 Vicuna-7B / MT-Bench 单类别结果最高到 3.62×,不能把类别峰值写成整体区间。边界:是否严格保持目标分布取决于接受规则;常用的 typical acceptance 以质量近似换更高接受率,不能与标准拒绝采样的“精确分布保持”画等号。

EAGLE 家族:在「特征层」上做自回归 ★ 重点

EAGLE-1/2/3 · 2024–2025
EAGLE-1 在目标模型的次顶层特征上做自回归:一个另行训练的轻量自回归 Transformer 结合该特征与错位一位的 token 序列,外推后续特征,再通过目标模型输出头得到 token。它通常需要匹配目标模型的草稿 checkpoint,并在 serving 中取得目标隐藏特征,不能简单归为几个并行“内置头”。论文在 LLaMA2-Chat 70B 等设置报告 2.7–3.5×。
EAGLE-2 用草稿置信度近似候选接受概率,按上下文动态组织草稿树;论文报告 3.05–4.26×,相对 EAGLE-1 快 20%–40%。
EAGLE-3 改为直接训练 token 预测,并融合多层特征;论文报告最高 6.5×、平均约为 EAGLE-2 的 1.4×,且给出 SGLang batch 64 下 1.38× 的吞吐提升。以上都是各论文设置,不代表对任意模型都成立;采用精确验证方案时可保持目标分布。

MTP:训练时就加入多 token 预测

Gloeckle 2024 · DeepSeek-V3
先分清两种实现:Gloeckle 等 2024 的 MTP 在共享主干上训练多个并行输出头;其约 峰值特指最佳 4-token、7B 模型的贪心自投机代码实验(文本约 2.7×),不是 MTP 的通用速度。DeepSeek-V3 则采用一个顺序的 MTP 模块(MTP depth=1),含投影、Transformer block 以及共享 embedding / 输出头。其技术报告称不同主题的第二 token 接受率约 85%–90%,投机服务可带来约 1.8× TPS。两种方案都不需要另载一整个草稿模型,但仍有新增模块、训练和 serving 集成成本。
🔗 MTP 两个身份 → 本页 07 节;相关模型专题 → V4-Pro

并行 drafter → DSpark:一次吐整块

PARD · DFlash · DSpark
PARD(2025-04,v4 修订于 2025-11)用掩码 token 并行预测整块草稿,一套 drafter 可覆盖同一模型家族的多个目标变体;最新版论文在 vLLM / Llama-3.1-8B 设置报告最高 3.67× / 264.88 token/s,为其 EAGLE-3 对照的 1.15 倍。DFlash(2026-02)用轻量块扩散模型一次并行生成整块草稿,并注入目标上下文特征;论文在其设置报告超过 6×,其加速比最高为 EAGLE-3 的 2.5 倍DSpark(2026-07)采用半自回归结构:并行骨干生成块级表示,轻量顺序模块补上前 token 依赖,再用置信度调度选择验证长度。论文称已在 DeepSeek-V4 serving 的真实流量中部署;相对其 MTP-1 生产基线,在匹配吞吐下单用户生成速度提升 60%–85%。三组都是作者论文报告,不能跨系统直接比较。
🔗 满血拆解 → DSpark ↗

轻量旁支:连草稿模型都不要

Lookahead · 自投机
Lookahead Decoding(2024)不用外部草稿模型,通过 Jacobi 迭代并行产生并缓存 n-gram 轨迹,再以目标模型验证;论文称算法精确,并报告 MT-Bench 最高 1.8×、代码补全多 GPU strong scaling 最高 4×。代价是用额外并行 FLOPs 换串行步数,论文部分配置每步额外 FLOPs 可达普通解码的 56–120 倍,适合有空闲算力而非已饱和负载。Draft & Verify(2023 arXiv / ACL 2024)让目标模型跳过部分中间层来起草,再用完整模型验证;论文称无需额外训练和额外模型内存,在 LLaMA-2 系列 benchmark 最高 1.99×。但跳层集合要先做模型级离线搜索:论文使用 1000 次贝叶斯优化迭代,并说明可能耗时数小时。它们减少了额外模型管理,却没有消除配置成本。

📋 一张速查表

流派草稿怎么来代表 / 年代
独立小模型另训或选用小而兼容的模型逐字猜Leviathan/Chen · 2023
树状验证候选展开成树、一次验多路SpecInfer · 2023
多解码头目标模型末隐状态加几个并行头Medusa · 2024
特征级自回归 ★在特征层外推、轻量 transformer 层EAGLE-1/2/3 · 2024-25
原生 MTP 模块训练时加入多步预测头或顺序模块MTP / DeepSeek · 2024
并行 / 半自回归掩码、扩散或并行骨干一次吐整块PARD / DFlash / DSpark · 2025-26
无模型旁支n-gram 池 / 目标模型跳层自草稿Lookahead · 自投机

两条主线一句话:① 草稿来源从独立小模型扩展到并行解码头、目标特征条件 drafter、原生 MTP 模块;三者的 checkpoint、隐藏态捕获和 serving 成本不同,不能都叫“挂几个头”。② 候选结构从单链 → 树 → 整块并行/半自回归演进;越并行不等于端到端越快,仍要把验证与负载算进去。

07 · MTP 深挖

从训练目标、Checkpoint 到 Serving:五本账不能混

MTP(Multi-Token Prediction,多 Token 预测)不是一种固定网络,也不是“主模型一次直接吐出多个最终 Token”。它先是一类训练监督:让同一位置预测多个未来目标;只有当预测头或模块被保留、推理引擎会调用它、候选再经过目标模型验收时,它才成为投机解码的 drafter(草稿器)

最容易混淆的五个口径:训练展开深度 Dtrain物理模块数 Mphys运行时草稿长度 K接受的草稿前缀 A本轮实际发出 Nemit。前三者不能互相代替;在线性标准投机采样且未被 EOS 或输出上限截断时,A∈[0,K],Nemit=A+1查看原图 ↗
身份一:辅助训练目标
MTP 把一个上下文位置变成多份未来监督。原始 2024 论文在共享 Transformer 主干上放 n 个独立、由 Transformer layer 实现的预测头,并共享 unembedding(隐藏表示到词表 logits 的输出矩阵)。论文观察到规模增大后代码任务收益更明显,但这是一组特定模型、数据与训练预算下的实验结果,不是“MTP 必然增强推理能力”的定律。
身份二:可选的内生草稿器
保留额外头或模块后,它们能直接利用主模型刚算出的 hidden state,不必从头运行一套独立草稿模型;但一致度与速度仍取决于结构、训练和引擎。候选仍只是候选:贪心解码要与目标 argmax 比对;随机采样要走正确的接受/校正规则。MTP 训练本身不自动授予“无损”保证。
A

并行头:每个 horizon 看同一份主干表示

Gloeckle et al. · ICML 2024
令第 k 个头预测距离当前位置 k 步的真实 Token,一个常见写法是:
Ln=tk=1nlogPθ ⁣(xt+kxt)\mathcal{L}_{n}=-\sum_t\sum_{k=1}^{n}\log P_\theta\!\left(x_{t+k}\mid x_{\le t}\right)
原论文把它们做成架构上独立的 heads:每个头都只读取同一份共享主干表示。第 3 个头直接从 x≤t 预测 xt+3,并没有先读取第 1、2 个头猜出的 Token。原论文实验为了公平,在新增 n−1 个头层时从共享主干移除 n−1 层,保持总参数量相当;其“训练时间无额外开销”来自具体的内存/计算排程,不能外推成任意实现都零成本。
B

顺序模块:保留未来 Token 之间的因果链

DeepSeek-V3 · sequential MTP
DeepSeek-V3 没有照搬并行独立头:第 k 个 MTP 模块把上一深度的表示,与更近未来真实 Token 的 embedding 分别归一化后拼接、投影,再经过一个 Transformer block,最后复用主模型 embedding 与输出头。训练总目标可概括为:
Ltotal=LNTP+λDk=1DLMTPk\mathcal{L}_{\text{total}}=\mathcal{L}_{\text{NTP}}+\dfrac{\lambda}{D}\sum_{k=1}^{D}\mathcal{L}_{\text{MTP}}^{k}
这保留了未来预测之间的顺序依赖,但也带来 training–inference discrepancy(训推差异):训练时模块看到真实的较近 Token;推理时第二步以后看到的是自己刚选出的草稿 Token。GLM-5.2 的 IndexShare / KVShare、拒绝采样式训练与端到端 Total Variation(TV,总变差)损失,就是针对递归草稿成本和这种差异做的后续改造。

四种常见物理实现:同叫 MTP,权重合同不同

实现形态权重与数据流工程含义
并行 horizon heads共享主干上接多个独立预测头;各头直接对齐不同未来位置可一次提出多位置候选;候选相关性与树构造由解码器另行处理
多个顺序模块k 层承接第 k−1 层表示,并融合近一位 Token embedding保留草稿因果链;更多物理层会增加 checkpoint 与激活成本
单模块递归复用Checkpoint 只有一套 block,训练或推理按深度重复调用物理权重少于展开步数,但每步 forward、采样和状态更新仍要付费
独立 MTP assistant辅助 checkpoint 走引擎专用 MTP 路径,可与目标共享部分状态“MTP”不必与主权重装在同一仓库;例如 vLLM 当前为 Gemma 4 assistant 提供专门映射

先读懂五个数,再看任何“7-step / 1 layer / 5.47”

口径回答的问题常见误读
Dtrain · 训练展开深度每个位置向未来监督几步,或共享模块在训练图里展开几次?等同于 checkpoint 里有几套独立层
Mphys · 物理模块数权重文件实际保存几套 MTP 参数?num_nextn_predict_layers=1 就只能起草 1 步
K · 运行时草稿长度本轮 verifier 前,drafter 最多提出几个 Token?模型天生固定值;忽略它可按引擎和负载调整
A · 接受前缀长度草稿从左到右有多少个通过验证?取值通常为 0…K直接当作端到端 speedup,或与 per-token acceptance rate 混用
Nemit · 实际发出长度在线性标准算法中,首次拒绝时提交 A 个接受草稿和 1 个校正 Token;全接受时提交 K 个草稿和 1 个额外 Token,因此通常 Nemit=A+1,EOS 或输出上限截断除外把它当成独立于 A 的数,或不声明口径就跨论文横比
一个最小反例:1 层 ≠ 1-step
Qwen3-Next 的公开权重只有一个 mtp.layers.0,而官方模型卡的 vLLM 示例把 num_speculative_tokens 设为 2;GLM-5 的公开配置同样是 num_nextn_predict_layers=1,技术报告却让同一套参数在 3 个训练预测深度复用,并用 4 speculative steps 做接受长度实验。前者描述物理权重,后两者描述展开/运行时策略

真实模型样本:只写公开证据支持的那一层

模型 / 证据可确认的 MTP 合同数字边界
DeepSeek-V3公开权重有 1 个顺序 MTP 模块;共享 embedding / output head,另含投影与一个完整 Transformer block;普通推理可丢弃该模块报告称第二 Token 接受率约 85%–90%,其 MTP 评估达到约 1.8× TPS;报告未披露足以跨系统复现的完整 serving 条件,也不是所有 MTP 的保证
Qwen3-Next公开 checkpoint 只有一个 mtp.layers.0,融合主 hidden 与当前草稿 embedding,复用主 LM head;运行时可递归调用模型卡给出 K=2 的 vLLM 示例,没有给跨框架固定接受率或加速倍数
GLM-5num_nextn_predict_layers=1;同一套约 9.953B 额外参数在 3 个训练深度共享作者实验在同为 4 steps 时报告 accept length 2.76;不是公开 workload 的端到端速度
GLM-5.2继续共享 MTP 参数;后续草稿步复用第一步 Index 与 KV,并用 rejection-sampling 目标与端到端 TV loss 降低训推差异基于 GLM-5.1 backbone 的编码消融、训练与推理均 7 steps:4.56 → 5.47(+20%)是接受长度,不是 20% TPS
MiniMax M3公开 config 同时列出 num_mtp_modules=7num_nextn_predict_layers=1发布博客未给两字段的完整映射、训练目标或生产投机 recipe;不能仅凭字段名断言 7 层、7-step 或固定加速
MTP 成本账:共享权重不等于免费
权重:额外 projection、norm、attention / MLP 或 MoE 参数仍占显存;“共享 LM head”只是不再保存一份权重。
计算:递归 K 步要做 K 次 MTP forward 与 logits / sampling;大词表输出投影可能成为显著成本。
状态:草稿路径要维护自己的 KV、递归状态或共享索引;拒绝后还要正确截断/回滚未提交后缀。
验证:目标模型面对近似 B×K 的验证位置;batch 大时可能从带宽受限转为算力受限。
上线前最小验收合同
① 固定 target / checkpoint revision / tokenizer,确认 MTP tensors 没在转换或量化时被丢掉;
② 固定引擎版本、backend、并行与采样配置,确认该模型族走的确是 MTP 路径;
③ 扫 K=0/1/2/… 与真实并发,而不是只测 batch 1;
④ 同时报 TPOT/ITL、吞吐、P50/P95、显存、接受前缀分布,并按输出位置分桶;
⑤ 把严格分布验收与 relaxed / typical acceptance 分开,预留高负载降到 K=0 的回退。
一句话判断是否值得用
当目标模型 decode 明显受显存带宽限制、MTP 模块足够便宜、真实流量上接受前缀稳定大于 1,且引擎能把验证与 KV 提交做高效时,MTP 才可能兑现端到端收益。反过来,有 MTP 权重 ≠ 引擎自动启用 ≠ 一定更快 ≠ 不需要目标验证
🔗 单模型实现 → DeepSeek-V3 · Qwen3-Next · GLM-5 · GLM-5.2;下一代线上 drafter → DSpark
08 · 前沿拆解

论文拆解:把新方法放回同一张成本表

上面讲「通用原理」,这里挂具体论文的深度拆解——想钻细节的往这看(陆续增加)。

🔬 当前已拆 DSpark(半自回归 + 置信度调度) · 更多投机解码论文陆续上线
09 · 串起来

它优化串行轮次,但不会替代其余推理工程

推理优化可以从表示精度与模型大小(量化/蒸馏)、每 token 计算与访存(KV Cache/MoE/内核)、解码步数(投机解码)和服务调度(batch/PD 分离)等方向入手。投机解码的独特之处是:标准投机采样可以在减少目标模型串行步数的同时保持目标分布;但近似接受变体不自动具备这一性质,也不是所有负载都会加速。
投机解码 → 推理全景

量化/KV Cache/吞吐一起看 → 推理 & 部署

前沿拆解 → DSpark

半自回归 + 置信度调度 → DSpark ↗

MTP → 真模型

多 token 预测怎么用 → V4-Pro

资料来源

原始论文与数字口径

核查日期:2026-07-26。本文速度、吞吐和接受率均按原论文的模型、任务、硬件与基线陈述;它们不是跨部署环境的保证。文中的 70% 接受率与三项分布案例均是用于解释公式的简化手算,不是实测结果。MTP checkpoint 字段按公开配置与权重索引记录;未公开的字段映射不作推断。引擎能力按核查日官方文档记录,后续版本可能变化。