论文专题讲解:EAGLE:为什么 draft 不一定要是一个小模型

论文专题讲解:EAGLE:为什么 draft 不一定要是一个小模型

Charles Lv8
论文信息

论文题名: EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty。

作者: Yuhui Li、Fangyun Wei、Chao Zhang、Hongyang Zhang。

机构: 未在公开元数据中稳定解析;以 arXiv/PDF 或官方页 affiliation block 为准。

时间 / 主题: 2024-01;高效推理。

arXiv / 官方报告: arXiv:2401.15077

GitHub / 项目: GitHub:github.com/SafeAILab/EAGLE

元数据来源与核验口径: 来源:arXivGitHub API / repo;Checked Date:2026-06-04;Repro Status:Paper / official materials reviewed, independent reproduction not claimed。

投机解码的基本想法很简单:让一个便宜 draft model 先猜几个 token,再让昂贵 target LLM 并行验证;猜对越多,target LLM 逐 token decode 的次数越少。EAGLE 的问题是:draft model 一定要是另一个小语言模型吗?

它的答案是否定的。EAGLE 用 target LLM 已经算出来的高层 feature 做草稿:预测下一步 feature,再复用 target LLM 的 LM head 得到候选 token。这样 draft head 贴着 target 模型内部接口训练,不需要重新预训练一个完整小 LLM。

普通 speculative sampling 的瓶颈

经典 speculative sampling 的流程是:

1
2
3
4
5
context
-> draft model 连续生成 k 个候选 token
-> target model 一次性并行验证这些 token
-> 接受连续通过验证的前缀
-> 第一个失败位置由 target 修正

收益来自 average acceptance length。draft 猜得越准,一次 target forward 接受的 token 越多;draft 太弱,接受率低;draft 太强,自己的计算开销又会变大。对 13B 或 70B target 来说,用一个不小的 draft LLM 可能吃掉大部分收益。

EAGLE 的直觉是:target LLM 在上一轮 forward 已经产生了 second-to-top-layer hidden feature。这些 feature 比离散 token 更平滑、更接近 target 的内部计算轨迹。与其从 token 层重新学一个小模型,不如预测 target feature 的下一步。

EAGLE speedup temperature 0 原论文图

图源:EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty,Figure 1。原图表达:temperature=0 的 MT-bench 上,EAGLE 相比 Medusa、Lookahead、speculative sampling 等方法有更高 speedup。本站读法:这张图只证明在论文设置下 latency 更低,不证明回答质量更高;质量保持来自后面的 target verification。

EAGLE 预测的是 feature,不是直接预测 token

EAGLE 的 draft path 可以读成:

1
2
3
4
5
6
7
target LLM feature prefix F_{1:i}
shifted token sequence T_{2:i+1}
-> target embedding(T)
-> concatenate feature and token embedding
-> small autoregression head predicts next feature f_{i+1}
-> frozen target LM head maps feature to token distribution
-> speculative verification by target LLM

EAGLE pipeline 原论文图

图源:EAGLE,Figure 6。原图表达:绿色是 shifted token embedding,橙色是 target feature,红框是 trainable draft head,蓝色雪花表示复用并冻结 target embedding / LM head。本站读法:EAGLE 只训练一个轻量 autoregression head,但候选 token 仍经过 target LM head 和 target verification。

这个设计有两个关键点。

第一,draft head 贴着 target feature 学。它不是独立小 LLM,所以训练成本低得多。论文报告对 LLaMA2-Chat 70B,只训练少于 1B 参数,用约 68K ShareGPT 对话,4 张 A100 40G 上 1-2 天可完成。

第二,EAGLE 保持 lossless speculative sampling 的语义。draft 只是提案者,最终接受与否由 target model verification 决定。因此在标准验证算法下,输出分布保持 target LLM 的原始分布。

为什么会有 feature uncertainty

feature-level draft 有一个不明显但很重要的问题:token 是离散采样,feature 是连续轨迹。假设前文是 I,下一 token 可能采到 am,也可能采到 always。这两个离散结果会进入不同未来分支,只看上一 feature fIf_I,draft head 并不知道实际采样到了哪个 token。

