Understanding and Mitigating Numerical Sources of Nondeterminism in LLM Inference
Understanding and Mitigating Numerical Sources of Nondeterminism in LLM Inference
- 作者: Jiayi Yuan, Hao Li, Xinheng Ding, Wenya Xie, Yu-Jhe Li, Wentian Zhao, Kun Wan, Jing Shi, Xia Hu, Zirui Liu
- 机构: 1Rice University, 2University of Minnesota Twin Cities, 3Adobe
A1 主要贡献
大型语言模型(LLM)的性能评估和基准测试的准确性和可复现性至关重要。本文研究了一个常被忽视的影响因素:数值精度。
- 核心问题:LLM的性能可复现性是脆弱的。即使在采用确定性贪心解码(greedy decoding)和固定随机种子的设置下,改变系统配置,如评估批处理大小(batch size)、GPU数量和GPU型号,也会导致生成的响应出现显著差异。这个问题在需要生成长思维链的推理模型中尤为突出,因为早期的微小舍入差异会级联放大,最终影响准确率。例如,在使用bfloat16(BF16)精度和贪心解码时,像DeepSeek-R1-Distill-Qwen-7B这样的推理模型,仅仅因为GPU数量、类型和评估批处理大小的不同,其准确率变化可高达9%,响应长度差异可达9,000个token。
图1:左图:在BF16精度和贪心解码下,模型的输出会因GPU数量、评估批处理大小和GPU硬件版本等因素而显著变化。右图:例如,仅评估批处理大小的改变就可能导致响应出现明显差异,这一点常被评估基准所忽略且未进行标准化。
- 研究目标与创新点:
- 系统性调查:本文首次对数值精度如何影响LLM推理的可复现性进行了系统性调查。通过在各种硬件、软件和精度设置下进行严格控制的实验,量化了模型输出在何时以及如何发生分歧。
- 揭示根源:本文追溯了这种可变性的根本原因——有限数值精度下浮点运算的非结合性(non-associative),即由于有限精度和舍入误差,
(a + b) + c不等于a + (b + c)。 - 提出优化方案:受研究发现启发,本文开发了一个名为LayerCast的轻量级推理流水线。该方案以16位精度存储权重,但在FP32精度下执行所有计算,从而在内存效率和数值稳定性之间取得了平衡。
- 实践建议:
- 对于随机采样:如果计算资源充足,建议使用非零温度的随机采样并进行多次运行。报告平均准确率、平均答案长度和误差棒。注意,在16位精度和小数据集上,通常需要更多次试验才能获得稳定结果。
- 对于贪心解码:如果使用单次运行的贪心解码,建议使用FP32精度来提高结果的可复现性。
本文的主要贡献可总结为:
- 对数值精度在贪心解码和随机采样场景中如何影响可复现性进行了广泛分析。研究发现,由于精度有限,模型性能对硬件和系统配置(如张量并行大小、评估批处理大小和GPU类型)的变化高度敏感。
- 向社区提出了可复现推理的实用建议。
- 提出了一种名为LayerCast的优化FP32推理流水线,它在FP32中执行所有计算,同时将模型权重保留为BF16精度,有效平衡了内存效率和可复现性。代码已作为vLLM的补丁发布。
图2:FP32、FP16和BF16的浮点数格式。
A3 背景知识与关键观察
2.1 当前LLM可复现性的实践
两种评估策略。目前广泛采用的评估策略有两种。第一种是贪心解码,即将温度设置为零,模型总是选择概率最高的token。第二种策略采用非零温度的随机采样,并使用Pass@K指标【8,Evaluating large language models trained on code,2021,arXiv】来评估性能。下面介绍可复现性研究中通常采用的实验设置。
贪心解码。这是一种确定性的文本生成策略,模型在每一步都选择概率最高的token。理论上,给定相同的输入和模型参数,这种方法应产生相同的输出。然而,本文将证明,由于数值精度问题,即使是贪心解码也可能在不同运行中产生不同的结果。
随机采样。该方法基于模型的概率分布和非零温度来选择输出token,以引入随机性。最常用的评估指标是多次独立试验的平均准确率,这等同于Pass@1【8,Evaluating large language models trained on code,2021,arXiv】。
确定性库和随机种子。在LLM生成中,随机种子控制着非贪心解码时选择token的伪随机数生成器。固定随机种子是标准做法;然而,这并不总是足以确保贪心解码的完全确定性。即使种子固定,计算顺序的差异也可能改变伪随机数生成器的序列【16,A sober look at progress in language model reasoning: Pitfalls and paths to reproducibility,2025,arXiv】。同时,像PyTorch和TensorFlow这样的框架提供了确定性行为的标志(例如,torch.use_deterministic_algorithms(True))。这些标志能确保某些操作避免使用可能在不同运行中产生不同结果的算法。然而在实践中,即便设置了这些标志,仍可能产生不确定的结果。
挑战。尽管做出了这些努力,在LLM推理中实现完美的可复现性仍然是一个挑战。下一小节将深入探讨一个关键因素,即使在使用贪心解码和上述实践的情况下,该因素也常常导致不确定性行为。
2.2 数值精度、舍入误差和GPU内核
数值精度的重要性。数值精度对可复现性至关重要【26,Impacts of floating-point non-associativity on reproducibility for hpc and deep learning applications,2024】。更高精度的数字具有更小的舍入误差,可以减少结果的可变性。例如,即使模型权重是16位精度,计算的某些部分(如softmax或注意力分数)也使用FP32。这种做法可以减轻运行间的差异,但它不提供理论保证,因为浮点算术无法精确表示所有实数。即使精度相同,不同的硬件实现或计算顺序也可能导致结果略有不同。本文主要关注数值精度的重要性,并详细分析其对LLM推理可复现性的影响。
不同精度格式的舍入误差。图2展示了BF16、FP16和FP32的格式。表1说明了当同一个真实值在三种不同数值格式中表示时发生的舍入误差。正如预期的那样,与FP32相比,像FP16和BF16这样的低精度格式会引入更大的舍入误差。
表1:当同一真实值(1.00012)以三种不同的数值格式表示时的舍入误差。
浮点运算的非结合性。导致不确定性的一个关键方面是浮点运算的非结合性(non-associativity)。这意味着由于累积的舍入误差,数字相加的顺序会影响最终结果。表2提供了说明性的例子,展示了求和顺序如何在FP32和BF16中导致不同的结果。如例子所示,虽然舍入遵循确定性规则,但非结合性引入了不确定性,而BF16更大的舍入误差进一步放大了这种不确定性。这在LLM推理期间GPU中执行的并行计算中尤为重要。
表2:两个说明性案例展示了舍入误差与浮点加法的非结合性如何影响数值结果。示例1揭示了两种精度下都存在累积误差;示例2仅在BF16中出现差异,而FP32提供相同的结果,说明更高精度的数值类型对舍入误差更具容忍性。
非结合性对LLM的影响。在LLM的背景下,当最高概率相近时,即使是logit值的微小数值变化也可能影响最终的token选择。GPU中的浮点运算表现出非结合性,即由于有限的精度和舍入误差,(a + b) + c 不等于 a + (b + c)。这一特性直接影响Transformer架构中注意力分数和logit的计算,其中跨多个线程的并行操作可能根据执行顺序产生不同的结果。形式上,对于一组值 ${v_1, v_2, ..., v_n}$ 的归约操作 $\oplus$(例如求和注意力分数或计算softmax分母),其结果取决于具体的操作顺序:$L_{n}^{i=1} v_i = v_{\pi(1)} \oplus v_{\pi(2)} \oplus ... \oplus v_{\pi(n)}$,其中 $\pi$ 是由线程调度决定的索引 ${1, 2, ..., n}$ 的一个排列。
GPU内核与操作顺序。在服务系统中,有几个因素可以改变浮点运算的执行顺序,包括:(1) 连续批处理(continuous batching)【36,Orca: A distributed serving system for {Transformer-Based} generative models,2022,16th USENIX Symposium on Operating Systems Design and Implementation (OSDI 22)】,它动态地修改批处理中的请求集;(2) 不同的算子实现,例如Split-K与Non-Split-K矩阵乘法(MatMul)【23,Efficient gemm in CUTLASS,NVIDIA Developer Documentation】;(3) 算子超参数,如MatMul或FlashAttention中的块大小;(4) 并行设置中的集体操作,如AllReduce;以及(5) 并行化策略,如张量并行(TP),它将计算分布在多个GPU上。所有这些因素共同影响LLM推理的确定性。
批处理不变性操作。为了解决这个问题,引入了批处理不变性操作(Batch-invariant operations)【14,Defeating nondeterminism in llm inference,2025,https://thinkingmachines.ai/blog/defeatingnondeterminism-in-llm-inference/】,包括批处理不变的FlexAttention、RMSNorm和MatMul内核。这些内核保证推理结果在批处理大小变化时保持确定性。具体来说,该方法通过沿批处理维度并行化计算来实现确定性,从而将批处理大小与单个请求的最终输出解耦。然而,正如其名称“批处理不变”所示,该技术目前仅限于处理与批处理维度相关的变化,使其对连续批处理和其他与批处理大小相关的变化具有鲁棒性,但对其他形式的不确定性,如改变TP大小或GPU类型,则无能为力 。
A2 方法细节
4 近乎完美的确定性复现:LayerCast
FP32的成本。基于我们对可复现性问题何时以及为何出现的发现,我们现在提出改进LLM推理可复现性的方向。基本的解决方案是使用FP32精度,正如我们在前面章节中所示。然而,这种方法会带来显著的成本:与BF16相比,它使内存使用和推理时间增加了一倍,这使得它在许多生产环境中不切实际。
LayerCast的提出。我们提出了一个更高效的解决方案:LayerCast,这是一种混合精度方法,旨在平衡计算稳定性和内存效率。
LayerCast的工作原理。LayerCast的工作方式如下:(1) 最初以FP32精度加载模型参数;(2) 在推理前,将所有线性层的权重和偏置显式转换为BF16进行存储;(3) 在推理运行时,逐个将每个权重即时上转型(upcasting)回FP32以进行矩阵乘法。
LayerCast的优势。如图7所示,这种方法确保所有计算都以完整的FP32精度进行,同时以节省内存的16位格式存储权重。因此,该模型在计算过程中受益于FP32的稳定性,而内存占用仍然接近于16位模型。这提供了与完全FP32推理相当的确定性,但内存需求大大降低,尤其对于长上下文场景中的KV缓存(KV cache)非常有益。
图7:LayerCast在单个Transformer块内的工作流程。此处省略了跳跃连接、位置嵌入和激活函数。
LayerCast的实验结果。我们的实验结果有力地支持了这种方法。在考察各次运行准确率的标准差时,LayerCast实现的稳定性几乎与FP32相同,而BF16则表现出高得多的可变性。如图8所示,分歧指数(divergence index)的测量结果进一步证实,LayerCast在不同的批处理大小和GPU配置下都能产生一致的输出,分歧率低于3.4%。从资源角度看,LayerCast相比完全FP32具有显著优势:内存使用减少了34%(这对于长上下文场景中的KV缓存尤其重要)。这些改进使得LayerCast成为既要求确定性输出又要求合理性能的应用的实用解决方案。完整结果请参阅附录F。
图8:DeepSeek-R1-Distill-Qwen-7B在MATH500上,BF16、FP32和LayerCast三种情况下的分歧指数(Div_Index)分布。
A4 实验环境
- 模型:实验涵盖四款最新的LLM,包括两款推理模型(DeepSeek-R1-Distill-Qwen-7B, DeepSeek-R1-Distill-Llama-8B)和两款非推理模型(Qwen2.5-7B-Instruct, Llama-3.1-8B-Instruct)。为了验证通用性,还在一个更大的模型(Qwen3-32B)上进行了额外实验。
- 数据集:使用了五个常用的LLM评估基准:AIME’24, MATH500, LiveCodeBench-Easy, LiveCodeBench-Medium, 和 LiveCodeBench-Hard。为了验证任务多样性,还在一个涵盖研究生水平科学问题的基准(GPQA Diamond)上进行了实验。
-
模型参数:
- 推理模型的最大输出token长度设置为32,768。
- 非推理模型的最大输出token长度设置为2,048。
- 随机采样实验中,温度(temperature)设置为0.7,top-p设置为0.95。
-
硬件配置:
- GPU型号:NVIDIA L40S 和 A100。
- GPU数量:2个 和 4个。
- 实验组合:共进行了12种不同的运行时配置,即2种GPU类型 × 2种GPU数量 × 3种批处理大小(8, 16, 32)的全部组合。
-
软件配置:
- 推理后端:主要使用vLLM【20,Efficient memory management for large language model serving with pagedattention,2023,Proceedings of the 29th Symposium on Operating Systems Principles】,并使用HuggingFace Transformers进行验证,以确保结果与后端无关。
- 评估实现:评估实现和提示(prompt)设置改编自SkyThought-evals【29,Sky-t1: Train your own o1 preview model within $450,2025,https://novasky-ai.github.io/posts/sky-t1】 。
A4 实验结果
3.2 贪心解码 ≠ 确定性输出
核心发现:与普遍认知相反,实验表明贪心解码在不同的硬件和系统配置下并不能保证确定性的输出。然而,使用FP32精度对此有很大帮助。
- 准确率稳定性:如表3所示,FP32精度下准确率的标准差(Std@Acc)几乎为零,实现了近乎完美的可复现性。FP16表现出中等程度的可变性,而BF16则表现出显著的不稳定性。这种现象在推理模型(如DeepSeek-R1-Distill-Qwen-7B)上尤为明显,其在AIME’24任务上使用BF16时的准确率标准差高达9.15%。这表明,使用不同的GPU类型或数量可能会导致无法复现他人的结果。
表3:在BF16、FP16和FP32数值精度下,贪心解码在12种不同设置(GPU类型、GPU数量和批处理大小)下的准确率标准差(Std@Acc)。推理模型比非推理模型表现出更大的方差。更多结果见附录C。
- 输出长度稳定性:如表4所示,BF16精度不仅影响准确率,还导致响应长度在不同设置下出现显著变化,差异可高达9,000个token。这对需要报告响应长度指标的高效推理研究(如long-to-short研究)构成了重大挑战。相比之下,FP16能在一定程度上减少输出长度的方差,而FP32提供了最一致和可靠的控制。因此,研究建议在贪心解码的研究中应使用FP32精度。
表4:在BF16、FP16和FP32数值精度下,贪心解码在12种不同设置(GPU类型、GPU数量和批处理大小)下的输出长度标准差。推理模型的输出长度表现出很大的方差。更多结果见附录C。
- 分歧原因分析:
- 微小概率差距:图3(右)显示,在推理模型中,排名第一和第二的候选token之间的概率差异通常非常小。
- 数值误差导致翻转:图3(左)展示了一个分歧点处的token logit示例,说明数值精度误差足以翻转排名第一和第二的token概率,从而导致生成路径的分歧。
- 精度与概率方差:图4量化了不同精度下top-1 token预测概率的标准差(Avg_Std@Top1_Prob)。BF16由于尾数位较少(7位,而FP16为10位),引入的计算误差更大,导致概率方差显著高于FP16和FP32。当这种波动幅度超过了top-1和top-2 token之间本已很小的概率差距时,就会发生token翻转。FP32的23位尾数使其对运行时变化几乎免疫。
图3:左图:在BF16精度下,同一问题的两个不同答案在分歧点处的top-5 tokens及其预测概率。右图:排名第一和第二的竞争token之间的概率差距。我们观察到在推理模型中,token概率差距通常很小。
图4:4个模型和5个任务在BF16、FP16和FP32精度下,横跨12种不同设置的Avg_Std@top1_prob。FP16的方差显著低于BF16。FP32的方差接近于零,表现出对浮点舍入误差的强大鲁棒性。
- 分歧点分布:图5显示,随着精度从BF16提高到FP32,不仅发生分歧的样本总数减少(从超过90%降至2.2%),而且分歧发生的位置也显著后移。这意味着高精度下的分歧对最终输出和答案准确率的影响更小。
图5:DeepSeek-R1-Distill-Qwen-7B在MATH500上,BF16、FP16和FP32精度下的分歧指数(Div_Index)分布。更高的数值精度导致分歧样本减少,且分歧点向更后的token位置移动。
3.3 随机采样同样存在可复现性问题
核心发现:虽然贪心解码易受token级不稳定的影响,但随机采样由于其内在的随机性,可能被认为对此不敏感。然而,实验表明,数值精度同样显著影响基于采样的评估的稳定性和可复现性。
- Pass@1评估的方差:实验在AIME’24(16次和64次独立运行)和MATH500(4次独立运行)上进行Pass@1评估。表5中的标准差是基于每个模型在6种系统配置(不同批处理大小和GPU数量)下的Pass@1性能计算的,而非同一配置的重复运行。因此,该方差主要反映了有限数值精度的影响,而不是模型固有的随机性。
- 精度与方差趋势:如表5所示,数值精度引入了额外的方差源。较低精度的格式(如BF16)倾向于产生更高的输出方差。这一趋势在大多数模型和MATH500基准上都成立。
- 特例分析:AIME’24上DeepSeek-R1-Distill-Qwen-7B在n=64时,FP32的方差(0.7377)高于BF16(0.3749)。这被解释为小数据集(仅30个问题)和采样动态的结果,而非趋势的矛盾。在AIME'24中,一个答案的改变就能使Pass@1改变约3.33%,放大了统计噪声。此外,在n=16时方差最高的BF16,在增加到n=64时改进最大,这表明通过充分平均可以减轻数值精度降低带来的不稳定性,但在典型样本量下,它仍然是主导因素。
- 结论:数值精度是采样评估可复现性的关键因素。使用BF16进行随机采样的研究人员可能需要比使用更高精度格式多得多的运行次数才能达到相同的统计置信度,这代表了一种在当前评估实践中很少被承认的计算开销。
3.4 消融实验:运行时配置如何影响可复现性
核心发现:在确定数值精度是影响LLM可复现性的关键因素后,本节研究了具体的运行时配置——批处理大小、GPU数量和GPU类型——如何影响不同精度格式下的输出稳定性。实验在DeepSeek-R1-Distill-Qwen-7B上以贪心解码方式进行。
- 三个关键影响因素:
- GPU数量:如图6(a)所示,在BF16精度下,使用4个GPU的配置通常比使用2个GPU的配置表现出更高的概率变化。这可能是因为增加的并行计算引入了更多样化的浮点运算顺序,从而导致不同的舍入误差。
- 批处理大小:如图6(b)所示,较小的批处理大小反直觉地产生了更高的token概率方差。这可能是因为它们需要更多的顺序处理步骤来累积舍入误差,而较大的批处理则受益于优化的CUDA内核内的并行计算,从而限制了误差累积。
- GPU架构:如图6(c)所示,在相同配置下,A100通常比L40S表现出略高的概率方差,这可能源于硬件级浮点实现和内存层次结构的差异。
所有这些效应在BF16精度下最为明显,其有限的尾数位使其对舍入效应特别敏感。
图6:不同运行时配置下的Avg_Std@top1_prob受控实验:(a) 2个GPU vs 4个GPU(改变批处理大小);(b) BS=8 vs 16 vs 32(改变A100 GPU数量);(c) L40S vs A100(BF16,改变GPU数量)。更多的GPU数量和更小的批处理大小倾向于增加推理的不稳定性。
A7 补充细节
5 相关工作
历史背景与现状。自传统深度学习时代以来,模型的可复现性【28,Nondeterminism and instability in neural network optimization,2021,International Conference on Machine Learning】、【39,Randomness in neural network training: Characterizing the impact of tooling,2022,Proceedings of Machine Learning and Systems】、【33,Checkpointing and deterministic training for deep learning,2022,Proceedings of the 1st International Conference on AI Engineering: Software Engineering for AI】一直是复杂且尚未完全解决的挑战性问题。随着大型语言模型(LLM)的兴起,大量实证研究【21,Is your code generated by chatgpt really correct? rigorous evaluation of large language models for code generation,2023,Advances in Neural Information Processing Systems】、【35,Benchmarking large language model volatility,2023,arXiv】、【3,Optimizing large language model hyperparameters for code generation,2024,arXiv】、【11,Studying how configurations impact code generation in llms: the case of chatgpt,2025,arXiv】、【19,Measuring determinism in large language models for software code review,2025,arXiv】、【32,Assessing consistency and reproducibility in the outputs of large language models: Evidence across diverse finance and accounting tasks,2025,arXiv】、【24,An empirical study of the non-determinism of chatgpt in code generation,2025,ACM Transactions on Software Engineering and Methodology】、【38,An analystinspector framework for evaluating reproducibility of llms in data science,2025,arXiv】表明,LLM推理过程中的不确定性行为被广泛观察到。现有研究【5,Llm stability: A detailed analysis with some surprises,2024,arXiv】发现输出长度与推理一致性之间存在明显的负相关关系:随着生成文本长度的增加,推理过程中的输出变化也会增加,这解释了为什么推理模型倾向于表现出更大的推理不确定性。
影响因素。多种因素可能影响LLM推理结果的可复现性,包括但不限于提示格式、解码参数(如温度和top-p阈值)、随机种子设置以及硬件和软件配置【17,Solving reproducibility challenges in deep learning and llms: Our journey,2025,https://www.ingonyama.com/post/ solving-reproducibility-challenges-in-deep-learning-and-llms-our-journey】、【10,Reproducibility,2025,https://pytorch.org/docs/stable/notes/ randomness.html】、【9,Reproducibility,2025,https://huggingface.co/docs/diffusers/v0.14. 0/en/using-diffusers/reproducibility】。现有研究【24,An empirical study of the non-determinism of chatgpt in code generation,2025,ACM Transactions on Software Engineering and Methodology】、【11,Studying how configurations impact code generation in llms: the case of chatgpt,2025,arXiv】、【3,Optimizing large language model hyperparameters for code generation,2024,arXiv】、【21,Is your code generated by chatgpt really correct? rigorous evaluation of large language models for code generation,2023,Advances in Neural Information Processing Systems】、【4,Non-determinism of "deterministic" llm settings,2025】已系统地分析了解码参数(例如,温度、top-p)对LLM推理输出稳定性的影响。Hochlehnert等人【16,A sober look at progress in language model reasoning: Pitfalls and paths to reproducibility,22025,arXiv】指出,许多报道的LLM性能改进实际上部分归因于不公平的比较和评估过程中未报告的方差来源。在实际应用中,使用FP32(单精度浮点)推理【30,Why are the vllm and hugging face transformers inference results inconsistent?,2025,https://github.com/vllm-project/vllm/issues/12343】、【31 ,Different logprobs for qwn2-vl when running on transformers and on vllm,2025,https://github.com/vllm-project/vllm/issues/12699】通常在经验上被认为可以增强数值计算的鲁棒性。Feng等人【12 ,How numerical precision affects mathematical reasoning capabilities of llms,2024,arXiv】研究了数值精度对LLM数学推理能力的影响。然而,目前缺乏系统性和定量化的研究来专门分析不同数值格式(例如,FP32、FP16、BF16)对LLM推理可复现性的影响。
A5 结论
本文对由数值精度问题引起的LLM推理可复现性挑战进行了全面的调查。通过跨多个模型、任务和硬件配置的实验,我们揭示了即使在被认为是确定性的贪心解码下,由于浮点运算的非结合性,输出也可能发生显著变化。我们证明了精度格式对稳定性有关键影响,其中FP32提供了近乎完美的确定性,而尽管被广泛使用,BF16却表现出巨大的方差。为了在不承担FP32全部开销的情况下应对这些挑战,我们提出了LayerCast,这是一个实用的解决方案,它在保持合理内存效率的同时,实现了FP32级别的确定性。我们的研究结果强调了标准化评估实践以考虑数值精度效应的重要性,尤其是在LLM越来越多地被部署于可复现性至关重要的关键应用中。
A6 附录
A 评估中使用的提示格式
格式来源。我们的评估实现和提示格式改编自SkyThought仓库。AIME’24和MATH500在所有模型中共享一个通用的提示格式。LiveCodeBench-Easy、LiveCodeBench-Medium和LiveCodeBench-Hard在所有模型中也使用相同的提示格式,该格式根据问题的测试类型(stdin,functional)而有所不同。___PROBLEM_TEXT___是占位符,在提示时将被替换为基准测试中的具体问题文本。
A.1 数学基准测试:AIME’24和MATH500
DeepSeek-R1-Distill-Qwen-7B and DeepSeek-R1-Distill-Llama-8B: <|begin_of_sentence|><|User|>Return your final response within \\boxed{}. ___PROBLEM_TEXT___<|Assistant|><think>\n
Qwen2.5-7B-Instruct
<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
Return your final response within \boxed{}. ___PROBLEM_TEXT___<|im_end|>
<|im_start|>assistant
Llama-3.1-8B-Instruct
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Return your final response within \boxed{}. ___PROBLEM_TEXT___<|eot_id|><|start_header_id|>assistant<|end_header_id|>
A.2 代码生成基准测试:LiveCodeBench-Easy, LiveCodeBench-Medium, LiveCodeBench-Hard
DeepSeek-R1-Distill-Qwen-7B 和 DeepSeek-R1-Distill-Llama-8B
对于“stdin”测试的问题:
<|begin_of_sentence|><|User|>Generate an executable Python function generated from the given prompt. The function should take stdin as input and print the output. Simply call the function after the definition. ___PROBLEM_TEXT___<|Assistant|><think>
对于“functional”测试的问题:
<|begin_of_sentence|><|User|>Generate an executable Python function generated from the given prompt. Return the function body without invoking it at the final solution. ___PROBLEM_TEXT___<|Assistant|><think>
Qwen2.5-7B-Instruct
对于“stdin”测试的问题:
<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
Generate an executable Python function generated from the given prompt. The function should take stdin as input and print the output. Simply call the function after the definition. ___PROBLEM_TEXT___<|im_end|>
<|im_start|>assistant
对于“functional”测试的问题:
<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
Generate an executable Python function generated from the given prompt. Return the function body without invoking it at the final solution. ___PROBLEM_TEXT___<|im_end|>
<|im_start|>assistant
Llama-3.1-8B-Instruct
对于“stdin”测试的问题:
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Generate an executable Python function generated from the given prompt. The function should take stdin as input and print the output. Simply call the function after the definition. _PROBLEM_TEXT___<|eot_id|><|start_header_id|>assistant<|end_header_id|>
对于“functional”测试的问题:
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Generate an executable Python function generated from the given prompt. Return the function body without invoking it at the final solution. _PROBLEM_TEXT___<|eot_id|><|start_header_id|>assistant<|end_header_id|>
B BFloat16下准确率方差的补充结果
BF16精度下的准确率方差。在第1节中,我们通过图1展示了在相同种子和贪心解码下,不同批处理大小和GPU数量导致BF16精度的准确率存在方差。为了提供对不同问题领域可复现性挑战的全面理解,图9将此分析扩展到所有评估的数据集。结果揭示了一个清晰的模式:虽然在MATH500和LiveCodeBench-Easy上,BF16精度下的准确率方差相对较小,但在更具挑战性的LiveCodeBench-Medium和LiveCodeBench-Hard基准测试中,方差变得更加显著。这种依赖于数据集的变化表明,数值精度对可复现性的影响随着问题复杂性的增加而扩大。
BFloat16 LiveCodeBench-Easy
BFloat16 LiveCodeBench-Medium
BFloat16 LiveCodeBench-Hard
图9:在BFloat16下,不同设置的准确率差异显著。
C 贪心解码的补充结果
全面结果展示。继第3.2节的图5和表3之后,我们在此呈现所有实验设置下的全面结果。我们报告三个关键指标:Std@Acc、Div_Percent和Average Div_Index。
数据表说明。
- 表6展示了在LiveCodeBench-Medium和LiveCodeBench-Hard数据集上,BF16、FP16和FP32精度下12种运行时配置的准确率标准差(Std@Acc)。
- 表7报告了这两个数据集在同样12种运行时配置和精度设置下的平均输出长度标准差(Avg_Std@Output_Length)。
- 表8中,我们测量了每个样本在12种运行时配置下的Div_Index——在0到Div_Index范围内,同一问题的12个响应在每个位置都有完全相同的token——并报告了整个数据集的平均Div_Index。
- 表9显示了每个数据集中,在12种运行时设置下表现出输出分歧的样本百分比。
结论。这些结果一致支持我们的结论:在贪心解码期间,浮点运算的舍入误差会导致严重的可复现性问题。随着数值精度从BF16增加到FP32,分歧现象显著减少,这表现为更低的Std@Acc、更低的Div_Percent和更大的Div_Index值。
C.1 更大模型和多样化任务的附加结果
验证发现的普适性。为了进一步验证我们关于数值精度对可复现性影响的发现,我们对一个更大的模型(Qwen3-32B)和一个多样化的推理任务(GPQA Diamond)进行了额外的实验。这些结果表明,我们发现的可复现性挑战并不仅限于7-8B模型或数学/编码任务。
更大模型评估(Qwen3-32B)。为了展示数值精度对更大模型可复现性的影响,我们在AIME’24数据集上对Qwen3-32B进行了基准测试,测试覆盖了2种GPU数量(2和4)、2种GPU版本(A100和L40S)以及3种批处理大小(8、16、32)的不同运行时配置。由于内存限制,Qwen3-32B无法以FP32精度加载到2个L40S GPU中,导致在总共12个配置中,FP32只有9个可行的配置。表10中的结果证实,更大的模型也表现出我们在7-8B模型中发现的同样的可复现性挑战。在所有配置中,BF16显示出显著的方差,Std@Acc为5.02%,而FP32保持了更好的一致性,Std@Acc仅为1.11%。
表6:在LiveCodeBench数据集上,BF16、FP16和FP32数值精度下,贪心解码在12种不同设置(GPU类型、GPU数量和批处理大小)下的准确率标准差(Std@Acc)。
表7:在LiveCodeBench数据集上,BF16、FP16和FP32数值精度下,贪心解码在12种不同设置(GPU类型、GPU数量和批处理大小)下的平均输出长度标准差(Avg_Std@Output_Length)。
表8:在BF16、FP16和FP32数值精度下,12种不同设置的平均分歧指数(Average Div_Index)。表中,“-1”表示在给定设置下,数据集中没有任何样本出现分歧。
多样化任务评估(GPQA Diamond)。为了证明可复现性问题不仅限于数学和编码任务,我们在GPQA Diamond基准上评估了DeepSeek-R1-Distill-Llama-8B,该基准专注于研究生水平的科学问题。表11显示了在12种不同运行时配置下的结果。结果显示,BF16的Std@Acc为3.03%,而FP32为1.96%,证实了数值精度在多样化的推理领域中同样影响可复现性。
表9:在BF16、FP16和FP32数值精度下,12种不同设置(GPU类型、GPU数量和批处理大小)的分歧百分比(Div_Percent)。
表10:Qwen3-32B在AIME’24上,不同运行时配置(GPU类型、GPU数量、批处理大小)和数值精度下的准确率。OOM表示内存不足错误。
结论。这些在更大模型和多样化推理任务上的额外实验进一步验证了我们的核心发现:数值精度对模型规模和任务领域的可复现性具有关键影响,BF16始终比FP32表现出更高的方差。
C.2 使用HuggingFace Transformers后端进行验证
验证与后端无关。为了验证我们观察到的可复现性问题并非vLLM推理后端所特有,我们使用了标准的HuggingFace Transformers实现(不含vLLM或PagedAttention)进行了额外的实验。实验设置与我们主论文中的设置完全相同:2种GPU数量(2和4)、2种GPU版本(A100和L40S)以及3种批处理大小(8、16、32),每种精度覆盖12种设置。
结果一致。表12显示了两个模型在AIME’24上的结果。同样的模式再次出现:FP32推理是完全可复现的,两个模型的Std@Acc均为0%;而BF16则表现出不稳定性,Qwen2.5-7B-Instruct的Std@Acc为2.23%,Llama-3.1-8B-Instruct为1.51%,这与我们使用vLLM报告的方差相似。这些结果表明,可复现性现象是GPU硬件和浮点算术的根本问题,并且在不同的推理后端上都可以观察到。
表11:DeepSeek-R1-Distill-Llama-8B在GPQA Diamond上,不同运行时配置(GPU类型、GPU数量、批处理大小)和数值精度下的准确率。
表12:使用HuggingFace Transformers后端(无vLLM)在AIME’24上,12种不同设置下的准确率标准差(Std@Acc),证实了可复现性问题与后端无关。
D 消融研究的补充结果
研究范围。延续第3.4节的讨论,我们提供了额外的结果,这些结果隔离了特定的运行时配置,以检验它们对可复现性的个体影响。对于贪心解码实验,我们只关注BF16和FP16精度,因为FP32精度能有效减轻与数值精度相关的误差,因此对可复现性挑战的洞察有限。
GPU数量的影响。表13和表14讨论了不同GPU数量的影响,由于直观上这种影响依赖于GPU版本,我们分别考虑了在L40S和A100上的情况。表13报告了在三种不同批处理大小(8、16、32)下,使用2个或4个L40S GPU时LLM推理响应的Avg_Std@top1_prob,而表14则展示了使用A100 GPU时的相应结果。如表13所示,将GPU数量从2个增加到4个通常会导致更高的Avg_Std@top1_prob。这一观察表明,增加GPU数量可能会引入更大的推理不确定性。然而,在A100的设置下,这一趋势变得不那么一致,如表14所示,在许多情况下,2个GPU的结果甚至略高于4个GPU的结果。其原因之一是A100在我们的实验中确实表现出更高的不稳定性,其影响可能超出了GPU数量的影响(见图6(c))。
批处理大小的影响。表15检验了不同批处理大小的影响。我们报告了在不同GPU数量和GPU类型下,相同问题的LLM推理响应的Avg_Std@top1_prob。结果显示,更大的批处理大小一致地导致更低的Avg_Std@top1_prob,表明模型输出的可复现性更好。这一发现与我们的假设相符,即更高的并行度减少了误差累积。
GPU版本的影响。最后,我们比较了我们使用的两种GPU版本(L40S和A100)的影响。表16揭示,在相同的实验设置下,A100 GPU上的Avg_Std@top1_prob始终略高于L40S GPU。这与之前的发现一致,即在我们的实验中,A100表现出略高的硬件引起的可变性,这可能导致在不同运行时配置下,top-1 token预测的稳定性较差。
指标选择的讨论。表17、18、19和20展示了每次消融研究的Std@Acc。与Avg_Std@top1_prob不同,很难从Std@Acc中观察到清晰的趋势或模式。我们认为,Avg_Std@top1_prob是消融研究中一个更具信息量的指标,因为它直接反映了由舍入误差引入的数值不稳定性——即相同token预测概率的波动。然而,这种波动并不总能导致token翻转,因为只有当特定位置的变异超过了原始top-1和top-2概率差距时才会发生翻转,这本质上是一个随机事件。此外,即使发生token翻转——例如,将“the”替换为“that”——也未必会导致评估结果从正确变为不正确,反之亦然,因此可能不影响最终的准确率。
表13:不同数量L40S GPU下的不稳定性(Avg_Std@top1_prob (×10−4))
表14:不同数量A100 GPU下的不稳定性(Avg_Std@top1_prob (×10−4))
表15:不同批处理大小下的不稳定性(Avg_Std@top1_prob (×10−4))
表16:不同GPU版本下的不稳定性(Avg_Std@top1_prob (×10−4))
表17:不同数量L40S GPU下的不稳定性(Std@Acc)
表18:不同数量A100 GPU下的不稳定性(Std@Acc)
表19:不同批处理大小下的不稳定性(Std@Acc)
表20:不同GPU版本下的不稳定性(Std@Acc)
E 随机采样的补充结果
结果概述。在本节中,我们展示了更多与第3.3节讨论相关的结果。在随机采样设置中,我们报告了AIME’24和MATH500上完整的Pass@1结果集,以进一步评估不同精度设置下的可复现性。这些实验在不同的批处理大小(8、16、32)和GPU数量(2和4)下进行。标准差是沿着数值精度类型(BF16、FP16、FP32)计算的。
详细结果。表21、22、23和24分别总结了DeepSeekR1-Distill-Qwen-7B、DeepSeek-R1-Distill-Llama-8B、Qwen2.5-7B-Instruct、Llama-3.1-8B-Instruct的Pass@1准确率及其标准差。在大多数情况下,FP32产生的标准差最低,反映了在不同配置下更高的稳定性。然而,值得注意的是,有4/12的情况下FP16的结果更为稳定。这表明在随机采样期间,两种随机性来源可能会相互交织。我们仍然敦促研究人员进行更广泛的采样,以获得更具可复现性的结果。
F LayerCast的补充结果
评估范围。我们对第4节提出的LayerCast方法在多个模型和基准上进行了评估。这些评估涵盖了不同的批处理大小(8、16、32)、GPU数量(2和4)、GPU类型(A100和L40S)以及数值精度设置(BF16、FP32和LayerCast)。所有LayerCast实验都遵循与我们主要研究相同的实验配置。
理论基础。值得注意的是,LayerCast的有效性不仅仅是经验性的,它有坚实的理论基础。正如我们在第4节中所解释的,LayerCast在FP32精度下执行所有计算,这从根本上解决了我们确定的不确定性的根源——即低精度算术中舍入误差的累积。与纯FP32推理的唯一区别在于从BF16存储到FP32计算的即时转换,这是一个确定性操作,不会引入额外的方差。我们在此呈现的实验旨在展示该方法在不同模型架构下的实际适用性。
实验结果。表25报告了DeepSeek-R1-Distill-Qwen-7B在五个基准测试中的准确率和标准差。为了便于比较,也包含了FP32和BF16下的结果。正如预期的那样,BF16表现出最大的不稳定性,其标准差显著更高。LayerCast在稳定性方面与FP32相匹配(通常标准差为零或接近零),同时保持了内存效率。
通用性验证。为了进一步证明LayerCast在不同模型架构中的普遍有效性,表26展示了DeepSeek-R1-Distill-Llama-8B在AIME’24基准测试中,所有12种运行时配置下的结果。这些结果证实,LayerCast始终能够实现完美的可复现性,Std@Acc为0%(与FP32匹配),同时保持内存效率的优势,这与在DeepSeek-R1-Distill-Qwen-7B上观察到的模式相同。相比之下,BF16在A100配置上的Std@Acc为5.87%,在L40S配置上为3.44%,显示出显著的方差。
结论。这些结果证实了我们在第4节中的主要发现,表明LayerCast在不同模型架构下提供了与FP32相当的可复现性,同时在更低的内存占用下运行。
表21:DeepSeek-R1-Distill-Qwen-7B在6种系统配置下的Pass@1准确率(%)及其标准差。
表22:DeepSeek-R1-Distill-Llama-8B在6种系统配置下的Pass@1准确率(%)及其标准差。
表23:Qwen2.5-7B-Instruct在6种系统配置下的Pass@1准确率(%)及其标准差。
表24:Llama-3.1-8B-Instruct在6种系统配置下的Pass@1准确率(%)及其标准差。
表25:DeepSeek-R1-Distill-Qwen-7B在不同GPU数量、精度(包括LayerCast)和批处理大小下,横跨5个基准的准确率和标准差。
表26:DeepSeek-R1-Distill-Llama-8B在AIME’24上,不同GPU数量、GPU类型、精度(包括LayerCast)和批处理大小下的准确率。
💬 评论讨论
欢迎在这里分享您的想法和见解!