SheepNav
新上线今天0 投票

IEEE P3109:专为机器学习打造的新型浮点算术格式解析

机器学习对数值计算的需求与传统通用计算存在显著差异:模型训练和推理通常不需要双精度(64位)甚至单精度(32位)浮点数的极高精度,反而更看重在有限位宽下的计算效率和吞吐量。正是为了填补这一空白,IEEE标准协会正在制定一项名为 P3109 的新标准,旨在定义一套参数化的二进制浮点格式族,并特别针对机器学习场景优化。

根据近期公开的论文《Novel Aspects of IEEE SA P3109 Arithmetic Formats for Machine Learning》,该标准的核心思想是提供一种高度灵活的数值表示框架。用户可以根据应用需求,自由调整格式的 总位宽、精度位(尾数位)、有无符号以及是否支持无穷大 等关键参数。这意味着开发者可以为特定模型层或算子定制最合适的数值格式,例如为梯度累积使用稍高精度的格式,而为激活值使用极低位的格式,从而在精度与效率之间取得最佳平衡。

关键设计创新

P3109 标准在操作定义上做出了几项重要设计选择。首先,运算被定义为将浮点值解码到“闭扩展实数集”,即实数加上正负无穷和 NaN(非数)。通过对 NaN 和无穷操作数的显式处理,标准确保了运算定义中只涉及实数算术,避免了传统浮点中因特殊值引发的复杂异常路径。其次,标准引入了丰富的舍入和饱和模式,并特别包含了 随机舍入 这一对低精度训练极为有用的技术。

更值得注意的是,P3109 强调 无异常运算——所有异常情况(如上溢、下溢)不会触发硬件中断或异常信号,而是通过返回值(如返回 NaN)来传递。这种设计直接提升了计算吞吐量,因为处理器无需为处理异常而暂停流水线。

块级操作与精度度量

在实际机器学习系统中,经常需要对共享同一缩放因子的一组数值进行操作(例如批量归一化后的特征图)。P3109 为此定义了统一的块级操作规范,使得向量化或矩阵运算的实现更加简洁高效。

此外,标准允许系统供应商通过一种新颖的、与尺度无关的近似度量来描述其实现精度。该度量类似于“最后一位单位”(ULP),被称为 κ近似(kappa-approximation)。这为硬件厂商提供了一种标准化的方式来声明其低精度计算单元的误差特性,便于软件开发者评估并选择合适的后端。

形式化验证与行业意义

论文作者还强调,P3109 标准中的函数定义和多种属性已通过形式化规范进行了机械验证和自动生成,这大大降低了标准中可能存在的歧义或错误。

作为一项仍在制定中的草案标准,P3109 的推出将对 AI 芯片设计、编译器优化以及深度学习框架的数值策略产生深远影响。它有望统一目前碎片化的低精度格式生态(如 FP16、BF16、TF32 等),为未来更高效、更定制化的机器学习硬件铺平道路。

延伸阅读

  1. 贝叶斯充分表示:监督学习中的信息保留与损失函数的关系
  2. 自我蒸馏策略梯度:让语言模型自己教自己,强化学习的新突破
  3. 利用梯度优化与多组注意力神经网络实现逆临界实验设计
查看原文