自回归训练在每个位置只监督一个 token,信号稀,而且 teacher forcing 的局部目标与推理时的多步生成错位。 MTP 让每个位置同时预测未来 n 个 token:Gloeckle et al. 用共享 trunk 加独立 head,DeepSeek-V3 用顺序因果链且只多预测一个 token。 训练收益在代码任务上最明显;推理时这些 head 可以丢掉,也可以拿来做自投机解码。
MTP 是训练目标,不是推理插件。每个训练位置不再只预测 x(t+1),而是同时预测 x(t+1) … x(t+n);
共享 trunk 上挂 n 个 head,每个 head 负责一个偏移。为了做等参数量比较,作者把 n−1 层从 trunk 移到预测 head,所以这不是“白送参数”。
两种排布。Gloeckle et al. 的 head 相互并行、独立,共享 unembedding;DeepSeek-V3 改成顺序因果链:第 k 个深度把上一个深度的 hidden state 与 Emb(t(i+k)) 拼接,过一个 Transformer block,再共享 output head。DeepSeek-V3 只取 D=1,即多预测一个 token。
收益不均匀:代码任务的收益更明显,自然语言的选择题基本持平或回退;DeepSeek-V3 的 Large MoE 消融中,MMLU 从 67.5 降到 66.6(−0.9 个百分点)。训练时间也不是零:Table S5 的 n=4 实测为 1.07–1.22×,而 §1 的表述是「no train time or memory overhead」。
推理有两条路:丢掉 MTP head,成本回到普通模型;或把 head 当 draft 做自投机。Gloeckle 的 7B / 4-token 模型在代码上报告 3.0×,平均接受 2.5 / 3 个建议;DeepSeek-V3 报告第二 token 接受率 85–90%、1.8× TPS。Medusa/EAGLE 是推理侧的 draft 机制,和 MTP 不在同一层。
读完这节你应该知道:MTP 为什么是训练目标问题,而不是又一个推理加速插件。
标准语言建模在每个位置只监督下一个 token:L1 = −Σt log Pθ(xt+1 | xt:1)(§2,Eq. 1)。
teacher forcing 把 ground truth 喂给模型,模型只需要在局部把下一个 token 的分布拟合好;一条长度为 T 的序列只产生 T 个监督信号,而且每个信号只指向紧邻的下一个位置。
论文的观察是,这种局部目标会让模型抓住局部模式,却不容易学到对后续文本更重要的“选择点”(§1、§5.1)。
推理时的情况不同:没有 ground truth,模型只能沿着自己生成的 token 往前走,早期错误会累积。训练时每步都有正确前缀,推理时没有;这个分布错位是论文在 §5.2 用信息论解释 MTP 的出发点。 在这个视角下,MTP 想改的是模型学到什么表示,而不是解码器怎么调度。
把每个位置的标签从 1 个扩展成 n 个未来 token,让同一个 hidden state 同时服务多个偏移的 cross-entropy。信号密度上去了,表示也被推向更长程的信息。
speculative decoding、Medusa、EAGLE 都在推理时用更便宜的 draft 换并行验证;目标模型的参数和训练目标不变。它们优化的是“每一步怎么走”,不是“模型学到什么”。
MTP 把额外 head 写进预训练目标;训练完成后,最基本的使用方式仍然是只用 next-token head(§2)。 因此它和 speculative decoding 不是互斥关系:MTP 提供了一种“自带 draft”的可能,但不启用自投机时,额外 head 可以被丢弃。 这也解释了为什么页面的前半段在讲训练目标,后半段才谈推理加速。
要让这个想法可用,至少有三个约束:训练时间不能线性增长、参数量要能和 baseline 对齐、推理时如果不能加速也不能变慢。后面的「训练与推理」一节会逐条对账。
读完这节你应该知道:Qi et al.、Stern、Medusa、EAGLE 各自做到哪一步,MTP 的空白在哪里。
Qi et al. 认为多 token 预测能鼓励规划、改善表示,并减少 teacher forcing 对局部模式的过拟合。但他们的实现把 residual stream 复制 n 份;Gloeckle et al. 在 §6 的对比里指出,这种做法难以做等计算量比较,残差表示参与辅助 loss 的方式也不同。
blockwise parallel decoding 用多个 head 一次提出多个 token,再用目标模型验证;它关注的是解码加速,通常是在已有模型上做微调。Gloeckle et al. §6 把这类工作归为“为推理而做的多 token 预测”,没有研究把它作为预训练目标的效果。
Medusa 在 backbone 上加多个解码头,并行预测多个未来 token,用 tree attention 同时验证多条候选。Medusa-1 冻结主干、只训 head,在 Vicuna-7B 上报告 2.18×;Medusa-2 联合微调,报告 2.83×(Table 2)。它的 typical acceptance 不要求输出与目标分布逐点一致(§2.3.1;实验见 §3.3.2),所以不是无损采样的同义词。
EAGLE 不在 token 层自回归,而是在目标模型倒数第二层特征上自回归,并把 token 序列前移一步来降低特征预测的不确定性;draft 树用 tree attention 验证(§1、§3)。它仍属于 speculative sampling 框架,改变的是“草稿怎么来”,不是预训练目标。LLaMA2-Chat 70B 上报告 2.7–3.5× latency 加速(§1)。
Gloeckle et al. 的贡献是把这个目标做成“无额外参数”的架构:共享 trunk 加 n 个 head,训练时按 head 顺序做前向/反向,把显存压回 O(V+d)(§2)。
DeepSeek-V3 则把它带进 671B 总参数、37B 激活参数的 MoE 预训练(§4.2),改成顺序因果链,并且只多预测一个 token(D=1,§4.2)。
这两篇的分工,正好对应页面后面要讲的两件事:训练信号怎么加,以及推理时这些 head 怎么处理。
和 Medusa/EAGLE 的关键区别是层次不同:MTP 改的是预训练目标,额外 head 是训练图的一部分;Medusa/EAGLE 改的是推理时的 draft 机制,主干模型可以冻结,也可以联合微调。 两者可以组合(Gloeckle §2 提到 Medusa-like tree attention;DeepSeek-V3 §2.2 提到复用 MTP 做 speculative decoding),但组合不等于同一件事。
读完这节你应该知道:两个实现的公式、参数怎么对齐,以及为什么 head 的前向/反向顺序会影响显存。
设共享 trunk 为 fs,第 i 个预测 head 为 fh(i),共享 unembedding 为 fu。模型在每个位置 t 同时预测未来 n 个 token:
Ln = −Σt log Pθ(xt+n:t+1 | xt:1)Pθ(xt+i | xt:1) = softmax(fu(fh(i)(fs(xt:1))))
Eq. (2) 与 §2 的分解;i=1 是 next-token head,i>1 是额外 head。所有 head 读同一个 trunk 表示 zt:1。
额外 head 不是线性层:论文的主架构里,每个 head 是一个 transformer 层(Appendix B 另试了 linear head)。所有 head 共享同一个 unembedding 矩阵 fu,因此词表投影的参数量不随 n 线性增长;如果每个 head 都复制一份 unembedding,矩阵形状会是 (d, nV),在大词表下不可行(Appendix B)。
等参数量比较的做法是:加 n−1 个 head 层,就从 trunk 里减掉 n−1 层(§3)。所以 MTP 模型和 next-token baseline 的总参数量相同,差别在于深度怎么分配,而不是“多了一倍参数”。
这一点在读 Figure 3 的规模趋势时很重要:横轴是总参数量,不是 trunk 深度。
词表大小 V 远大于 hidden dimension d,logits 是显存瓶颈。如果一次把所有 head 的 logits 和梯度都物化,峰值是 O(nV+d);论文的做法是:
先做 trunk 的前向,然后逐个 head做前向和反向,把梯度累加到 trunk,再释放当前 head 的 logits,只长期保留 d 维的 trunk gradient ∂Ln/∂fs。
峰值降到 O(V+d),且作者称运行时不增加(§2、Figure 2;训练时间的实测见「训练与推理」一节的 Table S5)。
DeepSeek-V3 的实现和 Gloeckle 的并行 head 不同:它用 D 个顺序模块预测 D 个额外 token,并保留每个预测深度的完整因果链(§2.2)。
第 k 个模块先把上一个深度的表示 hk−1i 与第 i+k 个 token 的 embedding 拼接,过一个线性投影 Mk:
h′ki = Mk[RMSNorm(hk−1i); RMSNorm(Emb(ti+k))]hk1:T−k = TRMk(h′k1:T−k)Pki+k+1 = OutHead(hki)
Eq. (21)–(23),§2.2;k=1 时 h0 是主模型的表示,Emb 与 OutHead 都与主模型共享。
每个深度的 loss 是该偏移上的 cross-entropy;总 loss 是各深度平均后乘权重 λ:
LkMTP = CrossEntropy(Pk2+k:T+1, t2+k:T+1)LMTP = (λ/D) Σk=1D LkMTP
Eq. (24)–(25),§2.2;DeepSeek-V3 取 D=1(§4.2),即主模型之外只多预测一个 token。
为什么是“顺序”而不是“并行”?看 h′ki 的第二个输入:Emb(ti+k)。k=1 时它吃的是真实的下一个 token 的 embedding,用来预测再下一个 token;k=2 时它吃 h1i 和 Emb(ti+2),继续往前推。
这样每个深度都保留完整的因果链,深度之间是串行的。DeepSeek-V3 §2.2 明确说,这个因果链的思路和 EAGLE 相似,但 EAGLE 的目标是 speculative decoding,DeepSeek-V3 的目标是训练。
论文把 next-token 的 H(X) 与 2-token 的 H(X)+H(Y) 拆开:H(X)+H(Y) = H(X|Y) + 2I(X;Y) + H(Y|X)。丢掉 H(Y|X)(它会在下一个位置再次出现),2-token 预测把 I(X;Y) 的权重提高一倍(§5.2)。
论文用一个简化的序列论证:n-token 预测通过“相关项”给 choice point 的权重是 n(n+1)/2,给 inconsequential point 的权重是 n(§5.1)。这不是显式的损失重加权,而是多偏移目标叠加后的隐式效果。
除了并行独立 head,论文还试了三种排布:causal,后面的 head 叠在前面的 head 上;anticausal,先预测最远的 token,再逐步细化到近处;linear head,用单个线性层代替 transformer 层。 Appendix B 称三种变体相对 parallel「showed no significant improvement」;页面只引用这个结论,不展开表内数字。作者的大规模实验采用 parallel。
读完这节你应该知道:显存怎么压、训练时间与「无开销」说法怎么并列、推理侧的自投机加速怎么算。
等参数量比较把 n−1 层从 trunk 移到 head,总参数不变,但训练图多了一些逐 head 的前向/反向调度。论文 §1 称这个架构「no train time or memory overhead」;Appendix C 的 Table S5 则给出相对 next-token 训练的墙钟时间:
n=4 在 0.3B 到 13B 的模型上为 1.07–1.22×,n=2 为 1.02–1.07×。
Table S5 的 caption 把这归因于 FSDP 的层权重通信与计算 overlap 丢失,并说如果重新实现可以去掉这部分开销(Appendix C)。
两处口径并列:§1 的「no train time or memory overhead」是贡献表述,Table S5 是当前实现的实测;页面不替它们做进一步解释。
显存侧的收益更明确:naive 物化所有 head 的 logits 是 O(nV+d),顺序前向/反向把它压到 O(V+d)(§2、Figure 2)。这是一个实现顺序问题,不是模型架构变化;如果训练框架一次性物化所有 head 的 logits,显存仍会按 n 增长。
Gloeckle et al. 明确说,最基本的推理方式是只用 next-token head,其余 head 全部丢弃(§2)。 DeepSeek-V3 在 §4.5.1 也写得更直接:推理时直接丢弃 MTP 模块,所以带 MTP 和不带 MTP 的对比模型推理成本相同。 这意味着 MTP 的训练收益和推理加速是解耦的:不启用自投机,额外 head 不进入推理图;启用自投机,才把 head 当 draft。
自投机的基本账:用 k 个 head(含 next-token head)一次产生最多 k 个 token,目标模型再做一次验证 forward。设逐位接受率为 α,且各位置独立同分布,则每次 forward 的期望 token 数是
E = 1 + α + … + αk−1 = (1−αk)/(1−α)。
设一次 draft pass 的成本是一次 target forward 的 c 倍,则 walltime 加速比是 S = E/(1+c)。k=1 时 E=1,S≤1;至少要有两个 head 才有加速空间。
这和标准 speculative decoding 的公式是同一个:k 个 MTP head 提供 k−1 个额外草稿,等价于标准投机的 γ=k−1,因此 (1−αk)/(1−α) = (1−αγ+1)/(1−α)。区别在草稿的来源:MTP 的 head 是预训练 jointly 学出来的,不是外挂的 draft model。
预设的实测值逐字取自 Table S2(3.50 tokens/forward、3.05×)与 §5.4.3(85–90%、1.8× TPS)。
α 与 c 不是论文直接给出的常数,而是由这两组数反推的等效值 推断:前者由 1+α+α²+α³=3.50 解出 α≈0.912(由 Table S2 反推),后者由 3.50/3.05−1 得到 c≈0.148(由 Table S2 反推);DeepSeek-V3 预设用 α=0.875、c≈0.0417。
模拟器只算上面的几何模型,不是对论文实现的逐行还原。
这是简化模型:α 被视为各位置相同的常数,c 被视为常数,且假设一次 draft pass 覆盖所有 head、验证 forward 可以并行处理 k 个位置。 未覆盖 batch size、硬件并行效率、tree attention、验证开销、逐位置 α 差异和 greedy/随机采样的差异。
简化模型:假设 k 个 head 的逐位接受率都是 α 且相互独立,draft pass 成本 c 为常数,目标模型一次 forward 可以并行验证所有候选。这个模型只对应上面的几何公式,不是对论文实现的逐行还原。
算例 A:k=4,α=0.90,c=0.15。
E = 1 + 0.90 + 0.90² + 0.90³ = 1 + 0.90 + 0.81 + 0.729 = 3.4390
S = 3.4390 / (1 + 0.15) = 3.4390 / 1.15 = 2.9904
页面显示:E = 3.4390,S = 2.9904。
算例 B:k=2,α=0.85,c=0.05。
E = 1 + 0.85 = 1.8500
S = 1.8500 / (1 + 0.05) = 1.8500 / 1.05 = 1.7619
页面显示:E = 1.8500,S = 1.7619。
JS 与手算同口径:E 用 (1 − αk)/(1 − α),S 用 E/(1+c),只在显示时用 toFixed(4) 四舍五入;中间值不取整。
未覆盖:batch size、硬件、tree attention、验证开销、逐位置 α 不同、draft 与 target 的分布差异、greedy 与随机采样的差异;也未建模 DeepSeek-V3 的 rejection sampler 细节。α 是特定任务上的等效值,不是通用常数。
读完这节你应该知道:两种 MTP 的数据流,以及 MTP 与 Medusa/EAGLE 在系统里的位置。
图的上半部分是两种训练排布:左边并行 head 都读同一个 trunk 表示,右边顺序链把上一个深度的 hidden state 和偏移 token 的 embedding 拼起来。 下半部分是推理的两条路:只用 next-token head,或把 heads 当 draft 做自投机。两条路的共同点是额外 head 都不参与参数更新之外的事情;区别是第二条路多了一次验证 forward 和接受/拒绝逻辑。
对照表 · 四条路线的位置(依据:Gloeckle §2;DeepSeek-V3 §2.2;Medusa §1、§2.3.1、§3;EAGLE §1、§3)。本表是页面整理,不是原文表号。
| 路线 | 预测什么、怎么排 | 参数与共享 | 训练 / 推理 | 输出保证与备注 |
|---|---|---|---|---|
| MTP · Gloeckle | 同一位置并行预测未来 n 个 token;n 个独立 head | 共享 trunk;共享 unembedding;每个 head 一个 transformer 层 | 预训练目标;推理可只用 next-token head,或用 heads 做 greedy 自投机 | 训练收益不依赖推理复用;参数对齐靠把 n−1 层从 trunk 移到 heads(§2、§3) |
| MTP · DeepSeek-V3 | 顺序预测 D 个额外 token,保留每个 depth 的完整因果链 | 共享 embedding 与 output head;每个 depth 一个 TRM_k 与 M_k | 预训练目标;推理丢弃 MTP,或复用做投机解码 | D=1;正常推理成本与不带 MTP 的模型相同(§2.2、§4.2、§4.5.1) |
| Medusa | 在冻结主干上加多个解码头,并行预测多个未来 token;树注意力验证 | Medusa-1 冻结主干;Medusa-2 联合微调;heads 参数高效 | 推理加速插件 | typical acceptance 不要求与目标分布逐点一致;可用拒绝采样但加速比不同(§1;定义见 §2.3.1,实验见 §3.3.2) |
| EAGLE | 在 second-to-top 特征层自回归,输入 token 序列前移一步;树 draft | draft head 读目标模型 hidden states | 推理加速插件 | 仍在 speculative sampling 框架内,改变 draft 侧而非训练目标(§1、§3) |
把三者放在一张图里时,最容易混淆的是“都有多个预测头”。区别在训练图:MTP 的 head 参与预训练 loss,主干和 head 一起从数据里学;Medusa 的 head 是在已有主干上做参数高效微调;EAGLE 的 draft head 读目标模型 hidden states,目标模型通常冻结。 所以 MTP 的 3.0× 和 Medusa 的 2.18× 不是同一张表上的排名,模型、数据、硬件、batch size 都不同,不能直接横比。
读完这节你应该知道:Table 1/Table 4 的具体数字、n 的选择,以及哪些指标回退。
先看 7B、200B tokens(0.8 epochs)、32k 词表的代码模型。Table 1 的 200B tokens 部分比较 n=1、2、4、6、8,指标是 MBPP、HumanEval、APPS/Intro 的 pass@1/10/100。每问题用 200 个样本,温度为按测试集选的 oracle 温度(Table 1)。
Table 1(Gloeckle et al. v1,节选:200B tokens / 32k 词表):7B 参数、200B tokens(0.8 epochs)、32k 词表;每问题 200 个样本,pass@k 用 Chen et al. 的估计器;温度为按测试集选的 oracle 温度。313B bytes(0.5 epochs,n=1/8/16/32)与 1T tokens(4 epochs,n=1/4)两部分未转录(本页未使用)。高亮 n=4 表示这一 200B tokens 块内 MBPP/HumanEval 六项最高,APPS/Intro 的 n=6 见正文。
| n | MBPP @1 | MBPP @10 | MBPP @100 | HumanEval @1 | HumanEval @10 | HumanEval @100 | APPS/Intro @1 | APPS/Intro @10 | APPS/Intro @100 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 30.0 | 53.8 | 73.7 | 22.8 | 36.4 | 62.0 | 2.8 | 7.8 | 17.4 |
| 2 | 30.3 | 55.1 | 76.2 | 22.2 | 38.5 | 62.6 | 2.1 | 9.0 | 21.7 |
| 4 | 33.8 | 55.9 | 76.9 | 24.0 | 40.1 | 66.1 | 1.6 | 7.1 | 19.9 |
| 6 | 31.9 | 53.9 | 73.1 | 20.6 | 38.4 | 63.9 | 3.5 | 10.8 | 22.7 |
| 8 | 30.7 | 52.2 | 73.4 | 20.0 | 36.6 | 59.6 | 3.5 | 10.4 | 22.1 |
n=4 在 MBPP 和 HumanEval 的六个指标里都高于 n=1:MBPP +3.8 个百分点(33.8 − 30.0)、+2.1(55.9 − 53.8)、+3.2(76.9 − 73.7);HumanEval +1.2(24.0 − 22.8)、+3.7(40.1 − 36.4)、+4.1(66.1 − 62.0)。 §3.4 原文用「+3.8%」这类写法描述这组差;按 Table 1 的表值,它们是百分点差,页面按点差标注。
n 不是越大越好,也不是固定为 4。APPS/Intro 上 n=6 的 @10/@100 最高,@1 与 n=8 并列 3.5:相对 n=1 是 +0.7(3.5 − 2.8)、+3.0(10.8 − 7.8)、+5.3(22.7 − 17.4)个百分点。论文在 §3.4 说,最优窗口很可能取决于输入数据分布;byte-level 模型的窗口则更稳定。
规模趋势是另一条轴。论文训练了 6 个规模、从 300M 到 13B 参数,每个至少 91B tokens 的代码模型;Figure 3 的结论是:小模型上 MTP 不如 baseline,大模型上反超。Figure 3 的 caption 原话是「worse than the baseline for small model sizes, but outperform the baseline at scale」,所以这条收益不是所有规模都成立。
7B、200B tokens 自然语言模型上,2-token 在 6 个标准 NLP benchmark 上与 next-token baseline 持平,4-token 略回退;Figure 5 的 caption 说更大的模型可能需要才能看到提升。摘要任务上,Figure 6 报告八个摘要基准的平均 ROUGE-L F1:n=2 和 n=4 在 200B 与 500B tokens 两个训练集大小上都高于 baseline,但数据越多,差距越小;个别数据集存在回退(Appendix H)。 GSM8K 更不稳定:200B tokens 时 n=2 高于 baseline,500B tokens 后模式反转,n=4 在整个区间都更差(Appendix I)。
DeepSeek-V3 在两个规模上做消融:Small MoE 是 15.7B 总参数 / 2.4B 激活参数、1.33T tokens;Large MoE 是 228.7B / 20.9B、540B tokens。两组的推理成本相同,因为推理时丢弃 MTP 模块(§4.5.1)。
Table 4(DeepSeek-V3 v2,评测行全表转录):Small MoE = 15.7B total / 2.4B activated,1.33T tokens;Large MoE = 228.7B total / 20.9B activated,540B tokens(3 个 metadata 行在此汇总,未进表);推理时丢弃 MTP,所以 Baseline 与 w/ MTP 的推理成本相同(§4.5.1)。高亮 HumanEval/GSM8K 是页面标出的代码/数学代表行。
| Benchmark (Metric) | # Shots | Small Baseline | Small w/ MTP | Large Baseline | Large w/ MTP |
|---|---|---|---|---|---|
| Pile-test (BPB) | - | 0.729 | 0.729 | 0.658 | 0.657 |
| BBH (EM) | 3 | 39.0 | 41.4 | 70.0 | 70.7 |
| MMLU (EM) | 5 | 50.0 | 53.3 | 67.5 | 66.6 |
| DROP (F1) | 1 | 39.2 | 41.3 | 68.5 | 70.6 |
| TriviaQA (EM) | 5 | 56.9 | 57.7 | 67.0 | 67.3 |
| NaturalQuestions (EM) | 5 | 22.7 | 22.3 | 27.2 | 28.5 |
| HumanEval (Pass@1) | 0 | 20.7 | 26.8 | 44.5 | 53.7 |
| MBPP (Pass@1) | 3 | 35.8 | 36.8 | 61.6 | 62.2 |
| GSM8K (EM) | 8 | 25.4 | 31.4 | 72.3 | 74.0 |
| MATH (EM) | 4 | 10.7 | 12.6 | 38.6 | 39.8 |
最醒目的是代码:Small MoE 的 HumanEval 从 20.7 到 26.8(+6.1 个百分点),Large MoE 从 44.5 到 53.7(+9.2 个百分点);GSM8K 在 Small MoE 从 25.4 到 31.4(+6.0),Large MoE 从 72.3 到 74.0(+1.7)。但不是全线涨:MMLU 小模型从 50.0 到 53.3(+3.3),大模型却从 67.5 降到 66.6(−0.9);NaturalQuestions 小模型从 22.7 降到 22.3(−0.4);Pile-test 大模型只从 0.658 到 0.657(Table 4)。
Gloeckle et al. 在 7B 模型上测了 greedy self-speculative decoding。Table S2 报告 Wikipedia、Books、Code 三个 prompt 集,使用 1–4 个 head 的相对加速比与每次 forward 的 token 数;Table S2 的 caption 说,用 k 个 head 时最大加速比就是 k。
Table S2(Appendix A,全表转录):7B 模型;Wikipedia/Books 用 500B tokens 预训练,Code 用 1T tokens;4200 条 512-token 序列,生成 512 tokens;greedy self-speculative decoding;在最大 batch size 42 下评估,作者称加速比在该设置下不随 batch size 变化(Figure S10)。
| # Heads used | Wikipedia 加速比 | Wikipedia tokens/forward | Books 加速比 | Books tokens/forward | Code 加速比 | Code tokens/forward |
|---|---|---|---|---|---|---|
| 1 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| 2 | 1.79 | 1.88 | 1.77 | 1.87 | 1.85 | 1.94 |
| 3 | 2.35 | 2.57 | 2.32 | 2.56 | 2.54 | 2.78 |
| 4 | 2.74 | 3.12 | 2.67 | 3.09 | 3.05 | 3.50 |
Code 上 4 个 head 是 3.05×、3.50 tokens/forward;3 个 head 是 2.54×、2.78;2 个 head 是 1.85×、1.94。 从 2 到 3 再到 4 个 head,加速比的增量在变小,但 tokens/forward 仍在涨;这说明 head 数不是免费的,收益取决于接受率和 draft 成本。论文 §3.2 的正文总结是:代码 3.0×、平均接受 2.5 / 3 个建议,文本 2.7×;8-byte 模型达到 6.4×。
DeepSeek-V3 的推理侧报告更简单:第二 token 的接受率在 85–90% 之间(跨不同生成主题),解码速度达到 1.8× TPS(§5.4.3)。 它没有在 §5.4.3 展开接受/拒绝规则和 tree 结构,所以页面不把它等同于“无损随机采样”的实现;能确认的是论文把它放在 speculative decoding 框架下描述。
Medusa 在 Vicuna-7B 上报告 Medusa-1 2.18×、Medusa-2 2.83×(Table 2);EAGLE 在 LLaMA2-Chat 70B 上报告 2.7–3.5× latency 加速(§1),13B、temperature=0 时是 3.01–3.76×(§4.1)。 这些数字的模型、数据、硬件和 batch size 与 Gloeckle 的 Table S2 不同,不能直接排名;它们说明的是“推理侧 draft 机制”这条路线在不同实现上都能拿到倍数,而不是某个固定加速比。
反直觉点:
读完这节你应该知道:什么时候别用 MTP,以及哪些问题论文没有回答。
Figure 3 的 caption 直接写了两段:MTP 在小模型上比 baseline 差,在大模型上才反超;论文在 §3.1 把这种「只在规模上有效」列为 MTP 过去被忽视的可能原因。 所以“MTP 一定提升下游”不成立;如果你的模型规模落在 Figure 3 的小端,收益可能为负,至少需要自己的消融。
自然语言的结果是混合的:2-token 在 6 个选择题 benchmark 上与 baseline 持平,4-token 略回退(Figure 5);摘要任务八个基准的平均 ROUGE-L F1 在 200B/500B tokens 上都高于 baseline,但差距随数据量缩小,个别数据集有回退(Figure 6、Appendix H);GSM8K 在 200B 时 n=2 更好、500B 后反转,n=4 在整个区间都更差(Appendix I)。 DeepSeek-V3 的 Table 4 也不是全线涨:MMLU 大模型 −0.9 个百分点、NaturalQuestions 小模型 −0.4 个百分点(Table 4)。 推断(依据:Table 4 的点差与 Figure 5 的持平/回退):MTP 更适合“生成式、代码、需要长程规划”的目标,不适合把选择题/似然指标当作主要目标。
§1 的「no train time or memory overhead」是贡献表述;Appendix C 的 Table S5 实测 n=4 为 1.07–1.22×,n=2 为 1.02–1.07×,作者把差异归因于 FSDP 通信/计算 overlap 丢失。
显存侧也一样:顺序前向/反向把峰值从 O(nV+d) 压到 O(V+d),但如果训练框架一次性物化所有 head 的 logits,峰值仍会按 n 增长(§2)。
这两条都不是“模型架构自动解决”的问题,而是实现约束。
Gloeckle et al. 的等参数量做法是加 n−1 个 head 层、从 trunk 减 n−1 层(§3)。这改变了 trunk 的深度;如果直接给 baseline 加 head 而不减 trunk,得到的是更大的模型,不能把增益全部归因于 MTP 目标。 读 Figure 3 和 Table 1 时,要确认比较的是等参数量模型,而不是“MTP 模型更大所以更好”。
n 的选择依赖数据分布(§3.4),论文在 §7 把“自动选择 n”列为未来工作;DeepSeek-V3 只验证了 D=1(§4.2),更深的顺序 MTP 在 671B 规模上没有在这份报告里展开。 推理侧也有边界:Gloeckle §3.2 的实测是 greedy self-speculative decoding,§7 的结论用「exact inference」描述 3 倍加速;随机采样下的接受/拒绝规则,页面没有从原文获取到展开说明。 DeepSeek-V3 §5.4.3 只报告 85–90% 的接受率和 1.8× TPS,没有展开 rejection sampler 的细节。需要无损随机采样时,应回到 speculative decoding 的接受/拒绝规则自行核对,不能只看“1.8×”。
Medusa 的 typical acceptance 不要求输出与目标分布逐点一致(Medusa §2.3.1;实验见 §3.3.2);EAGLE 在 speculative sampling 框架内改变 draft 侧(§1、§3)。MTP 的训练收益不依赖这两者,推理复用也不等于它们:MTP 的 head 是预训练的一部分,Medusa/EAGLE 的 draft 是后加的。 如果目标是“训练一个更强的 base model”,优先看 MTP;如果目标是“在不改训练的情况下给已有模型加速”,优先看 Medusa/EAGLE。两者可以组合,但需要分别验证。
有大规模预训练预算,能接受把 n−1 层从 trunk 移到 head 的等参数量重排,主要目标是代码、推理或长程生成,并且希望推理时保留“自投机”的可选项。推断(依据:Table 4 的点差排序):HumanEval 和 GSM8K 的百分点增益在表内靠前,这与“生成式任务”方向一致。
推断(依据:Figure 3 的小模型趋势、Figure 5 的选择题持平/回退、Table S5 的训练开销):如果模型规模在小端、主要指标是选择题或似然、训练框架不能承受逐 head 的前向/反向调度,MTP 的收益可能覆盖不了成本;此时优先考虑推理侧的 draft 机制或普通 next-token 训练。