Video thumbnail for 【人工智能】击败大模型推理的非确定性 | Thinking Machines | 批次不变性缺失 | 浮点数非结合性 | 归约化顺序 | 批次不变内核 | RMSNorm | 矩阵乘法 | 注意力机制

解決大模型推理不確定性!Thinking Machines Lab批次不變內核技術解密

Summary

Language:

Quick Abstract

大模型輸出不一致?突破性研究揭秘!

是否苦惱於每次輸入相同內容,大模型產生的結果卻總有差異?即使固定隨機種子也無法避免?由OpenAI前CTO米拉·穆拉蒂(Mira Murati)創立的Thinking Machines Lab,其研究成果揭示了問題的核心:大模型推理中的「批次不變性缺失」。本文將深入探討此問題的成因及解決方案。

  • Quick Takeaways:

    • 核心問題: 大模型推理過程中的「批次不變性缺失」,而非GPU並發或浮點數誤差。

    • 批次依賴: 相同輸入在不同批次大小下產生不同輸出,源於浮點數的非結合性。

    • 解決方案: 實現「批次不變內核」,確保RMSNorm、矩陣乘法和注意力機制在任何批次大小下都採用相同的歸約順序。

    • 實際效益: 使大模型輸出更具可重複性和可靠性,並為「線上策略強化學習」鋪平道路。

Thinking Machines Lab的研究表明,通過實現「批次不變內核」,可以有效解決大模型推理的非確定性問題,讓AI更可靠。此研究的意義不僅僅是解決技術難題,更為大模型的「可重複性」和「可靠性」提供了科學的解決方案。了解更多關於此項突破性研究,請閱讀完整論文。

背景介绍

大家好,这里是最佳拍档,我是大飞。今天要探讨的话题,对于所有从事大模型开发和应用的朋友来说,都是一个难以回避的“老大难”问题——为何有时给大模型输入完全相同的内容,得到的输出却不一样?即便固定了随机种子,结果仍可能“失控”。

就在昨天,由OpenAI前CTO米拉·穆拉蒂(Mira Murati)创立的Thinking Machines Lab的研究成果,揭开了这个问题的核心真相。这家公司自成立起就备受瞩目。今年7月,Thinking Machines Lab完成了一轮高达20亿美元的种子轮融资,公司估值直接达到120亿美元。令人惊讶的是,在获得这笔巨额融资时,该公司还未发布任何一款产品,这种“未出产品先获重投”的情况在AI行业极为罕见。投资方阵容强大,领投方是知名风投A16z,跟投的包括英伟达、AMD、思科(Cisco)等科技巨头。

研究内容

9月11日,Thinking Machines Lab正式推出研究博客“Connectionism”(联结主义)。博客的第一篇文章就聚焦于大模型推理中最令人头疼的“非确定性”问题,标题为《击败大语言模型推理中的非确定性》。这篇文章不仅指出了很多人对大模型非确定性的误解,还给出了可落地的解决方案,甚至附上了完整的实验数据。

大模型推理非确定性现象

很多从事算法开发和工程落地的朋友都有过这样的经历:给大模型输入完全相同的提示词,比如“请介绍一下理查德·费曼(Richard Feynman)”,并在代码里将随机种子(random seed)设置为同一个值,按常理模型的输出应该完全一致。但实际情况是,有时跑10次,可能会得到5、6种不同的结果。更令人困惑的是,即便使用vLLM、SGLang等开源推理库在自己的硬件上跑,这种情况依然会出现。

常见误解

面对这种现象,行业里常见的解释是将其归咎于“GPU并发执行”或“浮点数运算”。有人认为,GPU是并行计算的,不同核心的计算完成顺序不一样,结果自然会有差异;还有人说,浮点数运算本身就有误差,叠加之后导致输出不一样。这些说法不能说完全错误,但都没有触及问题的核心。

真正原因

