采样参数:temperature 与 top_p
采样是从每步的概率分布里挑一个 token 的规则:temperature 改分布的陡峭程度,top_p 截断候选集,一般只调一个。temperature=0 也不保证复现,因为采样上游还有浮点、批处理等不确定源;新一代模型正把这层旋钮收回去,稳定性要靠约束解码与校验而不是调参。
也叫:temperature · top_p · 采样 · sampling · 贪心解码 · 确定性
原理拆解出自 T0-2
一条链走完才吐出一个 token:改形状 → 转概率 → 砍尾巴 → 重新归一化 → 抽一个
logits模型这一步的原始打分
÷ T · 改形状
T=0.2 分布尖锐差距被放大,头部几乎必选
T=1.5 分布平坦差距被压缩,冷门也有机会
softmax到这一步才是概率
top_p / top_k · 砍尾巴
top_p 累到 p 就停后面的直接撤下
top_k 只留前 k 个更粗暴的同类
重新归一化 → 抽一个本步输出的 token
同一组 logits 走一遍
| 这一步 | 算出什么 | 读法 |
|---|---|---|
| 原始 logits | 8.0 6.0 5.5 2.0 1.0 | 模型这一步的原始打分 |
÷ T,T=0.2 | 40 30 27.5 10 5 | 差距放大 → 分布尖锐 |
÷ T,T=1.5 | 5.3 4.0 3.7 1.3 0.7 | 差距压缩 → 分布平坦 |
softmax | 0.55 0.20 0.15 0.06 0.04 | 这才是概率 |
top_p=0.9 | 0.55+0.20+0.15=0.90 | 只保留前 3 个 |
top_k=2 | 只保留前 2 个 | 更粗暴的同类 |
贪心解码消掉的只是采样这一层随机,它上游还有四处:浮点加法不满足结合律(GPU 归约顺序随批次与调度变化,末位差异足以翻转两个接近的 logits)、动态批处理(跟谁拼在一个 batch 里会影响 kernel 选择与计算路径)、MoE 路由在批内有交互、版本漂移(同名模型的小版本更新)。
准确的表述只有一句:
temperature=0 让输出高度稳定,但不等于确定性可复现。真想复现,靠的是固定模型版本号(不要用浮动别名)、把结构交给约束解码,以及最终 —— 把确定性需求下沉到代码里,别指望模型。logits [ 8.0 6.0 5.5 2.0 1.0 ... ]
│
├── ÷ T(temperature)
│ T=0.2 → [40, 30, 27.5, 10, 5] 差距放大 → 分布尖锐
│ T=1.5 → [5.3, 4.0, 3.7, 1.3, 0.7] 差距压缩 → 分布平坦
▼
softmax → 概率 [0.55 0.20 0.15 0.06 0.04 ...]
│
├── top_p=0.9:0.55+0.20+0.15=0.90 → 只保留前 3 个
├── top_k=2 :只保留前 2 个
▼
重新归一化 → 随机抽一个 → 本步输出的 tokendef sample(logits, temperature=1.0, top_p=1.0):
if temperature == 0:
return int(argmax(logits)) # 贪心:不再随机
probs = softmax(logits / temperature) # 改形状
order = argsort(probs, descending=True)
cum, keep = 0.0, []
for i in order: # 砍尾巴
keep.append(i)
cum += probs[i]
if cum >= top_p:
break
return random_choice(keep, weights=probs[keep])为什么 temperature=0 也不保证复现——这是本篇最值钱的一段。
贪心解码消除了「采样」这一层随机,但它上游还有一堆不确定:
- 浮点加法不满足结合律。GPU 上的归约(reduce)顺序会随批次和调度变化,末位差异足以翻转两个接近的 logits 的大小关系;
- 动态批处理(continuous batching)。你的请求跟谁拼在一个 batch 里,会影响 kernel 选择与计算路径;
- MoE(专家混合)路由在批内是有交互的;
- 版本漂移。供应商随时可能对同名模型做小版本更新。
所以准确的表述是:temperature=0 让输出高度稳定,但不等于确定性可复现。 想真复现,得靠固定模型版本号(不要用浮动别名)、把结构交给约束解码、以及最终——把确定性需求下沉到代码里,别指望模型。
以上节选自T0-2 采样参数:temperature、top_p,以及它们正在退场,读全文能看到前后语境。