EAGLE-3 完全拆解:Training-Time Test 如何解除特征预测的天花板

5774 字
29 分钟
EAGLE-3 完全拆解:Training-Time Test 如何解除特征预测的天花板

EAGLE-3 由北京大学、微软研究院、滑铁卢大学与 Vector Institute 的研究者提出,论文于 2025 年 3 月发布在 arXiv,后续被 NeurIPS 2025 接收。它接在 EAGLE 与 EAGLE-2 之后,解决的是一个更深层的问题:如果草稿模型最终目标是预测 token,为什么还要强迫它回归目标模型的顶层 feature?

前两篇已经分别讲过 EAGLE 与 EAGLE-2。EAGLE 的核心是把草稿从“独立小模型猜 token”改成“轻量头预测目标模型特征,再复用目标模型 LM Head”,可参考 EAGLE 完全拆解:特征级草稿模型如何把投机解码推到 3 倍以上。EAGLE-2 没有改草稿头,而是发现草稿置信度可以近似接受率,于是用动态草稿树把验证预算花在更可能被接受的节点上,可参考 EAGLE-2 完全拆解:动态草稿树如何让投机解码上下文感知。

EAGLE-3 的改动比 EAGLE-2 更靠近草稿模型本身。它去掉 EAGLE 里的 feature prediction loss,把 draft head 的输出从“必须像目标模型某一层 feature”改成“只要能通过 LM Head 预测好 token 即可”;同时不再只取顶层 feature,而是融合目标模型低层、中层、高层 hidden states。问题是,推理时 draft head 会把自己的输出喂回下一步,训练时如果只看目标模型真实 feature,就会出现训练-推理分布不一致。EAGLE-3 用 training-time test 在训练阶段模拟多步草稿过程,让 draft head 提前适应自己的输出。

这篇只把训练作为服务推理的必要机制来讲,重点仍然是推理侧:EAGLE-3 的草稿路径为什么更准、为什么可以继续使用 EAGLE-2 的动态树、为什么在小 batch 低延迟和大 batch serving 中都更有机会带来收益。

EAGLE 的 feature prediction 为什么会遇到天花板#

先回到 EAGLE 的基本路径。设目标模型在当前位置的倒数第二层特征为 ftf_t,采样 token 的 embedding 为 et+1e_{t+1}。EAGLE 的 draft head 近似学习:

f^t+1=D(f≤t,e≤t+1)\hat{f}_{t+1} = D(f_{\le t}, e_{\le t+1})

这里 DD 是轻量 draft head,f^t+1\hat{f}_{t+1} 是预测出的下一步 feature。得到 f^t+1\hat{f}_{t+1} 后,再把它送入目标模型自己的 LM Head:

p^t+2=Softmax(LMHead(f^t+1))\hat{p}_{t+2} = \text{Softmax}(\text{LMHead}(\hat{f}_{t+1}))

这个设计有一个非常漂亮的地方:draft head 不必从零学习“hidden state 到词表分布”的投影,LM Head 已经由目标模型训练好;draft head 只要把 feature 预测到目标模型熟悉的空间里。

但 EAGLE-3 论文指出,这也带来一个约束。EAGLE 的损失通常同时包含 feature 回归和 token 分布对齐:

L=Lfea+wtokenLtokenL = L_{\text{fea}} + w_{\text{token}} L_{\text{token}}

LfeaL_{\text{fea}} 让预测 feature 接近目标模型真实 feature,LtokenL_{\text{token}} 让预测 feature 经过 LM Head 后的 token 分布接近目标分布。问题在于,推理加速真正关心的是 token 是否能被目标模型接受,不是草稿向量在欧氏距离上是否像某一层 feature。feature 回归让 draft head 被迫贴合一个中间表示,这个中间表示对下一 token 很有用,但未必是多步草稿的最佳状态变量。

更具体地说,顶层 feature 离 LM Head 最近,它的语义已经高度服务于“下一个 token 是什么”。如果只预测一步,这很合理;如果希望连续草拟第 2、第 3、第 4 个 token,顶层 feature 的信息就偏短视。下一步 token 的 logits 在顶层 feature 中很充分,但再下一步 token 需要更宽的上下文线索,例如局部词法、句法结构、段落语义和任务模式。低层、中层 feature 反而可能保留更多这种多步信息。

