跳到主要内容

采样策略(Greedy、Beam Search、Top-K、Top-P、Temperature)

要解决的问题

模型每步输出的是整个词表上的概率分布,如何从中选取下一个 token 直接决定输出的多样性、稳定性与任务得分。聊天场景需要自然多变,代码/数学则常需更确定;采样策略是推理 API 中最常被用户调错的旋钮之一。

核心概念

对 logits z\mathbf{z} 先做温度缩放再归一化:

pi=exp(zi/T)jexp(zj/T)p_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}
策略规则典型场景风险
Greedyargmaxipi\arg\max_i p_i分类、抽取式 QA重复、乏味
Beam Search保留 top-BB 条前缀,按累积 logprob 排序机器翻译(传统)开销 ×B\times B,LLM 聊天较少用
Top-K仅在概率最高的 KK 个 token 上重归一化后采样通用对话KK 过小损多样性
Top-P(Nucleus)取最小集合使 pip\sum p_i \ge pChatGPT 类默认ppTT 耦合需联调
Temperature缩放 TTT<1T<1 更尖锐,T>1T>1 更随机创意写作高温幻觉上升

Top-P 算法(概念):按 pip_i 降序累加,直到累计概率 p\ge p,丢弃其余 token 再采样。

方法 / 组合实践

常见 API 参数组合:temperature + top_p(或 top_k),二者同时极低温时近似贪心。

任务导向建议(经验值,需在自己 benchmark 上验证):

任务temperaturetop_p备注
代码补全0–0.20.95接近贪心,配合 HumanEval
开放对话0.7–1.00.95.1.3 联用
数学推理0–0.61.0高温易破坏链式步骤(见第六部分)

工程实践

  • 可复现性:固定 seed 仅在同硬件/同 kernel 下近似可复;生产 A/B 应记录完整采样参数。
  • logprob 返回:API 暴露 logprobs 便于做 RLHF、拒绝采样与 7.2.1 自动评估
  • 约束解码:JSON / 工具调用常在采样外加 grammar mask,不改变温度定义但缩小有效词表。

代表工作

  • Holtzman et al., The Curious Case of Neural Text Degeneration(Top-P / Nucleus Sampling)
  • Hewitt et al., beam search 在 NNMT 中的经典用法;LLM 时代见 OpenAI、Anthropic API 文档

实践检查清单

  • 固定评测/推理配置(温度、max_tokens、parser 版本)便于回归
  • 记录硬件:GPU 型号、驱动、框架 commit
  • 对比基线:未优化前 TTFT/TPOT 或 Acc
  • 文档化失败案例:OOM、解析失败率、拒答率
  • 交叉阅读本章「相关章节」避免孤立优化

局限与注意点

  • 评测论文分数时须固定采样配置,否则无法对比(见 7.2.4 污染与可靠性)。
  • Beam Search 在长生成 LLM 上显存与延迟陡增,默认不推荐用于 4k+ 输出。
  • 「待验证」:部分推理框架对 Top-P 的实现细节(是否重归一化)存在微小差异,跨框架对比需对齐。

延伸阅读

  • 本仓库 LLMs 入口 可回溯全局大纲;修改单点优化前建议先读上下游章节链接。
  • 技术报告精读见 llms/08-technical-reports/paper-reading 专栏。
  • 工程复现优先锁定:框架版本 + 量化格式 + 评测 harness commit,三者缺一即难以对齐论文数字。

相关章节