Feature uncertainty 原论文图

图源:EAGLE,Figure 3。原图表达:token I 后可能采样出 amalways,对应不同 feature sequence;仅靠 fIf_I 预测下一 feature 会出现歧义。本站读法:feature 虽然平滑,但必须知道离散采样实际走了哪条分支。

EAGLE 的修正是把 token sequence 提前一个 time step 输入 draft head。也就是说,预测下一 feature 时,不只看 feature prefix,还看上一轮真实采样出来的 token。论文称为 feature&shifted-token。这不是小技巧,而是整篇论文的核心:feature 负责连续轨迹,shifted-token 负责告诉模型离散分支。

Feature and shifted-token ablation 原论文图

图源:EAGLE,Figure 4。原图表达:在 Vicuna 7B + MT-bench + temperature=0 上,feature-level draft 优于 token-level draft;加入 shifted-token 后进一步提升 speedup。本站读法:这张消融支撑“feature 和已采样 token 必须一起看”。

Loss 为什么要同时看 feature 和 token

EAGLE 训练 draft head 时,首先让预测 feature f^i+1\hat f_{i+1} 接近 target feature fi+1f_{i+1}

Lreg=SmoothL1(fi+1,DraftModel(T2:i+1,F1:i))L_{\mathrm{reg}} = \mathrm{SmoothL1} \left( f_{i+1}, \mathrm{DraftModel}(T_{2:i+1},F_{1:i}) \right)

这里 F1:iF_{1:i} 是已有 feature 序列,T2:i+1T_{2:i+1} 是 shifted token 序列。公式读法是:draft head 要沿着 target LLM 的 feature 轨迹预测下一步。

但最终被验证的是 token,不是 feature。因此 EAGLE 还把真实 feature 和预测 feature 都送入 frozen LM head,比较它们诱导的 token 分布:

pi+2=Softmax(LMHead(fi+1)),p^i+2=Softmax(LMHead(f^i+1))p_{i+2} = \mathrm{Softmax}(\mathrm{LMHead}(f_{i+1})), \qquad \hat p_{i+2} = \mathrm{Softmax}(\mathrm{LMHead}(\hat f_{i+1}))

再用 classification loss:

Lcls=CrossEntropy(pi+2,p^i+2)L_{\mathrm{cls}} = \mathrm{CrossEntropy}(p_{i+2},\hat p_{i+2})

最终目标是:

L=Lreg+wclsLcls,wcls=0.1L=L_{\mathrm{reg}}+w_{\mathrm{cls}}L_{\mathrm{cls}}, \qquad w_{\mathrm{cls}}=0.1

这组公式的读法是:regression 保证 feature 轨迹像 target,classification 保证这些 feature 经过 LM head 后能产生 target 会接受的 token 分布。论文把 wclsw_{\mathrm{cls}} 设成 0.1,是因为 classification loss 数值通常比 regression loss 大。

EAGLE 还在训练时给 feature 加均匀噪声:

ϵU(0.1,0.1)\epsilon\sim\mathcal U(-0.1,0.1)

这里 ϵ\epsilon 是注入到 feature 的扰动,用来让 draft head 提前适应推理时的递归误差。EAGLE-3 后来把这个思想推进得更彻底:直接把 test-time 多步递归过程搬进训练。

Tree attention 为什么能提高接受长度

EAGLE 不只生成一条 token 链,还可以生成 tree-structured draft。Tree attention 的意义是:同样几次 draft forward,可以覆盖多个候选分支;target model 再用 tree mask 并行验证这些候选。

Tree attention speedup 原论文图

图源:EAGLE,Figure 7。原图表达:MT-bench、temperature=0 上,使用 tree attention 的 EAGLE 比 chain draft 有更高 average acceptance length。本站读法:tree 不是让 target 少验证,而是让一次 verify 覆盖更有希望的候选前缀。