EAGLE-3 论文对比了三种草稿路径:EAGLE 做 feature prediction,去掉 feature 约束后会遇到多步分布漂移,training-time test 则把推理时的自回归反馈放进训练过程。图源:EAGLE-3 论文 Figure 3。
EAGLE-3 论文对比了三种草稿路径:EAGLE 做 feature prediction,去掉 feature 约束后会遇到多步分布漂移,training-time test 则把推理时的自回归反馈放进训练过程。图源:EAGLE-3 论文 Figure 3。

上图来自 EAGLE-3 论文。最上方是 EAGLE:draft head 预测 f^\hat{f},并用 feature loss 把它拉向真实 ff。中间是一个直接去掉 feature 约束的天真版本:第一步 token 接受率会显著提升,因为 draft head 不再背负“向量必须像 feature”的包袱;但第二步开始,draft head 的输入里出现了自己上一轮输出的 a^t+1\hat{a}_{t+1},它和真实 ft+1f_{t+1} 不在同一个分布里,后续接受率会掉得很厉害。最下方才是 EAGLE-3:训练时就模拟“输出喂回输入”的测试过程,减少推理时的分布漂移。

这就是 EAGLE-3 的核心判断:去掉 feature prediction 约束是必要的,但不能裸去。裸去会释放第一步表达能力,同时破坏多步草稿稳定性;training-time test 是把这两个目标同时拿住的办法。

多层特征融合:不要只盯着最后一层#

EAGLE-3 推理阶段仍然依赖目标模型在 prefill 或上一轮 verify 中已经算出的 hidden states。不同的是,它不只取顶层 feature,而是从目标模型选出低层、中层、高层三组表示,分别记为 ltl_t、mtm_t、hth_t。如果目标模型 hidden size 为 kk,三组向量拼接后是 3k3k 维:

zt=[lt;mt;ht]z_t = [l_t; m_t; h_t]

其中 [ ; ][\,;\,] 表示沿 hidden 维拼接。再用一个全连接层把它压回 kk 维,得到融合特征:

gt=Wgzt+bg=Wg[lt;mt;ht]+bgg_t = W_g z_t + b_g = W_g [l_t; m_t; h_t] + b_g

WgW_g 是融合层权重,bgb_g 是偏置,gtg_t 是 EAGLE-3 交给 draft head 的 target-side 状态。这个融合层看起来只是一个 FC,但它改变了 draft head 能看到的信息类型。

低层 hidden state 通常保留更多词形、局部搭配和短距离模式;中层 hidden state 更接近句法和语义组合;高层 hidden state 更直接对齐下一 token 的预测。EAGLE-3 把三者拼起来,相当于给草稿模型一个更厚的“上下文截面”。它不再要求草稿状态必须等于某一层目标模型 feature,只要求这个状态足够帮助 LM Head 或草稿 LM Head 产生更好的 draft logits。

这一步也解释了为什么“去掉 feature loss”与“多层融合”必须配套。如果仍然保留 feature prediction loss,draft head 输出就必须拟合某个目标层的真实 feature,多层融合的自由度会被重新压回那个目标空间。EAGLE-3 去掉 feature 回归以后,输入可以来自多层,输出也可以是更适合 token prediction 的无约束向量 ata_t。

推理流水线:真实融合特征和草稿输出交替出现#

EAGLE-3 的推理可以从一个很短的例子理解。假设当前目标模型已经处理过前缀 “How can”,并在上一轮目标模型 forward 中采样出 token “I”。此时系统有两类信息:

  • 目标模型对历史 token “How”“can” 产生的低中高层 hidden states,可以融合成 gHowg_{\text{How}} 与 gcang_{\text{can}}。
  • 已采样 token “I” 的 embedding,记作 eIe_{\text{I}}。

EAGLE-3 把融合特征和 token embedding 拼接,再经过一个 FC 层与单层 decoder,得到草稿输出 aIa_{\text{I}}:

