Temperature=0为什么不等于确定性输出:大模型推理非确定性的完整技术解析

一个被广泛接受的观点是:只要将大模型的Temperature参数设为0,就能获得确定性的输出。这个直觉看起来很合理——Temperature=0意味着贪婪采样,模型总是选择概率最高的那个token,没有随机性,结果应该可复现。 ...

22 min · 10883 words

为什么大模型每次回答都不一样:从温度参数到批次不变性的完整技术解析

当你向ChatGPT连续两次提出相同的问题,大概率会得到两个不同的回答。很多人知道这是温度参数在作怪,但把温度调到0就能保证确定性吗?答案是否定的。即使temperature=0,OpenAI的API仍然可能返回不同的结果,而你自己部署的开源模型在vLLM或SGLang上推理时,输出同样不稳定。 ...

18 min · 8901 words

浮点数的深渊:深度学习数值稳定性的完整解析

2019年某天凌晨三点,一位研究生的模型训练在运行72小时后突然输出全NaN。损失函数从平稳下降变成无穷大,权重变成NaN,一切归零。这是深度学习开发者的噩梦——数值不稳定。这不是偶然,而是浮点数表示固有的物理限制在特定条件下的必然爆发。 ...

17 min · 8385 words
Blog Cover

Softmax的数值稳定性问题:从溢出下溢到Log-Sum-Exp技巧的完整解析

你正在训练一个Transformer模型,Loss曲线稳定下降,一切看起来都很顺利。然后你决定启用混合精度训练来加速——只需一行代码.half()。100步之后:Loss: NaN。训练彻底崩溃。 ...

9 min · 4348 words

浮点数为何会撒谎?从0.1+0.2不等于0.3到导弹拦截失败的技术真相

打开浏览器的开发者工具,在控制台输入0.1 + 0.2。结果不是0.3,而是0.30000000000000004。 这不是JavaScript的bug。Python、Java、C、Rust——几乎所有主流语言都会给出同样的答案。你的编程语言没有错,错的可能是你对计算机如何处理数字的直觉。 ...

12 min · 5865 words