Skip to content

输出采样账:贪心、Beam 与 top-k/top-p 的工程选择 ​

同一个模型,"怎么把下一个 token 选出来"能决定服务质量、也决定推理成本。贪心、Beam Search、top-k/top-p 采样、temperature——它们各是什么、何时用、成本差多少?本文把输出采样的工程账算清,衔接 投机解码。

1. 解码策略分类:质量与成本的四个档位 ​

策略原理输出质量计算成本适用
贪心(greedy)每步选概率最高的 token稳定但平淡、易重复最低摘要/翻译等确定性任务
Beam Search每步保留 K 条最优路径最高(全局近似最优)K 倍需要"最佳答案"的场景
top-k 采样从概率最高的 k 个中采样多样性+可控与贪心同对话/创作
top-p 采样从累计概率 p 的最小集合采样动态自适应与贪心同对话/创作的默认

判断:对话/生成默认 top-p 采样(p≈0.9-0.95),需要确定性答案用贪心/Beam——不要全程贪心,会让模型陷入重复循环。

2. temperature:分布的"锐化/平滑"开关 ​

pi′=exp⁡(zi/T)∑jexp⁡(zj/T)p_i' = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}

  • T>1:分布变平,输出更随机、更多样;
  • T<1:分布变尖,倾向高分 token,更确定;
  • T→0:等价贪心。

工程要点:temperature 与 top-p 配合使用——先按 p 截断低概率尾部,再用 T 调锐度。T 不是越大越好:T 过高会产出语义漂移,0.7-1.0 是创作默认区间。

3. 采样在推理成本里的位置 ​

阶段是否随采样策略变化
前向计算(权重读取/算力)不变(decode 每步都算全词表)
输出 token 数变(采样可能提前 EOS,也可能绕远)
投机解码收益变(草稿分布与主模型越一致,接受率越高)

判断:采样策略本身几乎不增加计算(成本在 decode 前向),真正影响成本的是输出长度与重复调用(如多次采样取优 = 推理时算力翻倍,见 Inference-time scaling)。

4. 与投机解码的衔接:一致性是前提 ​

投机解码用草稿模型猜、主模型验证,接受率取决于草稿分布 q(x) 与主模型 p(x) 的一致性:

accept_rate=E[min⁡(1,p(x)q(x))]accept\_rate = E[\min(1, \frac{p(x)}{q(x)})]

  • 采样参数(T、top-p)必须两端一致,否则接受率崩、投机收益归零(见 投机解码 的一致性校验);
  • 这也是"采样策略影响成本"的隐藏通道:一致性差的采样配置会白搭草稿模型的开销。

5. 可复算 Python:采样 vs 贪心的成本示意 ​

python
def decode_cost(greedy_len, sample_len, k_trials=1):
    """输出成本:decode token 总量(含多次采样取优)"""
    return greedy_len, sample_len * k_trials

decode_cost(greedy_len=512, sample_len=480, k_trials=3)
# 贪心 512 token vs 采样3次取优 1440 token → 成本 ×2.8
# 提示:多次采样换质量=推理算力翻倍,先评估 Inference-time scaling 的 ROI

6. 交付清单 ​

  1. 对话/创作默认 top-p 采样(p≈0.9-0.95, T≈0.7-1.0),确定性任务用贪心/Beam;
  2. 采样参数与投机解码草稿配置保持一致,否则接受率崩;
  3. "多次采样取优"按推理算力翻倍计成本,与换更大模型对比 ROI;
  4. 上线前固定采样参数并做 A/B(见 llm-serving-sre)。

本文为本站整理思考后撰写,用于知识库学习交流;公式与算例为本站自行推导整理,具体版本与实测数据以现场为准。

AI-HPC 智算超算专家 · Contact: openaihpc@gmail.com