aI=D(FC([gcan;eI]),context)a_{\text{I}} = D\left( \text{FC}([g_{\text{can}}; e_{\text{I}}]), \text{context} \right)

这里的写法省略了完整序列维,只强调当前位置的输入组成。DD 是 draft decoder,aIa_{\text{I}} 是无约束草稿向量。随后 EAGLE-3 用 LM Head 产生 draft logits:

p^next=Softmax(LMHead(aI))\hat{p}_{\text{next}} = \text{Softmax}(\text{LMHead}(a_{\text{I}}))

从 p^next\hat{p}_{\text{next}} 采样,可能得到下一个 draft token “do”。接下来进入第二个草稿步。理想情况下,系统想用目标模型对 “I” 产生的融合特征 gIg_{\text{I}},但 “I” 还没有经过目标模型验证,目标模型并没有为它算出低中高层 hidden states。因此 EAGLE-3 只能把上一草稿步的输出 aIa_{\text{I}} 当作 gIg_{\text{I}} 的替代,再拼接 “do” 的 embedding edoe_{\text{do}},继续预测 adoa_{\text{do}}。

EAGLE-3 推理流水线:左侧目标模型提供低中高层特征,右侧 draft head 在后续草稿步中用自己的输出替代尚未验证 token 的融合特征。图源:EAGLE-3 论文 Figure 5。
EAGLE-3 推理流水线:左侧目标模型提供低中高层特征,右侧 draft head 在后续草稿步中用自己的输出替代尚未验证 token 的融合特征。图源:EAGLE-3 论文 Figure 5。

这张图是 EAGLE-3 的关键。左侧目标模型只处理已经确认的前缀,因此可以提供真实的 ll、mm、hh。右侧 draft head 在第 1 步还能使用目标模型真实融合特征;从第 2 步开始,后缀 token 尚未被目标模型验证,只能用 draft head 自己产生的 aa 来补位。

这带来一个推理系统里的真实矛盾:

  • 如果训练时只给 draft head 看真实 gg,它第一步会很舒服,但多步推理时会遇到从未见过的 aa。
  • 如果完全让 draft head 自由输出 aa,它不必拟合真实 feature,但必须学会“自己的输出在下一步会变成输入”。

EAGLE-3 的 training-time test 就是围绕这个矛盾设计的。

Training-Time Test:训练时模拟测试,而不是只做 teacher forcing#

普通 teacher forcing 的训练方式是:每个位置都喂真实上下文,让模型预测下一 token。对 EAGLE-3 来说,这相当于 draft head 总是看到目标模型提供的真实融合特征:

g1,g2,…,gtg_1, g_2, \ldots, g_t

但推理时,草稿第 rr 步之后,输入会变成:

g1,g2,…,gt,at+1,at+2,…,at+rg_1, g_2, \ldots, g_t, a_{t+1}, a_{t+2}, \ldots, a_{t+r}

其中 aa 不是目标模型真实 feature,而是 draft head 自己产生的无约束向量。两者分布不同。如果训练从未暴露这种混合序列,草稿越深,输入越偏,接受率越容易坍塌。

EAGLE-3 的 training-time test 做法是:训练阶段不仅做第一步预测,还把第一步预测出的 aa 反馈回 draft head,继续模拟第二步、第三步草稿。这样训练目标直接覆盖推理时会出现的输入形态。可以把它写成一个简化递推:

at+1(1)=D(g≤t,et+1)a_{t+1}^{(1)} = D(g_{\le t}, e_{t+1})at+2(2)=D(g≤t,at+1(1),et+2)a_{t+2}^{(2)} = D(g_{\le t}, a_{t+1}^{(1)}, e_{t+2})at+3(3)=D(g≤t,at+1(1),at+2(2),et+3)a_{t+3}^{(3)} = D(g_{\le t}, a_{t+1}^{(1)}, a_{t+2}^{(2)}, e_{t+3})

上标 (1)(1)、(2)(2)、(3)(3) 表示这是 training-time test 中模拟出的第几轮草稿输出。注意,这些 aa 并不需要回归真实 feature,它们只需要通过 token loss 让 LM Head 给出正确的 token 分布。

