推测解码(Speculative Decoding)是一种大模型推理加速方法:先让更轻、更快的草稿模型连续提出几个候选 Token,再由目标大模型一次并行检查。候选被接受时,目标模型一次前向计算就能推进多个位置;不合格的部分则由目标模型纠正。它优化的是生成等待时间,不是把两个模型的答案简单拼接。
慢点出在逐 Token 生成
自回归模型通常要先生成第一个 Token,才能继续计算第二个。即使 GPU 算力很强,这种串行依赖也让解码阶段频繁进行短小的前向计算,硬件未必能被充分利用。推测解码把一段可能的后续内容先写成草稿,再交给大模型批量评分,减少目标模型被调用的轮数。
可以把过程理解为四步:
- 草稿模型根据当前上下文提出一小段候选序列。
- 目标模型并行计算这些位置的概率。
- 按接受规则保留候选,遇到不匹配的位置就停止接受。
- 由目标模型补出正确分支,再开始下一轮草拟。
标准算法使用配套的接受与修正规则,因此可以保持目标模型原有的采样分布;它不是用小模型偷偷替换大模型,也不要求重新训练目标模型。
为什么不一定总能更快
关键指标是候选接受率。草稿模型太弱时,经常在前几个 Token 就被否决,额外草拟反而成为开销;草稿模型太大,又会失去“便宜生成”的意义。文本可预测性、每轮候选长度、硬件并行能力和批量大小都会影响收益。代码、固定格式等连续性较强的内容,通常比高度发散的创作更容易接受较长草稿。
它和其他加速手段解决的问题不同
量化主要减少权重体积和计算成本,KV Cache则复用已计算的历史注意力状态;推测解码关注的是如何让一次目标模型计算确认更多 Token。这些方法可以组合,但会共同占用显存并增加调度复杂度。
判断是否值得采用,不能只看演示中的倍速。部署团队应在自己的提示长度、输出长度、并发量和硬件上比较首 Token 时间、每 Token 延迟、吞吐量与显存占用,确认加速没有以更差的稳定性为代价。