论文:

  • EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty (ICML 2024)
  • EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees (EMNLP 2024)
  • EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test (2025)

作者: Yuhui Li, Fangyun Wei, Chao Zhang, Hongyang Zhang
机构: 北京大学 / Microsoft Research / University of Waterloo / Vector Institute
代码: github.com/SafeAILab/EAGLE

一句话总结: EAGLE 系列通过在特征层自回归+树状草稿+动态剪枝,在不改变输出分布的前提下,把 LLM 推理从 2.7x 一路加速到 6.5x——三代演进,每一代都精准解决上一代的瓶颈。

一、EAGLE 想解决什么问题

经典 Speculative Decoding 建立了”draft-then-verify”的范式。但这个框架的加速上限取决于两件事:

  1. draft 模型有多准——acceptance rate 越高,每轮验证能接受的 token 越多
  2. draft 模型有多快——draft 模型的开销 越低,投机解码的”本钱”越小

经典方案用同系列的小模型做 draft(比如用 7B 给 70B 当 draft),有两个困境:

1
2
3
困境 1:7B 给 13B 当 draft → 开销太大,不如不投机
困境 2:7B 自己没有更小的同系列模型 → 没有合适的 draft model
困境 3:小模型和大模型的 instruction template 不兼容 → 无法用于对齐后的 Chat 模型

Medusa 绕开了独立 draft model,直接在 target model 上加多个 MLP head 预测未来 token。但它在 token 层面独立预测,accuracy 只有约 0.6。Lookahead 用 n-gram + Jacobi 迭代,也不理想。

EAGLE 的出发点是:能不能利用 target model 自身的中间表示,训一个极其轻量的 draft 模型,在几乎零开销下达到远超其他方案的 accuracy?

下图对比了四种方法在 drafting 阶段的区别。蓝色块表示 token,橙色块表示 feature,红色边框表示 draft model 的预测:

四种投机解码方法的 drafting 阶段对比:Speculative Sampling 和 Lookahead 在 token 层预测,Medusa 用独立 MLP head,EAGLE 在 feature 层自回归并融合 token 信息


二、EAGLE:两个关键观察

EAGLE 建立在两个洞察上,它们共同指向一个比”预测 token”更好的切入点。

观察 1:特征层自回归比 token 层更简单

在 LLM 中,token 序列经过 Transformer 后变为 feature 序列——即 LM head 之前的倒数第二层隐状态。token 是离散的自然语言,变化丰富;而 feature 是连续的高维向量,在相邻 step 之间的变化更加平滑和规律。

1
2
3
4
5
Token 层自回归:  "I" → "am" → "excited" → "!"
↑ 跳跃大,难预测

Feature 层自回归:f₁ → f₂ → f₃ → f₄
↑ 连续、平滑,更易预测

论文的消融实验(Figure 4)证实,在 draft model 参数量相同的情况下,预测 feature 的 speedup 为 1.9x,而预测 token 只有 1.5x。

观察 2:采样引入的不确定性是主要误差来源

即使 feature 层更好预测,有一个本质困难阻碍了进一步提升:采样过程引入的随机性

考虑这样一个例子:

1
2
3
4
5
6
上下文:"I"

f_I 预测出 token 分布: p(am) = 0.6, p(always) = 0.4

如果采样到 "am" → 下一个 feature 是 f_am
如果采样到 "always" → 下一个 feature 是 f_always

draft model 在预测 之后的下一个 feature 时,并不知道实际采样到的是 “am” 还是 “always”——这两个分支对应完全不同的 feature 序列。如果 draft model 只看 来预测下一个 feature,它面对的是一个无法消解的歧义。

EAGLE 的解法直截了当:把采样结果(token)也作为输入喂给 draft model。具体来说,feature 序列保持当前 step,token 序列向前平移一步:

这就是论文所说的 “feature & shifted-token”。加入 shifted token 后,draft model 能感知采样结果,speedup 从 1.9x 提升到 2.8x。