EAGLE-3 的 token loss 可以理解为让 draft logits 贴近目标模型 logits。若目标分布为 pt+ip_{t+i},草稿分布为 p^t+i\hat{p}_{t+i},则可写成:

Ltoken=∑iCE(pt+i,p^t+i)L_{\text{token}} = \sum_i \text{CE}(p_{t+i}, \hat{p}_{t+i})

CE\text{CE} 是交叉熵,ii 遍历训练中模拟的多个草稿步。论文与一些工程文档也会用 KL divergence 描述目标 logits 与 draft logits 的对齐,本质上都是让 draft distribution 更接近 verifier distribution。关键变化是:EAGLE-3 不再加 LfeaL_{\text{fea}},也就是不再要求 at+ia_{t+i} 逼近目标模型某层 feature。

训练时的 attention mask 为什么要特殊处理#

training-time test 不是简单把模型滚几步就结束。因为 draft head 的核心是 Transformer decoder layer,decoder 的 self-attention 必须看到合法上下文,不能偷看未来答案,也不能让互斥草稿分支互相泄漏信息。

以论文里的 “How can I” 为例。第一轮原生训练中,三个位置 “How”“can”“I” 之间是正常 causal 关系,所以 attention mask 是标准下三角。第一轮输出可能分别预测出 “are”“we”“do”。这些输出不是一条普通序列,而是从不同位置出发的第一轮预测:它们与原始 token 有各自的父子关系。

第二轮把 “are”“we”“do” 作为输入继续模拟时,mask 就不能仍然当成普通连续文本。比如从 “How” 位置预测出的 “are” 不应该随便看见从 “can” 位置预测出的 “we”,否则训练阶段会把互不属于同一自回归路径的信息混进去。EAGLE-3 因此构造了类似树状关系的 mask,让每个模拟 token 只看见自己的合法祖先。

EAGLE-3 的 training-time test attention mask:第一步是原始训练 token,第二、三步是草稿输出反馈后的模拟 token,mask 按上下文关系而不是线性位置构造。图源:EAGLE-3 论文 Figure 6。
EAGLE-3 的 training-time test attention mask:第一步是原始训练 token,第二、三步是草稿输出反馈后的模拟 token,mask 按上下文关系而不是线性位置构造。图源:EAGLE-3 论文 Figure 6。

这张图有一个工程上很重要的细节:除了对原始训练数据作为 key 的部分,模拟步之间的 mask 很稀疏,很多关系是对角或局部父子关系。论文指出,如果直接用大矩阵乘法计算所有无效 attention score,会浪费计算;可以只对对应位置做向量点积。这里和 EAGLE-2 的 tree attention 是同一种思想:树状草稿最终必须落到 GPU 张量和 attention mask 上,mask 写错会破坏条件分布,mask 写得太粗会浪费计算。

EAGLE-3 和 EAGLE-2 动态树如何拼在一起#

EAGLE-3 并没有抛弃 EAGLE-2 的动态草稿树。更准确地说,EAGLE-2 解决“树怎么长”,EAGLE-3 解决“每个节点的草稿分布怎么更准”。两者作用在不同层面,因此可以叠加。

EAGLE-2 给每个草稿节点定义路径价值:

Vi≈∏tj∈Path(root,ti)cjV_i \approx \prod_{t_j \in \text{Path}(\text{root}, t_i)} c_j

cjc_j 是 draft model 对路径上第 jj 个候选 token 的置信度,ViV_i 近似表示节点 tit_i 被走到并被接受的概率。EAGLE-2 用这个值决定扩展哪些节点、最终验证哪些节点。

EAGLE-3 提高的是 cjc_j 的质量。草稿模型更接近目标模型,置信度也更有希望反映真实接受概率;同时多步输入分布更稳定,深层节点不会因为吃到自己的输出就快速退化。这样动态树可以放心把树深从 EAGLE-2 的 6 提到 8,而总节点数保持相近。论文附录给出的设置是:EAGLE-2 对 7B/8B、13B、70B 目标模型分别使用 60、50、48 个 draft token、树深 6、扩展阶段选 10 个节点;EAGLE-3 因为接受率更高,把 draft tree depth 从 6 增加到 8,节点数仍按 EAGLE-2 设置。

