MTP
LLM 预训练 · 多 token 预测 · 2024

MTP:一次预测未来 n 个 token,训练更强,推理还能自投机

自回归训练在每个位置只监督一个 token,信号稀,而且 teacher forcing 的局部目标与推理时的多步生成错位。 MTP 让每个位置同时预测未来 n 个 token:Gloeckle et al. 用共享 trunk 加独立 head,DeepSeek-V3 用顺序因果链且只多预测一个 token。 训练收益在代码任务上最明显;推理时这些 head 可以丢掉,也可以拿来做自投机解码。

Gloeckle et al. · DeepSeek-V3 · Medusa · EAGLE MTP v1 ↗ DeepSeek-V3 v2 ↗ · code ↗ Medusa v2 ↗ · code ↗ EAGLE v2 ↗ · code ↗
TL;DR · 30 秒抓住核心

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 不在同一层。

3.0×
7B / 4-token / greedy 自投机 / 代码;平均接受 2.5 / 3 个建议
+9.2pp
DeepSeek-V3 大 MoE / HumanEval;53.7 − 44.5
1.8×
DeepSeek-V3 MTP 投机解码 TPS;第二 token 接受率 85–90%
01

每个位置只学一个 token,训练信号稀,且与自回归生成错位

读完这节你应该知道: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,推理时可以不用

MTP 把额外 head 写进预训练目标;训练完成后,最基本的使用方式仍然是只用 next-token head(§2)。 因此它和 speculative decoding 不是互斥关系:MTP 提供了一种“自带 draft”的可能,但不启用自投机时,额外 head 可以被丢弃。 这也解释了为什么页面的前半段在讲训练目标,后半段才谈推理加速。

要让这个想法可用,至少有三个约束:训练时间不能线性增长、参数量要能和 baseline 对齐、推理时如果不能加速也不能变慢。后面的「训练与推理」一节会逐条对账。

02

前人试过多 token 预测,但要么复制残差流,要么只做推理微调

读完这节你应该知道:Qi et al.、Stern、Medusa、EAGLE 各自做到哪一步,MTP 的空白在哪里。

先验 A

Qi et al. 2020:多 token 预测,但残差流复制 n 份

Qi et al. 认为多 token 预测能鼓励规划、改善表示,并减少 teacher forcing 对局部模式的过拟合。但他们的实现把 residual stream 复制 n 份;Gloeckle et al. 在 §6 的对比里指出,这种做法难以做等计算量比较,残差表示参与辅助 loss 的方式也不同。

先验 B

Stern et al. 2018:推理侧多 head,不是预训练损失

blockwise parallel decoding 用多个 head 一次提出多个 token,再用目标模型验证;它关注的是解码加速,通常是在已有模型上做微调。Gloeckle et al. §6 把这类工作归为“为推理而做的多 token 预测”,没有研究把它作为预训练目标的效果。

推理侧对照 A

Medusa:冻结主干,加头做树验证

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),所以不是无损采样的同义词。

推理侧对照 B

EAGLE:在特征层做 draft

EAGLE 不在 token 层自回归,而是在目标模型倒数第二层特征上自回归,并把 token 序列前移一步来降低特征预测的不确定性;draft 树用 tree attention 验证(§1、§3)。它仍属于 speculative sampling 框架,改变的是“草稿怎么来”,不是预训练目标。LLaMA2-Chat 70B 上报告 2.7–3.5× latency 加速(§1)。

MTP 的空白

把多 token 预测作为大规模预训练目标,并做等参数量比较

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),但组合不等于同一件事。

03

共享 trunk + n 个预测头;DeepSeek-V3 改成顺序因果链,只多预测一个 token

读完这节你应该知道:两个实现的公式、参数怎么对齐,以及为什么 head 的前向/反向顺序会影响显存。

Gloeckle et al.:并行独立 head,共享 unembedding

设共享 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 深度。

显存:naive 实现物化 n 份 logits,顺序前向/反向把它压回一份

词表大小 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:顺序因果链,D=1,共享 embedding 与 output head

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)。这不是显式的损失重加权,而是多偏移目标叠加后的隐式效果。

Appendix B 的其他排布:causal / anticausal / linear 没有一致胜出

除了并行独立 head,论文还试了三种排布:causal,后面的 head 叠在前面的 head 上;anticausal,先预测最远的 token,再逐步细化到近处;linear head,用单个线性层代替 transformer 层。 Appendix B 称三种变体相对 parallel「showed no significant improvement」;页面只引用这个结论,不展开表内数字。作者的大规模实验采用 parallel。

04

训练开销最高约两成;推理可以零成本丢掉 MTP 头

读完这节你应该知道:显存怎么压、训练时间与「无开销」说法怎么并列、推理侧的自投机加速怎么算。

参数与训练时间:等参数量不是零开销

等参数量比较把 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。 模拟器只算上面的几何模型,不是对论文实现的逐行还原。

heads k
4
accept α
0.912
cost c
0.1480
E[token]
3.5023
每步期望 token 数(由 Table S2 反推)
3.5023 tokens / 次 forward
理论 walltime 加速比(由 Table S2 反推)
3.0508×
盈亏平衡 c = 2.5023;当前 c = 0.1480(S > 1)

