温度和 top-p:采样参数到底在调什么
模型输出的是什么
每一步,模型给出词表上每个 token 的概率。所谓"生成",就是从这堆概率里采样一个,接到序列后面,再算下一个。
采样参数的作用,就是改变如何从这堆概率里挑。
temperature:缩放概率的陡峭程度
数学上是对 logits 除以 T 再做 softmax:
T < 1:分布变陡,高概率的词更容易被选中,输出更确定、更保守T > 1:分布变平,低概率词也有机会,输出更多样、更容易跑偏T = 0(或极小值):近似贪心,每次选最高概率的那个
注意 T = 0 时严格来说不是"绝对确定",浮点误差和并行计算仍可能带来细微差异。
top-p(核采样):砍掉长尾
把所有 token 按概率从高到低排,取累计概率刚好达到 p 的最小集合,只在这个集合里采样。
p = 0.9:只考虑最可能的那些词,长尾噪声被排除p = 1.0:不裁剪,全词表参与
top-p 比 top-k 更自适应:概率集中时集合小,概率分散时集合自动变大。
怎么配
| 任务 | 建议 |
|---|---|
| 抽取、分类、代码 | 低温度(0 ~ 0.3),要可复现 |
| 一般问答 | 0.7 左右 |
| 头脑风暴、文案 | 0.9 ~ 1.0,可以配 top-p 0.95 |
不要同时把两个参数往极端调。既降 temperature 又大幅降 top-p,等于双重收紧,输出会变得干瘪且重复。
一个常见困惑
同一个 prompt 连跑两次结果不同 —— 这不一定是模型"不稳定",而是采样本身带随机性。需要严格可复现时,除了把温度调到 0,还要看服务商是否支持固定随机种子;很多 API 并不保证可复现,这一点在评测对比时特别容易忽略。
本文为个人学习记录,可能存在错误或已过时,仅供参考。
← 返回笔记列表