⏶16
给我FP32,否则宁死?可复现推理的挑战与解决方案
发表
由
Jiayi Yuan 提交
作者:
Jiayi Yuan,
Hao Li, Xinheng Ding, Wenya Xie, Yu-Jhe Li, Wentian Zhao, Kun Wan, Jing Shi, Xia Hu, Zirui Liu
摘要
大型语言模型(LLM)现在已广泛应用于各个领域,并展示出令人印象深刻的性能。然而,进步的基础是基准分数既准确又可重现。我们证明了LLM性能的可重现性是脆弱的:改变系统配置,如评估批处理大小、GPU数量和GPU版本,可能会导致生成的响应出现显著差异。这个问题在推理模型中尤为突出,其中早期token中微小的舍入差异可能会级联成不同的思维链,最终影响准确性。例如,在bfloat16精度和贪婪解码下,像DeepSeek-R1-Distill-Qwen-7B这样的推理模型,由于GPU数量、类型和评估批处理大小的差异,其准确性可能出现高达9%的变化,响应长度可能相差9,000个token。我们将这种变异性的根本原因追溯到有限数值精度下浮点运算的非结合性特点。这项工作首次系统地研究了数值精度如何影响LLM推理中的可重现性。通过在各种硬件、软件和精度设置下进行精心控制的实验,我们量化了模型输出何时以及如何出现差异。我们的分析表明,浮点精度——虽然对于可重现性至关重要——但在评估实践中却常常被忽视。受此启发,我们开发了一个名为LayerCast的轻量级推理管道,它将权重存储在16位精度,但所有计算都在FP32中执行,从而平衡了内存效率和数值稳定性。代码可在 https://github.com/nanomaoli/llm_reproducibility 获取。
这项新研究揭示,看似无害的因素——例如评估批次大小、GPU数量或精度格式——都可能导致大型语言模型的输出显著差异,从而破坏推理任务的可复现性。该论文系统地将这种脆弱性归因于浮点运算的非结合性,结果显示在bfloat16贪婪解码下,不同GPU设置间的准确率波动高达9%,输出长度差异达数千个token。为了兼顾内存效率和可靠推理,他们引入了LayerCast,这是一个轻量级流水线,能够以16位存储权重但在FP32中进行计算,从而在不产生过高开销的情况下实现稳定、可复现的推理。