三、EAGLE 的架构与流程

3.1 Draft Model 结构

EAGLE 的 draft model 由三个模块组成:

1
2
3
4
5
┌──────────────────────────────────────────────┐
│ Embedding Layer ←── 来自 target LLM(冻结) │
│ LM Head ←── 来自 target LLM(冻结) │
│ Autoregression Head ←── 需要训练(FC + 1层 Decoder)│
└──────────────────────────────────────────────┘

Embedding 和 LM Head 直接复用 target LLM 的参数,不需要额外训练。唯一需要训练的是 Autoregression Head:一个 FC 层(把 feature 和 token embedding 的拼接降维回 hidden_dim)加一个 Transformer decoder 层。

对于 LLaMA2-Chat 70B,可训练参数只有 0.99B——不到 target model 的 1.5%。

3.2 推理流程

下图展示了 EAGLE 的完整 pipeline。左侧是 target LLM,右侧是 draft model。上半部分是计算流程,下半部分展示了通过多次采样形成树状草稿的过程:

EAGLE 完整 pipeline:target LLM 提供 feature,draft model 通过 Autoregression Head 自回归预测,多次采样形成树状草稿

以 “How can” 为前缀来说明:

Forward 1(target model): 用 target LLM 跑 prefill,得到 feature 和采样 token “I”。

Forward 2(draft model): 送入 draft model,预测下一个 feature 。用 LM Head 得到分布,采样出 “make”。将 拼入输入,继续预测 ,采样出 “help”。

Forward 3(draft model): 类似地继续展开。通过树状注意力,draft model 在每个位置采样多个候选,3 次前向就能草拟出一棵包含 10+ 个 token 的草稿树。

Verification(target model): 把整棵草稿树一次性喂给 target LLM。通过 tree attention mask,target model 一次 forward pass 即可并行验证所有路径,接受最长的合法分支。

3.3 训练

损失函数由两部分组成:

feature 回归是中间目标,token 分类才是最终目标。,因为分类损失的数量级更大。

训练在 ShareGPT 数据集的 68k 对话上进行。70B 模型在 4x A100 40G 上 1-2 天即可完成。7B/13B 模型甚至可以在单张 RTX 3090 上训练。


四、EAGLE 的关键设计:树状草稿

与经典 speculative decoding 的链式草稿不同,EAGLE 采用树状结构:每个位置保留多个候选 token,形成一棵 draft tree。

1
2
3
4
5
6
7
8
9
10
11
12
链式草稿:  I → make → a → plan
只有一条路,猜错就断

树状草稿: I
/ \
make help
/ | |
a out you
/ \
plan ...

多条路径,一条被拒还有备选

Tree Attention:一次 Forward 验证整棵树

树上的多个分支物理上被展平为一维序列,但不同分支之间不应该互相看到——“a” 不是 “the” 的上文,它们是兄弟节点。Tree attention 通过定制 attention mask 解决这个问题:每个 token 只 attend 到自己从根到该节点路径上的祖先,而非展平序列中位于它前面的所有 token

以下面这棵草稿树为例:

1
2
3
4
5
6
7
       It
/ \
is has
/ \ \
a the to
| |
good be

展平后送入 target model 的序列是 [It, is, has, a, the, to, good, be],对应的 tree attention mask 如下图所示。行表示当前 token(query),列表示它能看到的 token(key)。打勾表示该 query 可以 attend 到该 key 的 KV cache:

Tree Attention Mask 示例:每个 token 只 attend 自己的祖先路径,不同分支互不干扰

以 “good” 这一行为例,它只能看到 [It, is, a, good]——恰好是从根到 “good” 的完整路径。而 “has”、”the”、”to” 等不在这条路径上的 token 对 “good” 完全不可见,就像它们不存在一样。

这意味着在同一次 forward pass 中,target model 对每条路径独立计算了概率分布,等价于逐条路径单独验证——但只付出了一次 forward 的代价。

