采样策略与解码参数
一句话定义
采样策略决定"从模型输出的概率分布里怎么挑下一个 token"——temperature 控制分布尖锐度,top-k/top-p 截断长尾,重复惩罚压制复读——它们同时影响输出质量与推理服务的负载形态。
为什么重要
它是每个请求都带的服务参数:配错(如 temperature=0 用于开放创作)会产生复读机输出;它还直接影响服务指标——低温确定性输出利于前缀缓存命中(kp-023),高 top-p 输出更长导致队列更堵。对推理工程师,采样参数是"不碰模型就能改体验"的第一层旋钮。
前置知识
- kp-003(decode 逐 token 生成);softmax 与概率分布的基本直觉。
核心概念
- greedy / temperature=0:永远取最大概率 token,输出确定;用于抽取、分类、结构化输出。
- temperature T:对 logits 除以 T 再 softmax。T<1 更尖锐(保守),T>1 更平坦(发散),T=0 退化为 greedy。
- top-k:只在概率最高的 k 个候选内采样,屏蔽长尾噪声。
- top-p(nucleus):只在累计概率达到 p 的最小候选集内采样,候选数随分布尖平自适应——分布尖时候选少,平时候选多,比固定 k 更稳。
- 重复惩罚 / 频率惩罚:对已出现 token 的 logits 减分,压制复读。
- 种子(seed):固定随机种子可复现采样序列,排错必备。
原理与机制
所有采样参数都作用在同一个 softmax 上:温度缩放 logits 改变分布形状,top-k/top-p 截断候选集,惩罚项直接改写 logits。它们对服务的影响是间接但真实的——分布形状决定生成长度与重复度,进而决定 KV 占用时长、队列长度与前缀缓存命中率;这也是"采样参数是服务参数"的完整含义。
公式与模型
带温度的采样分布:
数值感受:logits [5.0, 4.0, 3.0] 在 T=1 时最大项概率约 0.67;T=0.5 时升到约 0.88;T=2 时降到约 0.47。同一模型,温度不同"性格"完全不同。
实例或案例
RAG 问答上线配置的典型选择:temperature=0.2、top_p=0.9、适度重复惩罚——低温保证事实稳定性,top_p 保留极少量措辞多样性;并把 seed 固定用于回归测试。另一个服务视角案例:客服场景全体用户共享长 system prompt 且低温输出,前缀缓存命中率 >90%,TTFT 明显下降(衔接 kp-023)。
常见误区
- "temperature 越低越好":对开放式生成,极低温导致重复与刻板;事实型任务才适合趋零。
- "top-k 与 top-p 二选一":生产中常叠加使用(先 k 截断再 p 截断),但不同引擎截断顺序实现有差异,迁移时行为可能不同。
- "采样参数不影响性能":top-p=1.0 会采样出更长尾的输出,平均生成长度变长,直接影响吞吐与排队(kp-002 的负载画像)。
- "可复现=固定温度即可":必须同时固定 seed 与 batch 环境,并发下浮点归约顺序也会带来微小差异。
自测题
- logits [4, 3, 2, 1],说明 T 从 1 降到 0.5 时分布怎么变。
要点:T 变小 → logits 差距被放大 → 最大项概率显著上升,输出更确定。
- top-p 相比 top-k 的自适应优势是什么?
要点:候选集随分布尖平自动伸缩,无需按任务调 k。
- 为什么事实型 RAG 建议 temperature≈0–0.2?
要点:抑制发散采样,降低编造与抖动,利于评测与缓存命中。
与其他知识点的关系
kp-018 的接受率与目标模型的采样设置强相关;kp-023 的会话/缓存路由在低温场景收益最大;kp-027 排错时"输出异常"首先核对采样与 chat template。
延伸阅读
《The Curious Case of Neural Text Degeneration》(Holtzman 等,2020)——top-p 的提出论文,用可视化说明为什么 greedy 会复读。