研究团队通过大量实验发现,核心问题在于大模型推理过程中的“批次不变性缺失”。“批次处理”是指,当向大模型推理服务器发送请求时,服务器会根据当前负载情况,把请求和其他用户的请求打包成一个“批次”(batch)来处理。比如在低峰期发送请求,服务器可能把请求和另外2个请求打包成一个“批次大小3”的任务;在高峰期,可能会和另外15个请求打包成一个“批次大小16”的任务。相同的输入,在不同批次大小下会产生不同的输出。

导致这种“批次依赖”的根本原因,与浮点数的非结合性有关。浮点数的非结合性是指,对于浮点数运算,(a + b)+c的结果并不等于a+(b + c)。例如,计算(0.1 + 1e20)-1e20结果是0,而计算0.1+(1e20 - 1e20)结果是0.1。这是因为浮点数采用“尾数×10^指数”的形式实现动态精度,当两个数值尺度差异过大时,小数的精度会被大数“吞噬”。

在大模型的推理过程中,矩阵乘法、RMSNorm(均方根归一化)和注意力机制等关键步骤,本质上都涉及大量的浮点数加法和乘法。当服务器处理不同批次大小的请求时,这些操作的归约化(Reduction)顺序,即浮点数相加的顺序会发生变化。比如批次大的时候,内核会采用“分割归约”策略,把大任务拆成小任务并行计算;批次小的时候,可能会用“单核心完整归约”策略,归约顺序变了,最终计算结果自然不同。

需要澄清的是,“GPU并发执行”并非关键,只要归约顺序固定,相同的计算任务重复执行1000次,结果也会完全一致。Thinking Machines Lab的团队用PyTorch定义两个2048×2048的随机矩阵A和B,计算它们的乘积并重复1000次,每次结果都完全相同。

解决方案

既然找到了核心原因,解决方案就是实现“批次不变的内核”,让大模型的核心操作,如RMSNorm、矩阵乘法和注意力机制,在任何批次大小下都采用相同的归约顺序。

RMSNorm

RMSNorm的计算公式是:输出 = 输入×(1/根号(输入平方的均值))×权重。关键在于输入平方的均值,计算均值需要对输入的每个元素做平方后求和,即归约操作。常规的RMSNorm内核在批次大时,会采用数据并行策略,每个核心处理一个批次元素,在核心内部完成完整的归约;批次变小时,核心数量多于批次元素,为避免浪费算力,内核会切换到“分割归约”策略,改变归约顺序。

Thinking Machines Lab的解决方案是,无论批次大小,都强制采用数据并行策略,即使批次很小导致部分核心闲置,也要保证每个批次元素的归约在单个核心内完成,从而确保RMSNorm的结果批次不变。

矩阵乘法

矩阵乘法是大模型中计算量最大的操作。常规内核为追求性能,会根据批次大小调整策略。比如当矩阵维度(M、N)较小时,内核会采用“Split-K”策略,把矩阵乘法的归约维度(K)拆分成多个部分并行计算后再合并结果,这会改变归约顺序,导致批次不变性缺失。另外,GPU里张量核心的指令选择也会影响归约顺序。

针对矩阵乘法,Thinking Machines Lab的方案是固定内核配置。首先,禁用Split-K策略,无论矩阵维度如何,都不拆分归约维度;其次,固定张量核心指令的尺寸,比如统一使用128×128×32的块大小,即使批次小的时候会有算力浪费,也要保证归约顺序一致。实验数据显示,这种方案在批次较大的场景下,性能损耗只有20%左右,在可接受范围内。

注意力机制

注意力机制涉及两次矩阵乘法(Q×K^T和注意力权重×V)以及一次softmax,其中Q×K^T的归约过程最易受批次影响。常规的注意力内核,比如FlashAttention2,在批次大时,会沿Q维度并行,每个核心处理一部分Q,在核心内部完成Q与K^T的归约;在解码阶段,Q维度的并行性会消失,内核会切换到Split-KV策略,改变归约顺序。很多推理引擎,比如vLLM,会对KV缓存做“分块预填充”,也会导致不同块的归约顺序不同。

