推测解码加速推理原理
推测解码(Speculative Decoding)通过小模型草拟、大模型验证的方式,在不损失质量的前提下加速自回归推理。
核心机制
python
def speculative_decode(draft_model, target_model, prompt, max_tokens=5):
# 1. 小模型草拟多个 Token
draft_tokens = draft_model.generate(prompt, max_new_tokens=max_tokens)
# 2. 大模型并行验证
target_probs = target_model.forward(torch.cat([prompt, draft_tokens]))
# 3. 逐个验证,接受或拒绝
accepted = []
for i, token in enumerate(draft_tokens):
if accept_criterion(target_probs[i], token):
accepted.append(token)
else:
# 从大模型分布中采样替代
accepted.append(sample(target_probs[i]))
break
return accepted加速比
推测解码的加速比取决于草拟模型的接受率。在代码生成任务中,典型接受率 70-80%,加速比 2-3x。