论文 Table 5 显示,tree attention 把 average acceptance length 提高约 0.6-0.8。这个提升来自候选预算更丰富,但也带来工程复杂度:tree mask 必须保证分支 token 只能看祖先,不能偷看兄弟分支;候选 token 变多后,verify 的实际 kernel 和 KV 管理也要跟上。

实验应该怎么读

EAGLE 的主实验有三个层次。

证据 支撑什么 不能证明什么
MT-bench speedup 图 feature-level draft 可以降低单请求 latency 不代表答案更好
输入消融 feature + shifted-token 是关键组合 不代表所有层 feature 都适合 draft
tree attention 消融 tree draft 能提高接受长度 不代表静态树是最优候选分配
batch size 实验 小 batch 更容易获得单请求加速 不代表高吞吐大 batch 永远同样快
Mixtral 8x7B 实验 MoE 上收益较弱 不代表所有 MoE 都无法投机

论文报告 temperature=0 时 HumanEval、GSM8K、Alpaca 等任务上常见 2.7x-3.7x speedup;temperature=1 时 speedup 通常下降。直觉很简单:采样更随机,draft 更难连续猜中,acceptance length 变短。

Batch size 也是关键边界。小 batch decode 时,target LLM 往往是 memory bandwidth / latency bound,GPU 计算资源没有完全吃满;投机验证能把更多 token 合到一次 target forward。大 batch 时 target 已更接近饱和,draft、tree token 和 verification overhead 会竞争资源,single-request speedup 会收缩。

MoE 上也会变复杂。Dense target 每个 token 都读同一套权重,多 token verification 更容易摊薄开销;Mixtral 这类 MoE 每个 token 只激活部分 experts,tree verification 可能触发更多 experts,导致收益不如 dense 模型明显。

和 EAGLE-2、EAGLE-3 的关系

EAGLE 系列的演化线很清楚:

论文 解决的缝隙
EAGLE 证明 feature-level draft + shifted-token 可以低成本加速
EAGLE-2 静态 draft tree 会浪费候选预算,所以改成 dynamic draft tree
EAGLE-3 feature prediction constraint 限制 scaling,所以改成 direct token prediction + training-time test

所以读 EAGLE 不要把它当成系列终点。它的价值是找到一个服务端可训练的 hidden-state draft interface;后续两篇分别在“候选预算怎样分配”和“draft 训练分布怎样贴近推理”上继续修补。

落地时要检查什么

EAGLE 最有工程价值的一句话是:draft model 不必是完整语言模型,它可以是贴着 target feature 接口训练出来的预测头。

但落地时要检查这些问题:

问题 为什么重要
target feature 是否稳定可导出 EAGLE 依赖 second-to-top-layer feature 和 LM head
draft head 是否足够便宜 overhead 太高会吃掉 acceptance 收益
shifted-token 是否严格对齐采样 多步 feature draft 必须知道实际 token 分支
tree attention mask 是否正确 分支之间不能泄漏上下文
训练数据是否覆盖目标流量 ShareGPT 成本低,但专业域、代码、工具流量可能需要重训
是否按请求桶看 acceptance 长输出、低温、模板化任务更适合;高温、agent、短输出可能收益差

外部精读

阅读结论

EAGLE 的核心不是某个 speedup 数字,而是一个接口判断:target LLM 的 hidden feature 可以成为低成本 draft 的工作空间。Feature-level draft 比 token-level draft 更贴近 target 内部轨迹,但必须用 shifted-token 解决离散采样分支带来的 feature uncertainty;tree attention 能提高一次 verify 的候选覆盖;batch、MoE、draft overhead 和 acceptance 分桶决定收益能不能落到线上。把这些点看清,EAGLE 就不再是一张加速表,而是一种设计推理服务 draft path 的方法。

相关阅读与下一步

  • Title: 论文专题讲解:EAGLE:为什么 draft 不一定要是一个小模型
  • Author: Charles
  • Created at : 2025-10-22 09:00:00
  • Updated at : 2025-10-22 09:00:00
  • Link: https://charles2530.github.io/2025/10/22/ai-files-paper-deep-dives-inference-eagle/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments