Horace He in collaboration with others at Thinking Machines · 2025-09-13

克服 LLM 推理的非确定性

摘要

文章探讨了为何大语言模型即使在温度为0的贪婪采样下仍产生不确定性结果。作者指出,流行的"并发+浮点"假说虽部分正确但不完整——单纯的矩阵乘法在GPU上可重复执行且结果一致。真正的问题在于浮点非结合性:浮点加法不满足结合律,不同的累加顺序会产生不同结果。关键在于理解GPU kernel如何实现累加操作,以及为何在实际LLM推理服务器中会出现不确定性。

内容框架与概述

文章从科学研究对可复现性的需求出发,引出LLM推理不确定性这一实际问题。作者首先介绍了常见的"并发+浮点"假说,即GPU并行计算中线程执行顺序的不确定性导致浮点累加顺序变化,进而产生不同结果。然而作者通过代码示例证明,相同的矩阵乘法在GPU上重复执行1000次可获得完全一致的结果,这与该假说的预期相矛盾。

接着文章深入解释浮点非结合性的本质:浮点数通过动态精度表示大范围数值,当不同量级的数相加时会丢失精度。作者用具体例子说明,仅8个元素的数组按不同顺序求和可产生102种不同结果。这是数值差异的根本原因,但并非不确定性的直接来源。

文章进一步探讨GPU kernel的实现机制。虽然原子加法(atomic add)确实可能导致不确定性,但现代高效kernel很少使用它。作者提出了一个看似矛盾的观察:单个kernel是确定性的,LLM前向传播也是确定性的,但从用户角度看推理服务器仍表现出不确定性。这暗示真正的问题可能出在更高层次的系统设计中(如KV Cache管理),但文章在提供的内容中未完整揭示。

核心概念及解读

浮点非结合性(Floating-point Non-associativity):浮点加法不满足数学结合律,(a+b)+c ≠ a+(b+c)。这是因为不同量级的数相加时会丢失低位精度,导致累加顺序影响最终结果,是数值差异的根本数学原因。

贪婪采样(Greedy Sampling):温度设为0时,模型总是选择概率最高的token。理论上应产生确定性输出,但实践中因底层计算差异仍可能出现不同结果。

原子加法(Atomic Add):GPU并行计算中用于多核心向同一内存位置累加的原语。虽然硬件保证操作完成,但不保证顺序,可能导致不确定性。然而现代高效kernel通常采用其他策略避免使用它。

GPU Kernel确定性:作者指出LLM前向传播使用的kernel本身是确定性的,相同输入产生相同输出。真正的不确定性来源需要从更高层次的推理服务器架构中寻找。

“并发+浮点"假说:一种解释LLM不确定性的流行假说,认为GPU并行执行顺序的随机性导致浮点累加顺序变化。作者认为这一解释不完整,因为相同矩阵运算可重复获得一致结果。


原文信息

字段内容
原文Defeating Nondeterminism in LLM Inference
作者Horace He in collaboration with others at Thinking Machines
发表日期2025-09-10

此摘要卡片由 AI 自动生成