AI图鉴

AI图鉴首页 › AI 资讯 › 【大模型】EAGLE 与 EAGLE-3:用“特征预测“加速投机解码

【大模型】EAGLE 与 EAGLE-3:用“特征预测“加速投机解码

来源:掘金 · 发布时间:10-27 · 由 AI图鉴每小时自动聚合

EAGLE与EAGLE-3通过利用目标模型的隐藏状态进行特征外推,提升投机解码中草稿模型的生成质量与接受率。相比传统轻量模型,其在特征空间中融合多层信息,更贴近目标分布,从而减少需验证的串行步骤。

1. 从逐 Token Decode 说起

大语言模型生成文本时,Decode 阶段具有严格的自回归依赖:只有得到当前 Token,才能计算下一个 Token。KV Cache 可以避免重复计算已经出现的上下文,但没有消除 Token 之间的串行依赖。

Token 1 → Token 2 → Token 3 → Token 4 → …

对于大模型,单个 Decode Step 往往只处理很少的 Token,却要读取大量模型权重,因此常呈现 memory-bound 特征。投机解码的目标,就是在不跳过 Target Model 校验的前提下,让一次 Target Forward 尽可能推进多个 Token。

2. 投机解码:Draft 负责猜,Target 负责判

典型的投机解码包含一个轻量 Drafter 和一个最终负责生成质量的 Target Model。Drafter 先提出最多 K 个候选 Token,Target Model 再用一次批量 Forward 计算这些位置的 logits,并从前向后决定哪些候选可以接受。

假设 Drafter 提出 A B C D,Target 判断前三个候选可接受、第四个不可接受,那么本轮至少可以输出 A B C,并在拒绝位置使用 Target 的结果继续生成。

这里还有一个经常被忽略的细节:验证 K 个 draft token 时,Target 通常还会产生下一个位置的 bonus token。

当每轮最多起草 K 个 Token 时,平均接受长度的范围是 1 到 K+1;其中"1"就是 Target 自己产生的 bonus token。

3. 为什么需要 EAGLE/EAGLE3

普通小型 Draft Model 虽然比 Target Model 便宜,但它与 Target 是两个独立模型。模型越小,起草越快,却可能越不了解 Target 的真实生成倾向,导致接受率下降;模型越大,接受率可能提高,但起草成本也随之增加。

EAGLE 的切入点是:Target Model 在上一轮计算中已经产生了信息密度很高的隐藏状态,与其让 Drafter 只看历史 Token,不如把 Target 的隐藏特征也交给 Drafter。

3.1 EAGLE:在特征空间里做自回归外推

EAGLE 全称为 Extrapolation Algorithm for Greater Language-model Efficiency。它不是简单复制一个缩小版 Target Model,而是训练一个轻量的特征预测网络:输入当前 Token 的 embedding 和 Target Model 已计算出的 hidden state,外推(Extrapolation)出未来位置的隐特征向量,再复用 Target 冻结的 LM 头,把预测出来的特征转成 token 概率 / 候选 token。

"Feature Extrapolation(特征外推)"是理解 EAGLE 的关键。Token 是离散结果,而隐藏特征包含更丰富的上下文信息。Drafter 借助 Target 的特征进行预测,通常比只依赖 Token 序列的小模型更容易贴近 Target,从而争取更高的接受率。

不过,EAGLE 并没有天然消除 Drafter 内部的串行依赖。在 vLLM 默认实现中,如果配置 num_speculative_tokens=K,Drafter 会先生成第一个候选,再循环执行 K-1 次轻量 Draft Forward,逐步得到后续候选。

Target hidden state + 当前 token

↓

Draft token 1

↓

Draft token 2

↓

Draft token 3

↓

Target 一次批量验证

只有模型经过相应训练并显式启用 parallel_drafting 时,才属于并行生成多个 draft token 的路径。不能把"投机解码能一次验证多个 Token"等同于"EAGLE 一次 Forward 就生成多个 Token"。

3.2 EAGLE-3:从单一最终特征走向多层特征融合

EAGLE-3 延续了特征级 Drafter 的思路,但进一步使用 Target Model 的多个辅助隐藏状态。不同深度的 Transformer 层携带的信息侧重点不同:较浅层更接近局部和词法信息,中间层逐步形成语义表示,较深层更贴近最终预测。将多层特征融合后,Drafter 可以获得比单一末层状态更丰富的条件信息。

这里不能简单写成"固定使用最后三层"。在 vLLM 中,辅助层首先由 checkpoint 的 eagle_aux_hidden_state_layer_ids 等配置决定;若 checkpoint 没有指定,通用接口才会按模型深度选择三个默认位置,分别靠近早期、中间和后期。