这是简化模型:α 被视为各位置相同的常数,c 被视为常数,且假设一次 draft pass 覆盖所有 head、验证 forward 可以并行处理 k 个位置。 未覆盖 batch size、硬件并行效率、tree attention、验证开销、逐位置 α 差异和 greedy/随机采样的差异。

手算两组:k、α、c 如何变成 E 与 S 结果保留 4 位小数

简化模型:假设 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 细节。α 是特定任务上的等效值,不是通用常数。

05

训练时并行或顺序加头,推理时先丢后验或直接自投机

读完这节你应该知道:两种 MTP 的数据流,以及 MTP 与 Medusa/EAGLE 在系统里的位置。

1 · 训练:Gloeckle 并行头 x₁ … x_t 已观测上下文 shared trunk f_s 每个位置前向一次 head 1 → x(t+1) head 2 → x(t+2) head n → x(t+n) shared f_u unembedding 所有 head 共享 unembedding;loss 是 n 个偏移的 cross-entropy 之和 2 · 训练:DeepSeek-V3 顺序链(D=1) h(k−1)_i Emb(t(i+k)) concat → M_k TRM_k h(k)_i OutHead shared 每个 depth 保留完整因果链:h(k−1) + Emb(t(i+k)) → h(k);沿虚线进入下一 depth 3 · 推理:两条路 只用 head 1 next token 丢弃 heads 2..n;推理成本不变 heads 1..k draft verify 1 forward accept / reject E = (1 − α^k) / (1 − α) tokens / step;S = E / (1 + c)
图 1 · 按 Gloeckle §2 与 DeepSeek-V3 §2.2 重绘,不是论文原图;推理侧只画 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 与 Medusa/EAGLE 不是替代关系

把三者放在一张图里时,最容易混淆的是“都有多个预测头”。区别在训练图:MTP 的 head 参与预训练 loss,主干和 head 一起从数据里学;Medusa 的 head 是在已有主干上做参数高效微调;EAGLE 的 draft head 读目标模型 hidden states,目标模型通常冻结。 所以 MTP 的 3.0× 和 Medusa 的 2.18× 不是同一张表上的排名,模型、数据、硬件、batch size 都不同,不能直接横比。

06

代码任务获益更明显,自然语言和选择题不一定;DeepSeek-V3 的 MTP 也不是全线涨

读完这节你应该知道:Table 1/Table 4 的具体数字、n 的选择,以及哪些指标回退。

Gloeckle et al.:7B 代码模型上的 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 见正文。

nMBPP @1MBPP @10MBPP @100HumanEval @1HumanEval @10HumanEval @100APPS/Intro @1APPS/Intro @10APPS/Intro @100
130.053.873.722.836.462.02.87.817.4
230.355.176.222.238.562.62.19.021.7
433.855.976.924.040.166.11.67.119.9
631.953.973.120.638.463.93.510.822.7
830.752.273.420.036.659.63.510.422.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」,所以这条收益不是所有规模都成立。

自然语言:2-token 持平,4-token 在选择题上回退

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:大 MoE 上的 MTP 消融

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)# ShotsSmall BaselineSmall w/ MTPLarge BaselineLarge w/ MTP
Pile-test (BPB)-0.7290.7290.6580.657
BBH (EM)339.041.470.070.7
MMLU (EM)550.053.367.566.6
DROP (F1)139.241.368.570.6
TriviaQA (EM)556.957.767.067.3
NaturalQuestions (EM)522.722.327.228.5
HumanEval (Pass@1)020.726.844.553.7
MBPP (Pass@1)335.836.861.662.2
GSM8K (EM)825.431.472.374.0
MATH (EM)410.712.638.639.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)。

自投机:head 越多,tokens/forward 越高,但收益递减

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 usedWikipedia 加速比Wikipedia tokens/forwardBooks 加速比Books tokens/forwardCode 加速比Code tokens/forward
11.001.001.001.001.001.00
21.791.881.771.871.851.94
32.352.572.322.562.542.78
42.743.122.673.093.053.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 与 EAGLE

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 机制”这条路线在不同实现上都能拿到倍数,而不是某个固定加速比。

反直觉点:

07

MTP 不是通用增益:小模型、选择题和部分语言任务会回退

读完这节你应该知道:什么时候别用 MTP,以及哪些问题论文没有回答。

规模:小模型上可能更差

Figure 3 的 caption 直接写了两段:MTP 在小模型上比 baseline 差,在大模型上才反超;论文在 §3.1 把这种「只在规模上有效」列为 MTP 过去被忽视的可能原因。 所以“MTP 一定提升下游”不成立;如果你的模型规模落在 Figure 3 的小端,收益可能为负,至少需要自己的消融。

任务:选择题、GSM8K 和部分语言任务会回退

自然语言的结果是混合的: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 更适合“生成式、代码、需要长程规划”的目标,不适合把选择题/似然指标当作主要目标。

训练开销:实现依赖,且 naive 显存会按 n 增长

§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 与推理规则:论文没有给出通用答案

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/EAGLE 的边界

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 训练。