这说明 EAGLE-3 的收益不是“验证更多无效 token”。它的目标是让同样数量的验证预算覆盖更长、更可能被接受的路径。对投机解码来说,这一点比单纯扩大树更重要。树越大,目标模型 verify 的 token 计算越多;如果接受长度不随之上升,延迟反而可能变差。

接受率曲线:为什么 training-time test 真正修了多步退化#

EAGLE-3 论文用 nn-α\alpha 表示当输入中包含 nn 个估计特征时的接受率。对 EAGLE 来说,输入可能是:

f1,f2,…,fi,f^i+1,…,f^i+nf_1, f_2, \ldots, f_i, \hat{f}_{i+1}, \ldots, \hat{f}_{i+n}

其中 ff 是目标模型真实 feature,f^\hat{f} 是草稿模型估计 feature。nn 越大,说明草稿越深、输入里估计值越多。对 EAGLE-3 来说,对应输入是:

g1,g2,…,gi,ai+1,…,ai+ng_1, g_2, \ldots, g_i, a_{i+1}, \ldots, a_{i+n}

gg 是目标模型多层融合特征,aa 是 draft head 自己输出的无约束向量。若 training-time test 有效,那么 nn 增大时接受率不应该快速崩掉。

EAGLE 与 EAGLE-3 在 MT-bench 上的多步接受率对比:EAGLE 随估计输入增多快速下降,EAGLE-3 更稳定。图源:EAGLE-3 论文 Figure 7。
EAGLE 与 EAGLE-3 在 MT-bench 上的多步接受率对比:EAGLE 随估计输入增多快速下降,EAGLE-3 更稳定。图源:EAGLE-3 论文 Figure 7。

图里最值得看的不是某一个柱子的绝对值,而是斜率。EAGLE 的接受率随着 nn 增大明显下降,说明 feature prediction 的误差会沿草稿步数累积。EAGLE-3 的曲线更平,说明 training-time test 让 draft head 对自己的输出有了免疫力。这个性质直接决定树能不能长深:如果第 3、第 4 步的草稿质量快速坍塌,动态树再聪明也只能在浅层打转。

速度结果怎么读:不要只盯最高 6.5 倍#

EAGLE-3 论文在 Vicuna 13B、LLaMA-Instruct 3.1 8B、LLaMA-Instruct 3.3 70B、DeepSeek-R1-Distill-LLaMA 8B 上评测,任务包括 MT-bench、HumanEval、GSM8K、Alpaca 和 CNN/Daily Mail。论文摘要给出的核心结果是:EAGLE-3 相比普通自回归生成达到约 3.0 到 6.5 倍速度提升,相比 EAGLE-2 约有 20% 到 40% 改进;在 SGLang 中,batch size 64 下吞吐提升约 1.38 倍。

EAGLE-3 在 temperature=0 设置下的速度对比,覆盖聊天模型与推理模型。图源:EAGLE-3 论文 Figure 2。
EAGLE-3 在 temperature=0 设置下的速度对比,覆盖聊天模型与推理模型。图源:EAGLE-3 论文 Figure 2。

更细地看,论文 Table 1 把 speedup 与平均接受长度 τ\tau 放在一起。τ\tau 是一轮 draft-verify 平均能生成多少 token。它比 wall-clock speedup 更接近算法本身,因为 wall-clock 还受 GPU、batch、KV 管理、kernel 实现影响。

几个代表性数字如下:

模型与设置任务EAGLE-2 speedup / τ\tauEAGLE-3 speedup / τ\tau
Vicuna 13B, temperature=0MT-bench4.26x / 4.835.58x / 6.65
Vicuna 13B, temperature=0HumanEval4.96x / 5.416.47x / 7.54
LLaMA 3.1 8B, temperature=0MT-bench3.16x / 4.054.40x / 6.13
LLaMA 3.3 70B, temperature=1GSM8K2.52x / 3.364.17x / 5.95
DeepSeek-R1-Distill-LLaMA 8B, temperature=1GSM8K3.16x / 4.054.38x / 6.10

