数字格式革命
人工智能推动了新数字格式设计前所未有的爆炸性增长——数字在计算机硬件中的数字表示方式。为了以更低的成本训练和运行越来越大的神经网络,工程师们开始探索每一种可能的方式来减少用于表示数据的位数,从而节省计算时间和能源消耗。谷歌的bfloat16、英伟达的TensorFloat-32以及各种8位甚至4位表示法已成为AI工程师工具包中的标准工具。
这些降低精度的格式对AI有效,因为神经网络对数值不精确具有显著的容错能力。一个神经元激活值中的微小舍入误差会被跨越数百万参数发生的统计平均所吸收。训练可能需要略多的迭代才能收敛,但从处理较小数字获得的速度增益远远超过了略微更嘈杂的计算成本。
这些AI优化格式的成功造成了一种自然的诱惑:如果降低精度对神经网络有效,为什么不将相同的方法应用于科学计算呢?答案,正如Laslo Hunhold在《IEEE频谱》的详细采访中解释的那样,是数学不会转移。
为什么科学计算不同
科学计算包括计算物理学、流体动力学、结构工程模拟、气候建模、分子动力学以及数十个其他领域,其中计算机求解描述物理现象的方程组。这些模拟与神经网络计算在根本上不同:它们需要数值准确性,而不仅仅是统计相关性。
当物理学家模拟空气流过机翼的湍流时,每个计算单元必须准确表示与相邻单元通过明确定义的物理规律相互作用的压力、速度和温度值。一个单元中的小数值误差不会平均——它会通过称为数值不稳定性的现象在整个模拟中传播。一个最初不可察觉的舍入误差可能会级联为产生物理上无意义结果的模拟。
这种对精度的敏感性不是模拟软件的失败。它反映了正在求解的偏微分方程的数学性质。许多这些方程本质上是混沌的,意味着初始条件或中间计算中的小扰动导致完全不同的结果。整个数值分析学科都是为了理解和控制这些误差而存在的,数十年的研究已经确立,必须满足某些最低精度要求才能使模拟产生可信的结果。
定制格式挑战
Hunhold最近加入了总部位于巴塞罗那的Openchip公司担任AI工程师,他一直在努力开发专门为科学计算设计的数字格式——而不是从AI借用的。他的方法认识到科学模拟的精度要求在质量上与神经网络的精度要求不同,将AI格式简单地应用于科学问题不是一个可行的捷径。
挑战是多方面的。科学计算在数字范围的某些部分需要更高的精度,在其他部分可以容忍更低的精度。物理模拟中的值分布看起来与神经网络激活中的分布完全不同。针对一个应用优化的格式可能对另一个应用有害。
- AI数字格式降低精度以加快计算,依靠神经网络对舍入误差的容错能力
- 科学模拟需要数值准确性——小错误可能会级联灾难性地发生
- 降低精度的AI格式在工程模拟中可能会产生物理上无意义的结果
- 研究人员正在开发专门为科学计算设计的定制数字格式
- 物理模拟中的值分布在根本上不同于神经网络激活
硬件维度
这个问题超越了软件进入硬件设计。现代AI加速器——来自英伟达、谷歌、AMD和初创公司的GPU和定制芯片——越来越优化用于机器学习中使用的特定数字格式。它们的算术单元被设计以最大吞吐量处理bfloat16、FP8和其他AI原生格式,而传统的双精度浮点性能已经停滞或甚至相对下降。
这种硬件趋势为科学计算带来了实际问题。如果芯片制造商继续优先考虑AI特定格式,科学家和工程师可能会发现最新且最强大的计算硬件不适合他们的工作负载。能够每秒执行数万亿低精度AI操作的芯片在使用气候模型或结构分析所需的双精度算术时可能会遇到困难。
Hunhold在定制科学格式上的工作部分是由这种硬件现实推动的。如果科学计算能够识别出用更少的位数达到可接受精度的数字格式,比传统双精度格式更少,这些格式可以在未来硬件中与AI格式一起实现,确保科学工作负载受益于推动AI芯片性能的相同制造进步。
出错的代价
对科学计算应用不足的数值精度的后果不是抽象的。工程模拟告知飞机结构、核反应堆遏制系统、桥梁载荷和制药分子相互作用的设计。一个返回似是而非但数值不正确的结果的模拟可能会导致在现实世界中灾难性失败的设计。
AI行业在降低精度计算方面的显著成功是一项真正的成就,但它带有科学计算社区急切强调的特定于域的警告:对模式识别有效的东西不会自动对物理有效。数字必须是对的,当生命取决于模拟准确性时,对的意味着非常不同的东西。
本文基于《IEEE频谱》的报道。阅读原文。

