Skip to content

推测解码加速推理原理

推测解码(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。

相关资源

最近更新