投机解码的变体与前沿:Medusa、EAGLE 与无 draft 方案
一句话定义
经典"独立小模型当 draft"之外,投机解码演化出三条路线:让目标模型自带多头预测(Medusa)、在特征层训练轻量头(EAGLE),以及完全不用 draft 模型的 n-gram/提示内复制(prompt lookup),配合树形验证把接受率推到新高度。
为什么重要
经典方案的最大痛点是"找一个又快又相关的 draft 模型"很贵;变体谱系回答了"没有小模型/不想训小模型时怎么办",也代表了当前推理加速最活跃的方向之一。选型时知道每条路线的成本结构,才能按团队资源对号入座。
前置知识
- kp-018(draft-verify、接受率 α、E[tokens] 公式)。
核心概念
- Medusa(自投机·多头):在目标模型顶层加 k 个解码头,第 i 个头预测"往后第 i 个 token",无需独立 draft 模型;多头的组合通过树注意力一次验证。成本:需微调附加头;收益:α 与并行度高,典型 2–3 倍。
- EAGLE(特征层 draft):在目标模型倒数第二层特征上训练轻量自回归头——特征比 token 分布更"信息富",α 显著更高(EAGLE-2/3 进一步做动态树与上下文感知),典型 3–5 倍,是当前精度-速度比最强的路线之一。成本:需训练 + 目标模型内部特征接入。
- Prompt Lookup / n-gram 投机(免训练):用输入提示中已出现的 n-gram 作为猜测——RAG 摘要、代码编辑、改写等"输出大量复制输入"的任务接受率极高;实现几十行,零训练,是性价比之王。
- 树形验证(tree attention):把多个候选序列组织成树,用注意力掩码让一次前向同时验证多条路径,扩大搜索宽度而不增加串行深度。
原理与机制
变体谱系的共同思路只有两条:提高 α,或摊薄验证成本。Medusa 用多头并行猜测扩大候选集;EAGLE 换到特征层获得更高的天然 α;prompt lookup 让任务本身的复制性白送 α;树形验证则用一次前向同时验证多条路径来摊薄单路径成本。选型的本质是"训练成本 × 收益稳定性"的权衡——免训练方案收益有上限但零风险,训练方案收益高但要跟随基座更新。
公式与模型
树形验证的收益直觉:单链验证每轮期望产出 E = (1−α^{k+1})/(1−α)(kp-018);树形方案同时验证 b 条分支,接受"至少一条路径前进 j 步"的概率随 b 增大,等效于用验证算力换 α——算力富余而 α 是瓶颈时正合适。代价:验证 batch 变大,compute-bound 边缘场景收益缩水。
图示
经典: draft模型(独立) ──猜k个──► 目标模型验证(链式)
Medusa: 目标模型+多头头 ──并行猜──► 树形验证
EAGLE: 特征层轻量头 ──高α猜──► 动态树验证
Lookup: 输入n-gram ──直接抄──► 目标模型验证 (免训练)
实例或案例
选型实例:①RAG 摘要服务(输出大段复制检索文本)——直接上 prompt lookup,一天内上线,零训练;②代码补全 SaaS,追求极限 TPOT——EAGLE 路线,接受一次训练成本;③通用聊天、无训练预算——经典 draft(蒸馏 1B,kp-011)或不开投机。
常见误区
- "变体一定优于经典":Medusa/EAGLE 需要逐模型训练附加头,换基座就要重训;经典 draft 方案换模型只换小模型。
- "k 或分支越多越好":验证算力与 α^{k} 的边际递减共同决定最优宽度,需实测(见 kp-018 误区)。
- "lookup 投机只适用小众任务":恰恰相反——凡输出与输入高度重叠(工具调用回显、翻译记忆、对话引用)都适用,值得作为默认尝试项。
自测题
- 三条变体路线各自的"draft 来源"是什么?
要点:Medusa=目标模型附加多头;EAGLE=特征层训练头;Lookup=输入文本的 n-gram。
- 树形验证用什么东西换更高的有效接受率?
要点:一次前向内的额外验证算力(更大验证 batch)。
- 为什么 EAGLE 的 α 比同尺寸独立 draft 更高?
要点:它在目标模型特征空间做自回归,与目标分布的相关性远高于独立小模型。
与其他知识点的关系
kp-011 的蒸馏是经典与自投机路线的训练基础;kp-024 中 decode 实例算力富余时投机收益更好;本页是本库"前沿"档的代表作。
延伸阅读
《Medusa》(Cai 等,2024)与《EAGLE》(Li 等,2024)两篇的第 1 节合读,可以拼出该方向的演进地图。