用过本地大模型的人大多有一个体会:出字太慢。尤其是对话式生成,模型必须一个 token 一个 token 地"挤"出来,速度很难提上去。推测解码(Speculative Decoding)就是近年来最受关注的推理加速方法之一——它的核心思路很反直觉:用一个更小的模型"先猜",再让大模型"批改"。
一、为什么大模型生成这么慢
大语言模型采用自回归生成:每生成一个 token,都要把之前所有内容重新过一遍网络。这个过程是"串行"的,GPU 明明算力很强,却因为要一个接一个地等,利用率被严重拖低。也就是所谓的"显存带宽受限、算力没吃满"。
二、推测解码怎么工作
它的思路分三步:
1. 草稿:用一个参数少、速度快的小模型(draft model),一口气预测接下来若干个 token 的候选序列。
2. 验证:把这段草稿一次性交给大模型(target model),让它并行地对每个位置打分,判断这些猜测是否符合自己的概率分布。
3. 接受或回退:从头开始逐个比对,能对上的就采纳,一旦出现不匹配就回退到分歧点,由大模型自己重新生成那一个 token,然后继续下一轮。
关键在于:大模型验证一批 token 和生成单个 token,计算成本几乎一样(都是一次前向)。所以只要小模型猜得够准,就能一次"赚"回来好几个 token,显著提升吞吐。
三、为什么它很吸引人
推测解码最大的优点是"无损"——在理论上,它能保证最终输出和大模型自己逐个生成的结果分布一致,不会牺牲质量。这一点让它区别于量化和剪枝这类会带来精度损失的压缩方法,因此在大模型服务中很受欢迎。
四、常见的实现变体
1. 双模型方案:直接用同系列的小模型当草稿,比如小尺寸版本给大尺寸版本打草稿。
2. Medusa:不额外配小模型,而是在大模型上加多个"预测头",一次并行猜多个后续位置。
3. EAGLE 等:利用特征层面的信息做更准的草稿,进一步提升接受率。
工程上,vLLM 等推理框架已经内置了推测解码的支持。
五、什么时候收益大
推测解码的效果取决于"接受率":草稿模型和大模型越像、任务越常规(如摘要、翻译、代码补全),猜测越容易被接受,加速越明显;反之,如果是高度创造性的开放式生成,接受率低,收益就会打折。
六、一句话总结
推测解码用"小模型抢答、大模型判卷"的方式,把大模型串行生成的瓶颈变成了并行验证,在不牺牲质量的前提下换来成倍吞吐。理解它,也就理解了当下大模型推理优化的一条主线。
【参考来源】综合整理自公开发布的行业信息(如 Speculative Decoding、Speculative Sampling、Medusa、EAGLE 等公开论文,以及 vLLM 官方文档)。