消融实验显示,tree attention 带来 0.6–0.8 的平均接受长度提升和 0.3–0.5 的 speedup 提升。


五、EAGLE 的实验结果

在 MT-bench 上,EAGLE 对 Vicuna 和 LLaMA2-Chat 全系列模型(7B–70B)、以及 Mixtral 8x7B 进行了评估:

Target Model Speedup (T=0) Speedup (T=1) 平均接受长度
LLaMA2-Chat 7B 2.78x 2.29x 3.71
LLaMA2-Chat 13B 3.01x 2.78x 3.83
LLaMA2-Chat 70B 2.97x 2.65x 3.77
Vicuna 7B 2.90x 2.39x 3.33x
Vicuna 13B 3.07x 2.65x 3.58
Vicuna 33B 2.95x 2.76x 3.62
Mixtral 8x7B 1.50x 3.25

几个值得注意的点:

  • 比 Medusa 快 1.5x–1.6x,比 Lookahead 快 1.7x–2.1x
  • 代码生成任务加速最高(HumanEval 上 LLaMA2-Chat 13B 达到 3.76x),因为代码模板多、可预测性强
  • Mixtral 加速相对低,因为 MoE 模型每个 token 只访问 2 个 expert 的权重,验证阶段的并行优势被削弱
  • 搭配 gpt-fast 量化编译后,LLaMA2-Chat 7B 在单张 RTX 3090 上达到 160.4 tokens/s

六、EAGLE-2:静态草稿树的瓶颈

下图对比了 EAGLE 与标准 Speculative Sampling 在 drafting 和 verification 两个阶段的区别。EAGLE 在 feature 层自回归(左),并使用树状草稿做并行验证(右):

EAGLE 与标准 Speculative Sampling 的对比:(a) Drafting 阶段——token 自回归 vs feature 自回归;(b) Verification 阶段——链式验证 vs 树状验证

EAGLE 的草稿树形状是固定的——不管上下文是什么,都用同样的树结构。这隐含了一个假设:draft token 的接受率只取决于它在树中的位置

EAGLE-2 的作者发现这个假设不对。下一个 token 是否容易猜对,高度依赖上下文。

1
2
3
4
5
6
7
Query: "10+2="
→ 下一个 token 几乎确定是 "1"(再下一个是 "2")
→ 此时应该把草稿树做深,多猜几步

Query: "10+2"
→ 下一个 token 可能是 "="、"+"、"×" 中的任何一个
→ 此时应该把草稿树做宽,多给几个候选

EAGLE 的静态树无法区分这两种情况——对”10+2=”它仍然在第二层放 3 个候选,浪费了确定性高时本可多猜几步的机会。下图直观地展示了这个区别:

EAGLE vs EAGLE-2:静态树 vs 动态树。对于确定性高的"10+2=",EAGLE-2 将树做深;对于不确定的"10+2",EAGLE-2 将树做宽

关键发现:draft model 的置信度 ≈ acceptance rate

EAGLE-2 发现了一个意外的好消息:EAGLE 的 draft model 是良好校准的。draft model 输出的 confidence score(LM Head softmax 后的最大概率)与实际 acceptance rate 高度正相关:

1
2
Confidence < 0.05  → acceptance rate ≈ 0.04
Confidence > 0.95 → acceptance rate ≈ 0.98

这意味着不需要跑 target model,只看 draft model 自己的置信度就能估计每个候选 token 被接受的概率。


七、EAGLE-2:动态草稿树

基于上述发现,EAGLE-2 提出了上下文感知的动态草稿树,通过两个阶段构建:

7.1 扩展阶段(Expansion)

从 draft tree 的当前最深层选 top- 个全局接受概率最高的节点,送入 draft model 做下一层扩展。

全局接受概率定义为从根到该节点路径上所有 token 接受概率的乘积:

其中 是 draft model 对 的置信度。高 的分支更值得展开——它们从根到叶的整条路径都大概率被接受。

7.2 重排阶段(Reranking)

