直接回答:自回归解码每生成一个 token 都要完整跑一遍大模型,而这一阶段是访存受限的——权重从 HBM 搬进来一次,本来可以在算力闲置的情况下并行验证多个 token。投机采样利用这一点:用一个廉价的小草稿模型(draft)先自回归地猜出 k 个候选 token,再让目标大模型一次前向并行计算这 k 个位置上的分布,配合拒绝采样接受与目标分布一致的最长前缀,第一个被拒绝的位置由目标模型按修正分布重采样一个 token 兜底。可以证明整个过程的输出分布与目标模型逐 token 采样严格相同,因此质量零损失,纯粹的系统级加速。
展开解析:实际加速比取决于两个因素:草稿的接受率和草稿自身的成本。草稿模型越小越快但与目标分布偏差越大、接受率越低,经验上取目标模型参数的 1/10 到 1/20,同系列小模型对齐效果最好,典型端到端收益 2–3 倍。变体方面:Medusa 给目标模型加多个解码头直接草稿后续 token,EAGLE 在特征层做轻量自回归草稿,都属于自投机,省去独立草稿模型;检索式的 n-gram、前缀匹配草稿在代码编辑等重复度高的场景可以零成本命中。工程上要注意:投机采样只对访存受限的解码阶段有效,prefill 阶段无收益;当并发 batch 已经很大、GPU 算力饱和时,额外的验证计算反而可能拖累吞吐,需要按负载动态开关。
追问方向:拒绝采样的接受概率公式如何推导,为什么能保证分布不变?Medusa 的多头草稿如何保证与目标分布一致?投机采样与 KV cache、连续批处理如何协同?(约 620 字)