这些数字有三层含义。

第一,EAGLE-3 的收益主要来自接受长度变长,而不是每个 token 变得魔法般便宜。投机解码的基本近似仍然是:

S≈τTtargetTdraft+TverifyS \approx \frac{\tau T_{\text{target}}} {T_{\text{draft}} + T_{\text{verify}}}

SS 是速度提升,TtargetT_{\text{target}} 是目标模型普通自回归生成一个 token 的时间,TdraftT_{\text{draft}} 是一轮草稿开销,TverifyT_{\text{verify}} 是一轮目标模型验证开销。EAGLE-3 把 τ\tau 从 4 左右推到 6 左右,分子变大;draft head 仍然很轻,分母没有等比例膨胀。

第二,任务分布很重要。HumanEval 这类代码任务模板性强、局部分布尖锐,draft head 容易猜中,接受长度高;开放聊天或摘要任务分布更散,收益会收窄。DeepSeek-R1-Distill-LLaMA 8B 在 GSM8K 上表现突出,论文解释为该 draft model 额外用了 OpenThoughts-114k-math 数据训练,因此数学任务草稿更贴近目标模型。

第三,temperature=1 下仍然有收益。很多投机方法在 greedy decoding 下容易好看,但非贪婪采样时若放宽接受条件,就可能不再保证无损。EAGLE-3 仍使用标准 speculative sampling 验证规则,所以它的“无损”指输出分布与目标模型一致,而不是具体采样文本逐字相同。

数据规模为什么在 EAGLE-3 上重新变得有用#

EAGLE-3 论文标题里的 “Scaling up Inference Acceleration” 指的不是把目标模型做大,而是增加 draft model 的训练数据后,推理加速继续提高。论文观察到,EAGLE 原始架构在扩大数据时收益有限;EAGLE-3 去掉 feature prediction constraint 后,数据规模和 speedup / acceptance length 的曲线重新变得向上。

EAGLE-3 的 scaling law:横轴是相对 ShareGPT 的数据规模,纵轴分别是 speedup 与平均接受长度。图源:EAGLE-3 论文 Figure 1。
EAGLE-3 的 scaling law:横轴是相对 ShareGPT 的数据规模,纵轴分别是 speedup 与平均接受长度。图源:EAGLE-3 论文 Figure 1。

原因可以从约束角度理解。EAGLE 的 draft head 一边要学 token,一边要学目标 feature 几何。数据变多时,token prediction 可能还想继续提升,但 feature regression 把可表达空间绑住了。EAGLE-3 把目标改成“产生更容易被目标模型接受的 token 分布”,多层 feature 输入又给它更多上下文信号,因此更多数据能更直接地转化为接受率。

这并不意味着 EAGLE-3 的数据扩展没有边界。draft head 很小,容量仍然有限;目标模型和 draft model 的数据分布如果偏移太大,接受率仍会受影响;服务端还要考虑 draft head 训练成本、不同 target model 是否需要专门 speculator、上线时是否有足够稳定的 chat template 与 tokenizer 配置。EAGLE-3 只是把原先 feature prediction 造成的一个明显瓶颈拆掉了。

服务系统里的收益和代价#

从系统角度看,EAGLE-3 仍然是典型的“用额外计算换少跑目标模型自回归步数”。它最容易带来收益的场景有三个。

第一个场景是小 batch 低延迟。decode 阶段经常受权重访存限制,目标模型每次 forward 只能确认一个 token 时,GPU 算力没有被充分利用。EAGLE-3 用 draft head 多猜几个 token,再让目标模型一次验证,能把多 token 计算并到同一轮 forward 里。

第二个场景是分布尖锐的任务。代码、结构化输出、固定格式推理步骤、模板化问答都更容易让 draft model 命中。论文里 HumanEval 的 τ\tau 最高能到 7.54,就是这个现象。

第三个场景是目标模型很贵而 draft head 很轻。目标模型越大,普通 decode 的每 token 成本越高,draft head 与调度开销越容易被摊薄。EAGLE-3 在 LLaMA 3.3 70B 上的收益明显,符合这个直觉。

