Speculative Decoding:小模型先猜几个词,大模型再逐个验?
TL;DR
投机解码让较小的草稿模型先提出一串候选 token,再由目标大模型并行验证,减少逐 token 等待的空档。本文讲清接受与拒绝机制、何时可能加速,以及它并不保证每次都更快或改变目标模型分布。
投机解码让较小的草稿模型先提出一串候选 token,再由目标大模型并行验证,减少逐 token 等待的空档。本文讲清接受与拒绝机制、何时可能加速,以及它并不保证每次都更快或改变目标模型分布。

大模型通常按 token 一个接一个生成:先算出下一个 token,再把它加入上下文,继续算下一个。即使 GPU 很强,每一步也可能受到内存读写和串行依赖影响。Speculative Decoding(投机解码)尝试让一个较小的草稿模型先“猜”一串候选,再由目标大模型并行检查,减少串行等待。
先草拟,再批量核对
草稿模型依据当前上下文快速生成若干候选 token。目标大模型随后一次处理这段候选序列,判断每个位置是否接受草稿结果;如果某个位置不合适,就按算法规则从目标模型分布中重新采样,并以新的上下文继续。接受的前缀可以直接保留,避免目标模型每次只前进一步。
这像是速记员先把演讲内容打一版,主讲人再快速校对整段:若前几句都对,就一次确认多句;碰到不匹配的位置,再从那里修订。大模型本身仍然是最终裁判,草稿模型并不拥有最终决定权。
为什么可以不牺牲目标分布
论文中的 speculative sampling 使用接受与拒绝采样规则,使输出分布在算法假设下与直接从目标模型采样相匹配。这里的“匹配”指统计分布层面的性质,并不意味着每次运行都会给出相同句子,也不表示草稿模型可以随便猜、结果永远不会偏差。实现必须遵循正确的采样与校正步骤。
速度提升也不是保证。若草稿模型提出的 token 经常被拒绝、两模型在硬件上调度不佳,额外的草拟与验证开销可能抵消收益。序列长度、温度、模型大小、批处理、GPU 利用率和内存带宽都会影响结果。小模型与大模型越容易预测出相同候选,投机越可能划算。
投机解码主要减少生成路径上的等待,并不减少用户问题本身,也不会自动让答案更准确。它改变的是“如何高效计算目标模型的下一个 token”。评估时应同时看延迟、吞吐、接受率和输出分布,而不是只看草稿模型的速度。
来源:论文:Accelerating Large Language Model Decoding with Speculative Sampling