还需要保留一个实现层面的例外:部分 EAGLE-3 checkpoint 会设置 use_aux_hidden_state=false,退化为只使用最后层输出。因此,"多层特征融合"是 EAGLE-3 的典型设计,而不是所有 checkpoint 都必须满足的硬编码规则。

3.3 EAGLE 与 EAGLE-3 有什么不同

EAGLE-3 的主要改进点是 Drafter 获得了更丰富的 Target 特征,而不是取消 Target Verification,也不是天然把所有候选 Token 改成一次并行生成。

4. 为什么不会牺牲生成正确性

投机解码中,Drafter 只提供候选,最终输出仍由 Target Model 的 logits 和验证算法决定。Drafter 猜错的直接后果是接受长度变短,而不是错误 Token 被无条件写入结果。

在 greedy decoding 下,可以直观理解为逐位置比较 draft token 是否与 Target 的选择一致;一旦不一致,就在该位置使用 Target 的结果。在概率采样下,需要使用与配置相匹配的拒绝采样流程,才能保持目标采样分布。

因此,α=min(1,p(x)/q(x)) 是"Draft 按概率分布 q 采样"场景下的经典接受概率,但不能不加条件地套到所有 EAGLE 配置上。当前 vLLM 的 draft_sample_method 默认值是 greedy,验证侧则由标准 rejection sampler 结合实际采样参数处理。

5. 性能收益取决于什么

EAGLE 的收益来自一个权衡:用较便宜的 Draft 计算,换取更少的 Target 串行 Decode Step。决定最终加速效果的不是某一个指标,而是以下因素共同作用:

- Draft 成本: Drafter 越轻、生成 K 个候选越快,额外开销越小。

- 接受率: 提出的候选中有多少被 Target 接受。

- 平均接受长度: 每轮验证实际输出多少 Token,包含 bonus token。

- 候选 K 的大小: 候选 K 太小,减少的串行步数有限;候选 K 太大,Draft 与验证开销会上升。

因此,"候选越多越快"是不成立的。vLLM 的动态投机解码文档特别指出,验证阶段的有效 batch 可近似理解为 BS × K;并发度升高后,过大的 K 可能让验证从 memory-bound 转向 compute-bound,反而使 TPOT 变差。实际部署应基于目标模型、硬件和业务并发测量 K,而不是照搬固定值。

6. EAGLE 与 KV Cache 的关系

KV Cache 与 EAGLE 优化的是两个不同维度。KV Cache 复用已经计算过的历史 K/V,避免每次 Decode 重算全部上下文;EAGLE 尝试预测未来 Token,让一次 Target Verification 推进多个位置。

实现上,Target 与 Drafter 还可能分别维护自身需要的 KV Cache。EAGLE 并不是 KV Cache 的替代品,而是在 KV Cache 基础上进一步降低 Decode 的串行性。

7. 适用场景与局限

EAGLE 更适合 Decode 占比高、中低 QPS(Queries-per-second,并发)、单步 Decode 受内存带宽限制的场景,例如长文本生成、代码生成、对话和 Agent 长输出。若请求主要耗时在长 Prompt 的 Prefill,或者系统已经处于高并发、高计算利用率状态,端到端收益可能有限,甚至可能因为 Draft 和批量验证开销而出现负收益。

部署时还需要考虑 Drafter checkpoint 与 Target 的模型家族、词表、隐藏维度和辅助层配置是否匹配;Draft 模型会增加权重和 KV Cache 占用;EAGLE-3 还要求 Target 实现能够导出所需的辅助隐藏状态。

8. 一句话理解 EAGLE / EAGLE-3

EAGLE 利用 Target 已计算的隐藏特征,让轻量 Drafter 在特征空间中自回归预测未来 Token;EAGLE-3 进一步融合多个层级的 Target 隐藏特征。候选最终仍由 Target 批量验证,从而在保持 Target 生成语义的前提下,减少串行 Decode 轮数。

KV Cache:过去算过的,不要重复算

EAGLE:未来可能生成的,先低成本地猜

Target Verification:猜得对就批量接受,猜错就由 Target 纠正

9. 参考资料

- vLLM:docs/features/speculative_decoding/eagle.md

- vLLM:docs/features/speculative_decoding/README.md

- vLLM:docs/features/speculative_decoding/acceptance_metrics.md

- vLLM:docs/features/speculative_decoding/dynamic_speculative_decoding.md

- vLLM 实现:vllm/v1/spec_decode/llm_base_proposer.py

- vLLM 实现:vllm/model_executor/models/llama_eagle.py、llama_eagle3.py

- EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty

- EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test

本文由 AI图鉴自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(juejin.cn)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI图鉴首页 · 提交工具 · 商务合作 · 关于本站 · 593 款 AI 工具分类导航 · 每日 AI 热门项目与动态