扩展完成后,树上的节点可能很多。Reranking 从所有节点中选 top- 值最高的,组成最终草稿。选择时优先保留浅层节点(因为深层节点的 值不可能高于父节点),确保选出的节点仍构成一棵连通树。

最后,将选出的节点展平为一维序列,构造对应的 tree attention mask,送入 target model 验证。

下图展示了 EAGLE-2 动态草稿树的完整流程:先 Expand(top-2 扩展),再 Rerank(top-8 重排),最后展平为一维序列并构造 attention mask:

EAGLE-2 动态草稿树示意:Expand 阶段按全局接受概率选 top-k 节点扩展,Rerank 阶段选 top-m 节点组成最终草稿,展平后构造 tree attention mask

7.3 EAGLE-2 的优势

  • 无需额外训练:直接复用 EAGLE 的 draft model,只改变草稿树的构建策略
  • 无额外推理开销:置信度是 draft model 的 softmax 输出,本来就要算
  • 更高的接受长度:每轮 draft-verify 产出约 4–5.5 个 token,约为标准 speculative sampling 的两倍

八、EAGLE-2 的实验结果

在 Vicuna、LLaMA2-Chat、LLaMA3-Instruct 三个系列上,EAGLE-2 在所有模型和任务上都取得了最高的 speedup:

Target Model EAGLE EAGLE-2 提升
Vicuna 13B (T=0) 3.07x 4.26x +39%
LLaMA2-Chat 7B (T=0) 3.03x 3.51x +16%
LLaMA2-Chat 13B (T=0) 3.20x 3.92x +23%
LLaMA2-Chat 70B (T=0) 3.01x 3.51x +17%
LLaMA3-Instruct 8B (T=0) 2.83x 3.29x +16%
LLaMA3-Instruct 70B (T=0) 2.72x 3.46x +27%

EAGLE-2 比 EAGLE 快 20%–40%,比标准 speculative sampling 快约 2x,比 Medusa 快约 2x


九、EAGLE-3:打破特征预测的天花板

EAGLE 和 EAGLE-2 用同一个 draft model。这个 draft model 的核心设计是在 feature 层做自回归——先预测下一步的 feature,再用 LM Head 映射为 token 分布。

然而,当作者尝试用更多数据训练 EAGLE 的 draft model 时,发现了一个令人沮丧的现象:增加训练数据几乎没有带来提升

问题根源:特征预测约束限制了模型表达力

EAGLE 的训练损失包含 feature 回归项 ,要求 draft model 的输出逼近 target model 的 top-layer feature。这个约束有两面性:

1
2
3
4
5
6
好处:feature 回归让 draft model 在少量数据下就能学好
(因为 feature 空间比 token 空间规律得多)

坏处:feature 回归同时也限制了 draft model 的输入和输出
- 输入必须是 top-layer feature → 只有最高层语义
- 输出必须逼近 top-layer feature → 表达力被约束

当数据量增加时,draft model 有能力学到更丰富的模式,但 feature prediction 的约束让它”施展不开”。

更严重的是,feature 层的自回归有一个固有问题——误差累积。Draft model 第 1 步预测的 feature 会替代真实 feature 作为第 2 步的输入。如果 有误差,它会传导到后续所有步,导致越往后 acceptance rate 越低。

EAGLE-3 的两个改进

改进 1:去掉 feature 回归约束,直接预测 token。

EAGLE-3 移除了 ,draft model 的唯一训练目标变成 token 预测的 cross-entropy loss。不再要求输出逼近 target feature,draft model 获得了完全的表达自由度。

但这引入了新问题:没有 feature 回归约束后,draft model 在推理时第 1 步的输出 不再是 的近似,第 2 步的输入分布与训练时看到的截然不同——训练-推理不一致。

解法是 Training-time Test:在训练时模拟推理时的多步生成过程。下图对比了三种方案的训练与推理:原始 EAGLE(有 feature 约束)、去掉 feature 约束后的退化(训练-推理不一致导致 Step 2 预测崩溃)、以及 EAGLE-3 通过 Training-time Test 解决不一致:

EAGLE → EAGLE(去掉 l_fea) → EAGLE-3 的训练对比:Training-time Test 在训练时模拟推理的多步生成,消除训练-推理不一致

1
2
3
4
5
6
7
原始 EAGLE 训练:
Step 1:输入 (f₁,...,fₜ),预测 fₜ₊₁ ≈ f̂ₜ₊₁ (用 L_reg)
Step 2:输入 (f₁,...,fₜ, f̂ₜ₊₁),预测 fₜ₊₂ (但用了估计的 f̂ₜ₊₁)

EAGLE-3 训练 (Training-time Test):
Step 1:输入 (g₁,...,gₜ),预测 aₜ₊₁ → sample tₜ₊₂ (只用 L_token)
Step 2:输入 (g₁,...,gₜ, aₜ₊₁, eₜ₊₂),预测 aₜ₊₂ (用自己的 aₜ₊₁ 而非真实 gₜ₊₁)

训练时让 draft model “吃自己的输出”做下一步预测,与推理时的行为完全一致。attention mask 也相应调整为对角矩阵(非标准的下三角),以反映树状草稿的上下文关系。下图展示了 Training-time Test 中 attention mask 的变化过程——从标准的下三角 causal mask,到模拟树状草稿的稀疏对角 mask:

Training-time Test 的 attention mask 示意:原始训练数据使用标准 causal mask,模拟的 draft 步骤使用对角 mask 以反映树状分支的上下文依赖关系

改进 2:多层特征融合,替代单纯的 top-layer feature。

EAGLE 只用 target model 倒数第二层的 feature。EAGLE-3 同时提取低层、中层、高层三个层级的 feature ,拼接后通过 FC 层降维:

这个融合 feature 包含了从句法到语义的多层次信息,比单层 feature 更丰富,为直接预测 token 提供了更好的基础。下图展示了 EAGLE-3 的完整推理 pipeline,左侧 target model 提取三层 feature 融合为 ,右侧 draft model 分三步自回归展开:

EAGLE-3 推理 pipeline:target model 提取低/中/高三层 feature 融合为 g,draft model 通过 FC + Decoder Layer 自回归预测,每步用自己的输出 a 替代真实 feature

Scaling Law 的出现

EAGLE-3 最令人振奋的结果是:它首次在投机解码领域展现出了 scaling law

1
2
3
4
5
数据量(相对 ShareGPT)    EAGLE speedup    EAGLE-3 speedup
1x 3.16x 4.40x
2x 3.16x ~4.5x
4x 3.16x ~4.7x
8x 3.16x 4.85x

EAGLE 的 speedup 在数据翻倍后几乎不变(因为被 feature 约束卡住了),而 EAGLE-3 的 speedup 随数据量持续攀升。这意味着,只要继续扩大训练数据,EAGLE-3 还能更快。


十、EAGLE-3 的实验结果

在 Vicuna 13B、LLaMA3.1 8B、LLaMA3.3 70B 和 DeepSeek-R1-Distill-LLaMA 8B 上评测:

Target Model EAGLE-2 EAGLE-3 提升
Vicuna 13B (T=0) 4.26x 5.58x +31%
LLaMA3.1-Instruct 8B (T=0) 3.16x 4.40x +39%
LLaMA3.3-Instruct 70B (T=0) 2.83x 4.11x +45%
DeepSeek-R1-Distill 8B (T=0) 2.92x 4.05x +39%
平均 (T=0) 3.23x 4.44x +37%

EAGLE-3 的 acceptance rate 也显著提升。对比 EAGLE(使用 - 表示有 个估计 feature 时的接受率),随着估计步数增加,EAGLE 的 acceptance rate 持续下降(从 0.75 降到 0.5 左右),而 EAGLE-3 几乎保持不变——这直接验证了 Training-time Test 有效消除了误差累积。

生产环境验证

EAGLE-3 在 SGLang 和 vLLM 两个生产级框架上得到了验证:

  • SGLang(H100, LLaMA3.1-Instruct 8B, batch size=64):EAGLE-3 相比无投机解码提升 38% 吞吐量,而 EAGLE 在同等 batch size 下已无提升
  • vLLM(A100, LLaMA3.1-Instruct 8B, batch size=56):EAGLE-3 仍保持 1.01x 吞吐提升,而 EAGLE 已降到 0.71x

这说明 EAGLE-3 的高 acceptance rate 使其在大 batch size 场景下仍然有效——这是投机解码走向生产的关键能力。


十一、三代演进总结

1
2
3
4
5
6
EAGLE                          EAGLE-2                        EAGLE-3
├─ Feature 层自回归 ├─ 复用 EAGLE draft model ├─ 去掉 feature 约束
├─ Feature + Shifted Token ├─ 置信度 ≈ 接受率 ├─ 直接预测 token
├─ 静态 Draft Tree ├─ 动态 Draft Tree ├─ 动态 Draft Tree
├─ ~3x speedup ├─ ~4x speedup ├─ ~5x speedup
└─ 需要训练 draft model └─ 无需额外训练 └─ 需要训练 + Training-time Test
维度 EAGLE EAGLE-2 EAGLE-3
Draft 目标 预测 feature + token 同 EAGLE 只预测 token
输入特征 Top-layer feature Top-layer feature 多层融合 feature
草稿树 静态 动态(置信度驱动) 动态
数据 scaling 无效 有效(首次 scaling law)
训练成本 低(1-2天) 中(数据更多)
Speedup (T=0) 2.7x–3.5x 3.0x–5.0x 3.0x–6.5x
大 batch 吞吐 衰减明显 衰减 仍有提升

每一代解决的核心瓶颈:

  • EAGLE:解决了”draft model 太大/太慢”→ 用 feature 层自回归把 draft 压到 <1B 参数
  • EAGLE-2:解决了”静态树结构浪费 token budget”→ 用置信度驱动的动态树
  • EAGLE-3:解决了”feature 约束限制 scaling”→ 去掉 feature 回归 + Training-time Test

十二、思考

为什么 EAGLE 比 Medusa 好这么多? 根本区别在于对”不确定性”的处理。Medusa 的多个 head 独立预测各位置的 token,完全不感知采样结果带来的分支;EAGLE 通过 shifted token 显式把采样结果传给 draft model,让它在正确的分支上继续预测。这个设计使 EAGLE 的 accuracy 达到约 0.8,远超 Medusa 的 0.6。

EAGLE 系列的适用边界。 和所有投机解码方法一样,EAGLE 的加速在 batch size 增大时会衰减——因为大 batch 下 GPU 从 memory-bound 转向 compute-bound,验证阶段的并行优势减弱。EAGLE-3 通过更高的 acceptance rate 推迟了这个拐点,但并未消除。对于在线服务的高并发场景,EAGLE 需要与 continuous batching 等系统级优化配合使用。

与其他加速方案的关系。 EAGLE 与量化、编译优化等正交——论文展示了 EAGLE + gpt-fast 在 RTX 3090 上达到 160.4 tok/s。EAGLE 也启发了 DeepSeek-v3 的 Multi-token Prediction 预训练策略,形成了训练-推理的双向影响。

1
2
3
4
5
6
Speculative Decoding  ─→ 建立 draft-verify 框架
EAGLE ─→ 用 feature 层自回归压缩 draft
EAGLE-2 ─→ 用动态草稿树优化 token budget
EAGLE-3 ─→ 去掉 feature 约束 + scaling law
MTP ─→ 让模型自己当 draft
NanoSpec ─→ 压缩 draft LM head

EAGLE 系列的三篇论文,每一篇都精准定位上一版的瓶颈,用最小的改动获取最大的收益——这种”诊断-修复”的迭代范式本身,可能比任何单项技术更值得学习。