面试官问:Temperature=0为什么输出不同?这道题的底层逻辑和“坑”都在这了
你有没有被面试官问过这个问题:“我把Temperature设为0,为什么大模型的输出还是不一样?”
很多人的第一反应是:“不对啊,Temperature=0不就是贪心解码,每次都选概率最高的token,输出应该完全一样才对?”
但现实是,哪怕你把Temperature设为0,把随机种子也固定,同一个Prompt发给GPT-4或Claude,结果依然可能不一样。这道题不是在考你Temperature的定义,而是在考你对大模型工程实现和底层硬件的理解。
一、先搞懂:Temperature=0 理论上应该是什么样?
Temperature这个参数,本质上是在调整模型输出token的概率分布。
- 当Temperature > 0时,模型会根据概率分布进行随机采样,数值越大,分布越平滑,输出越有“创意”。
- 当Temperature = 0时,模型会关闭所有随机采样,强制切换到**贪心解码(Greedy Decoding)**模式:在每一步生成时,都直接选择logits(未归一化概率)最高的那个token,也就是执行
argmax操作。
从纯数学和理论模型的角度看,只要输入和模型权重完全相同,每次推理得到的logits就应该完全一致,argmax的结果自然也相同,输出序列自然是100%可复现的。
但问题就出