当前位置: 首页 > news >正文

关于 “Thinking Machines Lab首次发长文” 的一些知识的学习和补充

1. 前言

砚上三五笔,落墨鹧鸪啼

原文链接: https://thinkingmachines.ai/
相关分析链接:https://www.gongjiyun.com/blog/2025/9/fu1xw1spci9vnokjipecs9y9nzn/

最近看到一篇名为《击败 LLM 推理中的非确定性:从“玄学”到可控》的文章,这里将一些知识盲区简单记录下。
如有不对,欢迎评论区指正!

2. 正文

2.1 抛出问题

LLM的输出即便是同一个输入,每次也都会完全不同。这就很费解,难道这是一个玄学问题吗?

image

2.2 推测原因-浮点运算顺序

浮点数运算的顺序,考虑到浮点数精度的问题。。。
不符合加法结合律。(a+b)+c=a+(b+c)

2.3 推测原因-执行内核的原子操作陷阱

CUDA kernel执行,不同的CUDA core上使用原子计算并行操作,一个thread操作时,其他thread不能打断。但是却没有规定哪些thread先计算,哪些后计算,结合2.2中的浮点运算顺序,可能导致结果不同。

并行归约

原文是:

GPU的并发执行可能导致浮点累加顺序的不确定性。原子加法虽然能确保数据一致性,但其固有的串行特性导致效率低下,因此,现代 GPU 内核通常采用并行归约(parallel reduction的方式来累加部分和。并行归约是一种巧妙的算法,它能以固定且可预测的顺序完成累加,从而保证了计算结果的确定性。

我的理解是一种递归函数(归约),累加只执行这个递归函数,最终递归N次,完成一个相对复杂的运算。

然而,这并非绝对。有些内核确实可能表现出真正的非确定性行为。例如,在一个将值映射到计数(如哈希表)的累加操作中,如果多个并发线程同时尝试写入同一个位置,那么最终结果将取决于线程写入的顺序。这类操作会引入真正的非确定性。但值得庆幸的是,在 LLM 推理的算子实现中,这类真正的非确定性内核并未被广泛使用。通常情况下,LLM 推理中的底层计算内核都是确定性的。

2.4 推测原因-确定kernel产生不确定性结果

证明内核本身是不会产生随机性结果了。那么就可以分析出大概是:动态内核的调度。

矩阵乘法计算(matmuls)的最优算法和矩阵大小有关系;和GPU架构有关;这些量会影响所谓的内核调度。

举例来说,一个处理 2048x2048 矩阵的 bfloat16 矩阵乘法内核,其实现方式可能与处理 4096x4096 矩阵的内核大相径庭。这是因为矩阵乘法的最优算法会随着矩阵大小的变化而调整。所以,GPU 会根据矩阵的具体尺寸来选择不同的内核版本。
而内核的差异不仅体现在输入尺寸上,还与硬件平台息息相关。比如,为 NVIDIA A100 GPU 优化的 CUDA 内核,很可能与为 NVIDIA H100 GPU 优化的内核有所不同,因为底层硬件架构的差异会影响最优算法的选择。
这种根据输入大小、输入类型和硬件动态选择最佳内核的过程,就是所谓的“内核调度(Kernel Dispatch)”。更重要的是,这是一个动态过程,意味着最终调度哪个内核,完全取决于实际传递给 GPU 的输入数据。

计算sum(a)+sum(b),可以先分别计算sum(a)、sum(b)然后相加;或者计算a+b的和c,然后计算sum(c),两种方式不同,调度的kernel顺序不同。GPU 可能会在不同时间点选择不同的内核来计算 sum(A)、sum(B) 甚至 sum(C)。一旦选择的内核不同,其浮点数累加顺序就可能改变,进而导致最终结果的差异。这便是 LLM 推理中非确定性产生的一个重要原因。

2.5 易受上述原因影响的因素

2.5.1 RMS Norm

向量的均方根归一化,root-mean-square 均方根。举个例子,如果你的批次(batch)中包含多个序列,并且这些序列的长度各不相同,那么 RMSNorm 内核可能会针对每个序列选择不同的归约策略。这种动态选择机制,恰恰是导致非确定性结果的潜在原因。

采用批次不变(batch-invariant)的 RMSNorm 内核。来处理这个问题。。

2.5.1 Attention注意力机制

注意力机制是 LLM 的另一个核心组件,它通过计算查询(queries)和键(keys)之间的相似度来生成权重,进而对值(values)进行加权求和。这个加权求和同样是一个归约操作

batch norm

2.6 解决方法

使用批次不变(batch-invariant)的 RMSNorm 内核。一个批次不变内核的特点是,无论输入批次的大小或序列长度如何变化,它始终采用相同的、固定的归约策略。这样一来,就能确保 RMSNorm 的计算结果始终是确定性的,从而消除了这一环节的随机性。

2.7 真正的在线强化学习(True On-policy RL):确定性带来的新可能

研究人员已经指出,训练和推理之间存在的数值差异,会隐式地将我们的在线强化学习(On-policy RL)转化为离线强化学习(Off-policy RL)。这意味着训练时模型学到的策略,在实际推理时可能无法完全复现,从而影响学习效率和效果。
显然,如果连两个相同的推理请求都无法获得位级别相同的结果,那么在训练和推理之间实现位级别完全一致更是无从谈起。然而,确定性推理的实现,为我们提供了一个修改训练堆栈的契机,使得在采样(sampling)和训练之间也能获得位级别相同的结果。这将最终带来真正的在线强化学习。

3. 后记

To be continued.......

http://www.hskmm.com/?act=detail&tid=8856

相关文章:

  • CF1630F 题解 | 网络流
  • 攻防世界-secret-galaxy-300 - xxx
  • 实用指南:LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 数据库
  • 代码随想录算法训练营第二天 | leetcode 209
  • mpv硬件解码
  • 2025.9.78——卷6-8选择
  • 关于pytorch的读书报告
  • Emacs 折腾日记(三十)——打造C++ IDE 续
  • 数据结构 项目一
  • 好烦
  • 用 Go 语言与 Tesseract OCR 识别英文数字验证码
  • FreeRTOS和LVGL组合使用教程
  • Codeforces 1646 记录
  • 综合与实现流程【p3】--(DSP-存储)优化PS系统集成
  • Linux中 sed命令忽略大小写匹配
  • 【STL库】哈希封装 unordered_map/unordered_set - 教程
  • Pip换源
  • 7zip压缩解压缩-测试CPU性能
  • 高数
  • P5666 [CSP-S2019] 树的重心
  • Java运行机制
  • 除自身以外数组的乘积-leetcode
  • 【2022】SDRZ夏令营游记
  • rapidXML解析xml文件
  • office2024免费永久激活版下载安装教程:含激活步骤 + 一键安装包下载
  • 大学不止GPA
  • 大学目标
  • [论文笔记/评估方法] RELIABLE AND DIVERSE EVALUATION OF LLM MEDICAL KNOWLEDGE MASTERY
  • 本地VMware Workstation Pro的rhel-server-7.9-x86_64服务器配置本地源