Thinking Machines Lab的解决方案是固定分割大小,不按照分割数量来拆分KV缓存,而是按照固定分割大小来拆分。比如不管KV缓存的总长度是1000还是2000,都按照每个分割256个元素的大小来拆分。同时,在注意力内核之前统一更新KV缓存的布局,确保预填充和解码阶段的KV数据格式一致,避免因数据布局差异导致归约顺序变化。

实验效果

Thinking Machines Lab用Qwen/Qwen3-235B-A22B-Instruct-2507模型,提示词为“介绍一下理查德·费曼(Tell me about Richard Feynman)”,温度设置为0(贪婪采样,理论上应输出唯一结果),总共采样1000次。

使用常规内核时,结果令人意外,1000次采样产生了80个不同的完成结果。所有结果的前102个token完全相同,从第103个token开始出现分歧。

启用“批次不变内核”后,1000次采样的结果完全一致,没有任何差异。这表明只要解决批次不变性问题,大模型推理的非确定性可以被彻底消除。

性能方面,未经优化的批次不变内核会让推理速度下降约2倍,但经过优化,比如调整核心的调度、优化内存的访问后,性能损耗已控制在可接受范围内。这对于需要结果一致性的场景,如金融AI、医疗诊断和强化学习训练等,这种性能上的权衡是值得的。

在强化学习方面,这项研究让大模型的“在线策略强化学习”(On-Policy RL)成为可能。之前在线策略RL难以落地,是因为训练时的模型输出和推理时的模型输出不一致。有了批次不变内核后,训练和推理的输出完全一致,KL散度可以保持在0,真正实现了在线策略。Thinking Machines Lab的团队在Bigmath上的实验表明,没有批次不变内核时,不使用离线策略校正的RL训练会在318步左右出现奖励崩溃;启用批次不变内核后,即使不使用校正,训练也能顺利进行,奖励的稳定性大幅上升。

研究意义

这项研究不仅仅解决了大模型推理非确定性的技术难题,更重要的是为大模型的“可重复性”和“可靠性”提供了科学的解决方案。在AI行业快速发展的今天,我们常被性能、参数规模等指标吸引,却忽略了“可重复性”这个科学研究的基石。如果一个模型的输出无法复现,即便性能再强,也难以在需要严谨性的领域落地。

正如托马斯在社交媒体上总结的,大模型推理非确定性不只是浮点数非结合性或GPU并发执行的问题,核心罪魁祸首是批次方差,服务器负载不可预测地改变了数值计算。批次不变内核解锁了真正的可重复性,终于让强化学习的在线策略变得可行。

对于普通人来说,未来使用的AI产品会变得更加可靠,比如AI写的报告不会因服务器负载变化而出现不同版本,AI辅助的决策也不会因计算顺序差异而产生偏差。对于AI从业者来说,这篇文章提供了全新的思考视角,在追求模型性能的同时,也要关注底层计算的确定性,这或许会成为未来大模型技术竞争的新焦点。

最后,博客名字“联结主义”并非凭空创造,它是1980年代AI领域的重要子领域,核心研究方向是“神经网络与生物大脑的相似性”。米拉·穆拉蒂在社交媒体上解释说,Thinking Machines Lab的使命之一是提高人们对AI的科学理解,与更广泛的研究社区合作,推出这个博客就是为了分享他们的科学见解。更有意思的是,按照联合创始人Lilian Weng的补充,Thinking Machines Lab的第一代旗舰产品就叫“Connection Machine”。

今天关于这篇文章的解读就到这里,链接会放在视频简介里。如果大家有任何疑问或想讨论更多技术细节,欢迎在评论区留言。感谢收看本期视频,我们下期再见。

Was this summary helpful?

Quick Actions

Watch on YouTube

Related Summaries

Summarize a New YouTube Video

Enter a YouTube video URL below to get a quick summary and key takeaways.