32位和16位格式的混合精度训练是目前深度学习的主流。
最新的NVIDIA核弹GPU H100刚刚增加了对8位浮点格式FP8的支持。
NVIDIA首席科学家Bill Dally现在表示,他们还有一个秘密武器:
在IEEE计算机计算研讨会上,他介绍了一种实验性的5nm芯片,可以混合8位和4位格式,在4位上获得近似8位的精度。
目前这款芯片还在研发中,主要用于INT4和INT8格式的深度学习推理如何在训练中应用也在研究中
相关论文已在2022年IEEE超大规模集成电路技术研讨会上发表。
新的量化技术
数字格式的减少而精度没有显著损失是由于矢量缩放量化技术。
具体来说,一个INT4数只能准确表示从—8到7的16个整数。
其他数字会四舍五入到这16个值,中间的精度损失称为量化噪声。
传统的量化方法为每个矩阵增加一个比例因子以降低噪声,而VSQ为每个矢量增加一个比例因子以进一步降低噪声。
关键点是比例因子的值应该与实际需要在神经网络中表示的数值范围相匹配。
Nvidia的研究人员发现,为每64个数字分配一组独立调整的比例因子可以最小化量化误差。
计算比例因子的成本可以忽略不计,当比例因子从INT8降低到INT4时,能效提高一倍。
Bill Dally认为,通过结合INT4计算,VSQ技术和其他优化方法,新芯片可以实现10倍于Hopper架构的每瓦计算速度。
还有哪些减少计算量的努力。
除了Nvidia,业界还有更多降低计算量的努力,也在本次IEEE研讨会上提出。
马德里康普顿斯大学的一组研究人员设计了一种基于Posits格式的处理器内核,与浮点数相比,精度提高了多达4个数量级。
与Float相比,Posits增加了一个可变长度的Regime区域,用来表示索引的索引。
对于0附近的较小数字,只需要两个比特,这些数字广泛用于神经网络中。
基于FPGA开发了适用于Posits格式的新硬件研究人员发现,可以在不增加计算时间的情况下,利用芯片的面积和功耗来提高精度
苏黎世联邦理工学院一个团队的研究是基于RISC—V的,他们把两种混合精度的积和融运算放在一起并行计算。
这可以防止两次计算之间的精度损失,并提高内存利用率。
FMA是指D = A * B+C的运算,一般输入中的A和B会使用较低的精度,而输出中的C和D会使用较高的精度。
研究人员模拟发现,新方法可以将计算时间减少几乎一半,并提高输出精度,特别是对于大向量的计算。
相应的硬件实现正在开发中。
巴塞罗纳超级计算中心和英特尔团队的研究也与FMA有关,完全可以使用BF16格式完成神经网络的训练。
BF16格式已经在Dalle2等大型网络训练中得到应用,但仍需要与精度更高的FP32结合,并在两者之间来回转换。
这是因为在神经网络训练中只有一部分计算不会由于BF16而降低精度。
最新的解决方案是开发一种扩展格式BF16—N,它将几个BF16数组合起来表示一个数,可以在不显著牺牲精度的情况下使FMA计算更加高效。
关键是FMA计算单元的面积只受尾数位的影响。
比如FP32有23个尾数位,需要576个单位的面积,而BF16—2只需要192位,减少了2/3。
另外,这篇论文的题目也很有意思,BF16就是你需要的全部。
参考链接: