困难decoding解码策略投机解码面试高频OpenAI
什么是投机解码(Speculative Decoding)?为什么能加速且不损失质量?
9 0 0
参考答案
投机解码用一个小而快的 draft model 先"猜"若干 token,再用大的 target model 一次性并行验证,从而在一次大模型前向里产出多个 token。 **流程**: 1. Draft model 自回归生成 k 个候选 token。 2. Target model 对这 k 个 token 做**一次并行前向**,得到每个位置的真实分布。 3. 用**修正的拒绝采样**逐个验证:只要候选 token 落在 target 分布可接受范围就接受,遇到第一个被拒的就停止并从修正分布重采样一个。 **为什么不损失质量**:拒绝采样的接受/重采样规则在数学上保证最终输出分布与直接用 target model 采样**完全一致**,是无损加速。 **为什么快**:Decode 是 memory-bound,大模型一次前向的瓶颈是读权重;一次前向验证 k 个 token 几乎不增加访存成本,却可能产出多个 token,摊薄了每 token 的权重读取开销。 **加速比取决于接受率**:draft 与 target 越接近、任务越可预测(如代码),接受率越高,加速 2-4×。 **局限**: - draft 猜不准(创意性生成)时收益骤降。 - 大 batch 下 GPU 已 compute-bound,收益递减。 - Eagle/Medusa 用轻量头 + 树状验证(tree attention)提升接受率。
讨论区(0)
还没有评论,来做第一个发言的人吧