模型部署与推理优化

采样策略与解码参数

kp-017入门15 分钟05-解码与投机

一句话定义

采样策略决定"从模型输出的概率分布里怎么挑下一个 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 占用时长、队列长度与前缀缓存命中率;这也是"采样参数是服务参数"的完整含义。

公式与模型

带温度的采样分布:

pi = ezi / TΣj ezj / T

数值感受: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 环境,并发下浮点归约顺序也会带来微小差异。

自测题

  1. logits [4, 3, 2, 1],说明 T 从 1 降到 0.5 时分布怎么变。

要点:T 变小 → logits 差距被放大 → 最大项概率显著上升,输出更确定。

  1. top-p 相比 top-k 的自适应优势是什么?

要点:候选集随分布尖平自动伸缩,无需按任务调 k。

  1. 为什么事实型 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 会复读。

#采样#temperature#top-p#top-k#重复惩罚