什么是Speculative Decoding投机采样
大模型推理加速中的Speculative Decoding(投机采样)是一种利用小模型辅助大模型生成Token的并行解码策略。传统自回归解码逐Token串行生成,每次前向传播仅产出1个Token,GPU利用率极低。投机采样引入一个参数量远小于目标模型的Draft Model,由Draft Model快速生成候选Token序列,再由目标模型一次性验证整段候选,接受正确Token、拒绝错误Token后从拒绝位置重新采样。
投机采样的核心收益在于:目标模型一次前向传播可以验证K个候选Token,若大部分被接受,等效吞吐量提升K倍。该算法在数学上保证输出分布与原始自回归采样完全一致,不会引入任何精度损失。
投机采样算法流程详解
投机采样的完整流程分为三个阶段:
第一步,Draft Model自回归生成K个候选Token。Draft Model参数量通常为目标模型的1/10到1/5,单步推理延迟远低于目标模型。Draft Model根据当前上下文连续采样K个Token,形成候选序列x1, x2, …, xK。
第二步,Target Model批量验证。将原始上下文与K个候选Token拼接为一条完整序列,送入目标模型执行单次前向传播。目标模型同时输出每个位置的logits,可以计算每个候选Token的接受概率。对于第i个候选Token,接受条件为:
u < min(1, p_target(xi) / p_draft(xi)),其中u是[0,1]均匀随机数,p_target和p_draft分别是目标模型和Draft Model在该位置的概率分布。
第三步,从第一个被拒绝的位置截断,保留之前的所有Token,然后从目标模型的修正分布中重新采样该位置的Token。后续候选全部丢弃,进入下一轮投机。
Draft Model选择与训练策略
Draft Model的选择直接决定投机采样的加速比。理想Draft Model需满足两个条件:与目标模型分布接近(高接受率)、单步推理足够快(低延迟)。
实践中常见三种获取Draft Model的方式:
1. 同架构小尺寸版本。例如目标模型为LLaMA-70B,Draft Model选用LLaMA-7B,二者词表和架构一致,无需额外对齐。
2. 蒸馏训练Draft Model。使用目标模型产出的大量样本作为训练数据,训练一个小模型模仿目标模型的输出分布。蒸馏Draft Model的接受率通常高于同架构小模型。
3. Self-Speculative Decoding。同一模型在低精度(如4-bit量化)下作为Draft Model,全精度下作为Target Model。无需维护额外模型,但加速比受限于量化精度损失。
投机采样实战部署与参数调优
以vLLM框架为例,投机采样部署只需在启动参数中指定Draft Model:
python -m vllm.entrypoints.openai.api_server \ --model meta-llama/Llama-2-70b-chat-hf \ --speculative-model meta-llama/Llama-2-7b-chat-hf \ --num-speculative-tokens 5 \ --speculative-max-model-len 4096 \ --tensor-parallel-size 4
关键参数说明:
num-speculative-tokens:每轮投机生成的候选Token数量K。K值越大,单轮验证的Token越多,但接受率随位置递减。推荐K=4~8,过高会导致大量拒绝反而增加开销。
speculative-max-model-len:投机采样的最大序列长度。超过该长度自动退回标准自回归解码。
实际测试中,LLaMA-70B搭配LLaMA-7B Draft Model,在对话场景下平均接受3.5~4.2个Token,推理速度提升2.1~2.8倍。代码生成场景因分布差异较大,接受率偏低,平均接受2.0~2.8个Token,速度提升1.5~2.0倍。
投机采样的适用场景与局限
投机采样在以下场景收益显著:对话生成(目标模型与Draft Model分布接近)、批量推理中低并发场景(GPU计算资源有富余)、长文本生成任务(投机轮次多,总加速比高)。
局限性方面:高并发场景下GPU计算资源已饱和,投机采样无法获得额外前向传播窗口;Draft Model与Target Model分布差异大的任务(如代码、数学推理),接受率低导致频繁回退;Draft Model需要额外显存占用,在GPU显存紧张时可能得不偿失。
投机采样的加速比理论上限为K倍,实际受接受率制约。当平均接受率为a时,等效加速比约为1 / (1 – a + 1/K)。以K=5、a=0.8为例,理论加速比约3.3倍。生产环境部署前,务必用目标业务的真实Prompt做基准测试,确认实际加速比后再上线。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/da-mo-xing-tui-li-jia-su-speculativedecoding-tou-ji-cai/