Decoding 策略决定了模型"如何从概率分布中选出下一个 token",直接影响输出质量、多样性和推理性能。它是 LLM 推理中最基础也最常被问到的概念。
前置知识
核心概念:Decode 阶段发生了什么
在每个 Decode 步,模型输出一个 logits 向量 (词汇表大小的未归一化分数),需要从中选出一个 token 作为输出:
一、Greedy Decoding(贪心解码)
原理
每个 Decode 步都选择 概率最高的 token :
特点
示例
二、Sampling(随机采样)
按 概率分布随机选择 token,概率越高的被选中的概率越大:
Temperature 的作用
三、Top-k Sampling
只从 概率最大的 k 个 token 中采样,排除低概率的"长尾"token:
参数选择
四、Top-p Sampling(Nucleus Sampling)
选择 累计概率达到 p 的最小 token 集合 ,而不是固定数量:
Top-k vs Top-p 对比
五、Top-k + Top-p 组合
实际中最常用的策略:先 Top-k 截断,再 Top-p 截断:
六、Beam Search
维护 k 条候选序列 (beam),每步展开所有候选的所有可能后继,取概率最高的 k 条:
伪代码
七、完整策略对比
八、Penalty 机制 — 控制重复和新颖度
除了上述采样策略,LLM API 还提供 Penalty 参数 来控制生成内容的重复程度:
九、在推理引擎中的实现
vLLM 中的 Decoding 参数
# 其他常用参数 SamplingParams( temperature=0.7, top_p=0.9, top_k=50, max_tokens=2000, stop=["</thinking>", "\n\n"], # 停止词 presence_penalty=0.1, # 鼓励新内容 frequency_penalty=0.1, # 惩罚重复 seed=42, # 确定性采样(固定随机种子) )
各种策略的性能影响
面试视角
常考问题
"Temperature 是怎么影响生成的?"
扩展阅读