随着大型语言模型(LLM)的广泛应用,推理结果的稳定性和可复现性成为业界关注的核心问题。科学研究的根基是结果的可复现性,然而在实践中,随着模型规模的扩展和硬件并发性的加强,LLM推理结果经常表现出难以预料的差异。用户在多次询问同一问题时,可能会得到不同的回答;即便降低采样温度至零,采用纯贪婪采样,结果依然存在非确定性。对这一现象背后的本质探析,对于模型工程师和算法研究者具有重要意义。过去,浮点数的非结合性和并行执行环境的竞争条件被普遍认为是产生不确定性的主要原因,但这种"并发+浮点"假说并未给出完整的解释。实际上,即使在高并发的GPU环境中,诸如矩阵乘法这类常用核函数多次运行仍能产生逐位相同的结果,表明并发本身并非导致推理非确定性的决定因素。
要想揭开谜团,首先必须理解浮点数非结合性的本质。不同于整数运算,浮点数的加法运算不满足结合律。举例而言,表达式(a+b)+c与a+(b+c)的计算结果可能因舍入误差而大相径庭。这源于浮点数在存储中保留固定数量的有效数字,在处理量级差异巨大的数值时,不可避免地出现精度丢失和信息舍弃。这样的性质使得浮点运算结果高度依赖于运算顺序。即使在理论上确定的模型计算中,随意的加法顺序也可能导致显著的数值差异。
尽管该属性本身无可避免,但真正影响推理结果确定性的,是浮点加法运算执行顺序的不一致。结合并发执行环境中线程调度的不确定性,某些操作中采用了"原子加法"以保证计算结果的完整性。然而,原子加法的执行顺序在不同运行间并不恒定,直接导致结果的差异。令人意外的是,大多数大型语言模型的前向推理并未实际使用原子加法,且其内核本身是"运行间确定"的,也就是说,给定相同的输入和相同的执行环境,重复运行的结果应当保持一致。真正的问题出在推理系统整体的"批量不变性"缺失,也即推理结果会因批次大小或并行请求数量变化而不同。推理服务端通常为提升吞吐量采用动态批处理技术,将不同用户的请求合并计算。
由于内部核函数的实现对批大小敏感,改变批次规模会影响数值计算的具体路径和浮点运算的顺序,进而引起输出微小甚至显著的差异。对于单个用户而言,其他用户的请求数目和时间变动,实际上成为影响其推理结果的隐性输入,从而让推理结果表现为非确定性。批量不变性的缺失尤其体现在关键的三个核操作中:归一化层(如RMSNorm)、矩阵乘法以及注意力机制。每一个环节都涉及大规模的数值归约操作。以归一化为例,如果在小批量场景下,需要拆分归约操作到多个计算核心以充分利用硬件资源,便会改变运算顺序,从而破坏批量不变性。矩阵乘法中,若批量尺寸过小不得不跨多个核心拆分计算,或者切换不同的内核配置(如使用Tensor Core指令的调整),都可能导致同一数据在不同批量条件下产生不同的结果。
注意力机制更加复杂,除计算查询、键、值的乘积外,还涉及缓存的键值对处理。若缓存与当前处理令牌不同步分块计算,会使得相同序列的处理顺序与减员策略发生变化,进一步丧失批量不变性。针对上述问题,研究人员提出系统化的解决方案,旨在实现各类核操作的批量不变性。首先,在归一化层设计中,推荐基于数据并行策略,每个核心独立计算一个批次元素的归约,保持运算顺序一致,即使批量大小变化也不改变归约路径。对于矩阵乘法,最简策略是固定核配置,避免针对不同批量大小动态切换减少核,舍弃拆分归约技术,尽管牺牲部分性能,但能显著提升数值一致性。更进阶地,采用定长拆分方案(固定拆分大小而非拆分数量),保证拆分方式独立于批量规模,有效防止计算路径依赖批量变化。
注意力机制则需将缓存内存预布局保持一致,避免动态分片处理,配合定长拆分策略,确保无论序列如何分割和合并,运算路径保持恒定。实现这些改进的一个典型案例是基于vLLM的FlexAttention引擎,通过自定义批量不变核库替换PyTorch原生运算符,成功在真实推理环境中消除非确定性。实验证明,在使用批量不变核时,LLM在温度为零的采样下能生成完全一致的结果,而传统方法产生多达数十种不同回答。尽管目前批量不变核的性能尚未达到最优,仍有约20%性能损失,但这对于系统稳定性和可调试性带来了巨大提升,具有重要实用价值。进一步,实现确定性推理对强化学习中的"真正的在线策略优化"意义重大。浮点数运算微小差异使得训练时策略与推理时策略出现分歧,导致强化学习表现出偏离在线性的"离线学习"特征。
通过一致的推理输出,可实现训练与采样过程的位级一致性,大幅度提高强化学习的稳定性和效率。总结来看,大型语言模型推理非确定性的根源并不完全是并发环境中不可控的线程调度,而源于浮点数运算的非结合性与推理系统缺乏批量不变性这一本质性矛盾。要解决这一难题,需结合软硬件层面的方法,精细设计核函数确保运算路径保持稳定,避免依赖于动态批量导致的算法顺序变化。尽管这一过程会带来一定的性能折中,但提升结果一致性和可调试性对于科研与工业应用来说至关重要。整个领域正在步入更加严谨的数值计算时代,精细控制推理过程的数值行为将推动机器学习模型推理系统向更高的可用性和可信性发展。同时,这也为开发更加高效和鲁棒的深度学习核函数提供了丰富的研究方向,帮助业界真正实现大型语言模型推理的稳定、可复现和高性能。
随着技术的不断进步,批量不变性核函数的实践和优化必将成为推动LLM推理技术发展的关键突破点。 。