技术深度解析
背景温度的概念源于对推理管道的细致分析。当用户设置温度T=0时,标准预期是模型执行贪心解码:始终选择概率最高的令牌。在纯数学意义上,这应该是确定性的。然而,现代硬件上的实际计算引入了三个不同的非确定性来源。
1. GPU内核非交换性: 现代深度学习框架如PyTorch和TensorFlow将操作分解为数千个GPU内核。矩阵乘法、softmax和层归一化等操作被拆分为更小的内核,这些内核异步调度。这些内核的执行顺序在不同运行中并不保证相同,即使输入完全相同。这是因为GPU调度器优化的是吞吐量,而非确定性。当两个内核在数学上可交换时(例如,两个独立的矩阵乘法),GPU可能以任意顺序执行它们。如果浮点舍入误差因顺序不同而不同,最终结果就会产生分歧。论文证明,这种效应可以使logits的相对变化高达1e-4——足以翻转边界令牌的argmax决策。
2. 浮点数非结合性: 浮点运算不具有结合性:(a + b) + c ≠ a + (b + c),这是由于舍入误差。在Transformer的注意力机制中,softmax操作涉及对序列中的指数求和。求和的顺序——无论是从左到右、从右到左还是树状归约——都会影响最终的浮点结果。当批大小改变时,内部内存布局和归约顺序可能发生变化,从而产生不同的softmax输出。论文对此进行了量化:对于一个70亿参数的模型,将批大小从1改为4,在1000令牌生成过程中,大约0.3%的位置上的argmax令牌会发生变化。
3. 批大小变化: 这或许是最令人惊讶的发现。当模型处理单个提示(批大小1)时,GPU的内存访问模式和内核融合策略与同时处理两个提示(批大小2)时不同。论文表明,即使两个提示完全相同,每个提示的内部计算也可能产生不同的logits,因为GPU的张量核心操作为对齐内存访问进行了优化。这意味着,在生产环境中使用动态批处理的模型,对于相同的用户提示,会根据同时处理的其他请求数量而产生不同输出。
测量框架: 作者提出了一种名为“背景温度”(T_bg)的指标,定义为在玻尔兹曼分布下会产生观察到的令牌级变异水平的有效温度。他们通过运行同一输入N次(通常100-1000次)并计算输出令牌的经验分布来测量T_bg。对于完全确定性的系统,T_bg = 0。对于当前一代LLM,他们测量到的T_bg值在0.01到0.15之间,具体取决于模型和硬件。
| 模型 | 背景温度 (T_bg) | 确定性变异率 | 硬件 |
|---|---|---|---|
| Llama 3 8B | 0.08 ± 0.02 | 0.4% | NVIDIA A100 |
| Llama 3 70B | 0.12 ± 0.03 | 0.6% | NVIDIA A100 |
| Mistral 7B v0.3 | 0.05 ± 0.01 | 0.2% | NVIDIA H100 |
| GPT-4o (API) | 0.10 ± 0.04 (估计) | ~0.5% | 未知 |
| Claude 3.5 Sonnet | 0.07 ± 0.03 (估计) | ~0.3% | 未知 |
数据要点: 背景温度在不同模型和硬件间差异显著。较大的模型往往具有更高的T_bg,这可能是由于更复杂的内核调度。H100的T_bg低于A100,表明硬件层面在确定性方面有所改进。基于API的模型显示出更高的方差,可能是由于云端的动态批处理。
缓解策略: 论文概述了几种降低背景温度的方法:(1) 使用确定性GPU内核(例如,NVIDIA的cuBLAS确定性模式),(2) 在推理期间将批大小固定为1,(3) 使用定点算术或整数量化以消除浮点数非结合性,以及(4) 通过CUDA图强制执行固定内核执行顺序。开源社区已迅速响应:GitHub仓库'llm-determinism'(4.2k星标)提供了一个PyTorch包装器,可强制常见LLM架构的确定性执行。
关键参与者与案例研究
这项研究由剑桥大学和Anthropic的一个团队进行,尽管论文本身并未归属于任何单一组织。第一作者Elena Vasquez博士以其在AI可靠性方面的工作而闻名。该研究已引发主要参与者的反应。
OpenAI 尚未正式评论,但内部消息人士表示,该公司正在调查背景温度作为其GPT-5开发的一部分。OpenAI的API已经提供