推测解码

EAGLE-3

Yuhui Li et al., EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test, NeurIPS 2025.

这一篇的定位明显和 PagedAttention、DistServe、Mooncake 不太一样。它们关注的是 serving system,而这一篇在优化 decode 阶段自回归生成的算法。

speculative decoding

首先介绍下 speculative decoding 的基本原理。大模型在 decode 阶段一个一个地生成 token,每次都要执行一遍 forward pass。虽然读取了大量的模型权重,但真正执行的计算相当有限。speculative decoding 把慢但准确的大模型称为 target model,另训一个快但不一定准确的小模型 draft model。在 target model 进行 decode 时,draft model 先快速预测接下来的几个 tokens(drafting),然后 target model 可以在一次 forward pass 中验证这些 tokens(verification),接受匹配的前缀,从分歧处继续生成。

如果 target model 连续接受了多个 tokens,就相当于减少了多次昂贵的串行大模型调用。如果验证机制正确 + draft model 的准确率高,speculative decoding 可以实现 lossless acceleration:即,在完全不改变 target model 的输出分布的情况下实现加速。

EAGLEs

EAGLE 系列都是在做 speculative decoding 的。EAGLE-1 用 target model 的 hidden features 训 draft model;draft model 预测下一步的 feature,再通过 target model 的 LM head 转成 token probs。EAGLE-2 设计了一个 dynamic draft tree,动态选择待验证的分支;对于比较确定的预测,可以延伸得更深,否则探索更多分支。

EAGLE-3 采取了 EAGLE-2 的机制,它优化的主要是 EAGLE-1 的训练。所以我们先来看看 EAGLE-1 有什么问题。

EAGLE-1 在训练的时候采用的是 teacher forcing。目标函数是 L=Lfeature+λLtoken\mathcal{L}=\mathcal{L}_{feature}+\lambda \mathcal{L}_{token}。由于在 drafting 时,只有第一个 feature 使用的是 target model 的真实 feature,后续的 feature 是 drafting model 自己生成的,所以必须把 Lfeature\mathcal{L}_{feature} include 进来,希望预测的 features 足够接近真实 features,以减轻 training-inference mismatch;当然,最终我们想要的还是 token,所以 Ltoken\mathcal{L}_{token} 也要优化。

EAGLE-3 觉得这实际上是一种多此一举。既然我们最终关注的是 token,那为什么要把 feature 也 include 进来呢?draft model 完全可以有与 target model 不同的 features,但通过 LM head 得到相近的 token distribution。强行让小模型拟合大模型的 feature 分布很可能会削减它的表达能力。

所以 EAGLE-3 把目标函数设置成 L=Ltoken\mathcal{L}= \mathcal{L}_{token},直接对着 token 多步地训,希望即使输入包含自己生成的、与 target model 不同的 feature 表示,也能够继续作出准确预测。此外呢,EAGLE-1 主要使用 target model 最后一层的 feature。EAGLE-3 认为最后一层的 feature 是高度针对 next-token prediction 的,既然 draft model 要连续生成多步,仅仅使用这些信息可能不够。所以 EAGLE-3 把低、中、高三个层次的 features concatenate 并压缩交给 draft model,这被称为 multi-layer feature fusion。

论文发现比起 EAGLE-1,EAGLE-3 展示出了明显的 scaling up。