先这样答
回答这道题,可以从草稿的并行验证机制、错误恢复流程以及算力收益边界三个层次展开。投机解码的核心是用小模型的生成换取大模型的并行验证,这三个细节都围绕如何最大化交换的净收益。
树状草稿依靠多分支生成与树注意力掩码来组织。小模型起草时每步保留多条概率较高的分支,形成候选树,这比单链的接受率更高。大模型验证时,通过特定的注意力掩码设计,一次前向计算并行评估整棵树的所有节点,提取最长的被接受路径。大模型从左到右校验,遇到第一个与自身分布不一致的分歧点就停住。此时分歧点后的草稿全部丢弃,大模型基于自身分布重采样生成一个修正节点,小模型再从该节点重新起草。这里浪费的主要是被丢弃分支的起草算力和大模型多余的验证算力。
草稿长度并非越长越好,原因在于接受概率沿链路逐步衰减。随着草稿变长,尾部节点被接受的概率极低,继续拉长不仅白耗小模型算力,还会让大模型验证时的张量变大。最优长度随任务可预测性变化,代码类任务偏长,开放生成偏短,工程上常按接受率动态调节。同时,过多候选节点会挤占批处理内其他请求的显存,调度时需与预填充任务统筹。
最后可以向面试官收束:投机解码的加速比近似于每轮平均接受长度与额外验证开销的净收益,调整树的深度、宽度和草稿长度,都是围绕这个目标寻找最优解。
面试官会怎么追问
-
「重采样修正的具体过程是怎样的?怎么保证最终输出分布和直接用大模型生成完全一样?」 大模型在验证时,会计算草稿节点在自身分布中的概率。如果草稿被拒绝,大模型会根据自身的概率分布进行重采样。这种机制在数学上保证了最终的输出概率分布与完全由大模型自回归生成的分布严格一致,实现无损加速。
-
「既然验证草稿会增加计算量,什么情况下投机解码反而会拖慢整体推理速度?」 当系统处于高并发状态,显存和计算资源成为瓶颈时可能带来负收益。草稿节点会增加验证阶段的计算量,如果此时为了验证低接受率的草稿而挤占了其他请求的资源,或者影响了批处理内其他请求的插入时机,会导致整体的尾延迟变长。
-
「刚才提到按接受率动态调节草稿长度,工程上一般怎么判断和调整?」 通常在推理引擎中统计最近若干轮草稿的平均接受长度。如果实际接受的节点数经常达到草稿长度上限,系统会逐步增加起草长度。反之如果连续多次在极早的位置就出现分歧,系统会缩减长度或减少树的分支数,降低无效的计算开销。
回答的坑
- 认为投机解码为了速度牺牲了精度,导致输出结果与大模型原本的输出不同。正确方向是明确指出投机解码通过分歧点重采样机制,保证了输出分布的完全一致性,属于无损加速。
- 认为把草稿树的深度和宽度拉满就能命中更多内容,从而无脑增加草稿规模。正确方向是说明树的规模受限于大模型的验证开销和系统显存占用,必须在命中长度的收益和额外算力成本之间寻找平衡。
同系列的题