但它也有代价。首先,draft head 是 target-specific 的。EAGLE 官方仓库也提醒,最好用官方 checkpoint 和官方 draft tree 设置比较;非官方 speculator 的效果会随训练数据、目标模型、chat template 变化。其次,tree verification 会增加单轮 verify token 数,在高并发服务中会占用 batch token budget。再次,目标模型需要暴露指定层 hidden states,这对 serving 框架有侵入:框架要能在 target forward 中取低中高层状态,把它们传给 speculator,并维护草稿 token 与验证 token 的 KV 状态。

这也是为什么 EAGLE-3 的工程落地往往和 serving 框架一起看。SafeAILab 的官方仓库列出了 EAGLE 已被多种主流 serving 框架支持;vLLM speculators 文档把 Eagle-3 描述为轻量 draft model 自回归预测多个 token,再由目标模型一次 forward 验证;llama.cpp 也提供了 draft-eagle3,其文档强调 EAGLE-3 draft model 会读取目标模型 hidden states,通常是一层 transformer,并为特定目标模型训练。

与 EAGLE 3.1 的关系#

截至 2026 年 9 月,EAGLE 系列已经继续演进到 EAGLE 3.1。vLLM 官方博客在 2026 年 5 月介绍了 EAGLE 3.1:它主要针对 EAGLE-3 在不同 chat template、长上下文和分布外 system prompt 下的鲁棒性问题,加入 FC normalization 与 post-norm hidden-state feedback。博客把问题归因到 attention drift:speculation depth 加深时,drafter 的注意力会逐渐从 sink tokens 偏向自己生成的 token。

这不改变 EAGLE-3 的基础地位。可以把 EAGLE-3 看成“从 feature prediction 走向无约束 token prediction + 多层特征融合 + training-time test”的主架构;EAGLE 3.1 是在这个架构上继续修部署稳定性。理解 EAGLE-3 后,EAGLE 3.1 的 FC normalization 和 post-norm feedback 就很好理解:它们不是换掉投机解码框架,而是让多步自反馈更稳定。

小结#

EAGLE-3 的关键不是“又把树调大了”,而是重新定义了草稿模型该学什么。EAGLE 用 feature prediction 把草稿头牢牢绑在目标模型顶层 feature 空间里,这让第一代 EAGLE 很优雅,也让它在扩大数据和加深草稿时遇到约束。EAGLE-3 则把约束拆开:输入侧融合低层、中层、高层 hidden states,输出侧不再回归目标 feature,而是直接优化 token 分布;为了避免多步推理时吃到自己输出导致分布漂移,再用 training-time test 把测试时的自反馈提前搬进训练过程。

放到投机解码系统里看,EAGLE-3 与 EAGLE-2 是互补关系。EAGLE-2 用动态树决定验证预算怎么花,EAGLE-3 让每个候选节点更值得被花预算。最终收益体现在更长的平均接受长度、更稳定的深层草稿,以及在 SGLang、vLLM、llama.cpp 这类推理框架里更可落地的 speculator 路径。

参考资料#

  1. EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test
  2. EAGLE 官方 GitHub 仓库
  3. EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty
  4. EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees
  5. vLLM Speculators 文档:Eagle-3
  6. llama.cpp 文档:Speculative decoding 与 EAGLE-3
  7. vLLM Blog:EAGLE 3.1
  8. Fast Inference from Transformers via Speculative Decoding
  9. Accelerating Large Language Model Decoding with Speculative Sampling

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

EAGLE-3 完全拆解:Training-Time Test 如何解除特征预测的天花板
https://pinghaoyang.com.cn/aigc/posts/eagle3-training-time-test/
作者
平昊阳
发布于
2026-09-25
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
平昊阳
乘长风,破巨浪, 展鸿图于未央!
--
总访问量
--
访客数
公告
欢迎来到我的个人博客!欢迎关注交流吖!
更多相关公告,见
「社交-留言」。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
站点统计
文章
216
分类
26
标签
294
总字数
2,452,012
运行时长
0 天
最后活动
0 天前

文章目录

你打开了观测窗口。
这里有代码、风和一点萤火;请温柔调试,别惊动生产环境。