要解决的问题
常规自回归解码逐步生成 token。对稠密模型的小批次解码,反复读取模型权重和 KV 缓存常使显存带宽成为瓶颈;大批次、MoE 或不同硬件上的瓶颈可能不同。严格的投机采样算法能在保持目标分布的前提下,一次验证多个候选 token;部分近似变体则会改变分布。
核心方法
基本思路是「先草拟、再验证」(draft-then-verify):
- 用一个便宜的方式草拟接下来的若干个 token。
- 大模型对这些 token 做一次并行的前向计算,逐个检查是否接受。
- 设当前前缀下目标分布为 、草稿分布为 ,对草稿 token ,以 的概率接受。第一次拒绝时,丢弃后续草稿,并从归一化的 中重采样一个 token;不能直接从原始 重采样,否则通常会改变最终分布。全部草稿都接受时,可再从目标模型给出的下一位置分布采样一个 token。
严格的分布保持依赖完整的接受与修正步骤, 还需包含温度、top-p 等采样变换。分布相同不代表用相同随机种子就会生成逐字相同的文本;贪心解码则通常按与目标模型 argmax 是否一致来验证。
按草拟方式不同,主要有以下几类:
- 独立草稿模型:用同系列的小模型草拟,大模型验证。
- 多头预测:在大模型上额外加几个预测头,一次预测后面多个位置,如 Medusa。
- 利用目标模型特征草拟:复用大模型的隐藏特征训练草稿模块,以提高草稿接受率。初代 EAGLE 预测特征;EAGLE-3 改用多层特征融合并直接预测 token,收益依赖具体模型与任务。
- 无草稿模型:Lookahead 解码借助 Jacobi 迭代并行生成 n-gram 候选;自投机解码(self-speculative)跳过大模型的部分层来草拟。
代表工作
- Fast Inference from Transformers via Speculative Decoding(Leviathan 等,2022)与 Accelerating Large Language Model Decoding with Speculative Sampling(Chen 等,2023):分别独立提出投机解码与投机采样,给出保持输出分布不变的验证方法。
- Medusa(2024):增加多个解码头,用树状注意力验证多条候选路径。论文还讨论 typical acceptance 这类近似接受规则;它们追求质量与速度折中,不保证严格保持原始采样分布。
- EAGLE(2024):在特征层面草拟;EAGLE-2 引入动态草稿树。后续 EAGLE-3(2025)还调整了草稿训练目标与特征使用方式,不能把整个系列都简化为同一种特征回归。
- Lookahead Decoding(2023):不需要草稿模型,用 Jacobi 迭代生成候选。
现状
投机解码是目前最主流的延迟优化手段之一,已经集成进 vLLM、TensorRT-LLM 等推理引擎。
开放问题
- 草稿模型如何选择,如何与目标模型对齐,以提高接受率。
- 大批量场景下,GPU 本来就不空闲,投机解码的收益会明显下降。
- 与混合专家模型、长上下文的兼容。
参考资料
相关专题
- 推理并行与服务调度:推理引擎如何把投机解码与连续批处理结合。
- KV缓存压缩与注意力变体:解码阶段的另一个瓶颈是 KV 缓存的显存与带宽。
- 知识蒸馏与小模型:草稿模型常常通过蒸馏得到,以提高接受率。