降低数值精度以提高深度学习性能
Lowering Numerical Precision to Increase Deep Learning Performance
深度学习训练和推理将成为未来几十年的计算重量级。例如,训练图像分类器可能需要1018个单精度操作。这一需求使得深度学习计算的加速成为英特尔和整个人工智能界的一个重要研究领域。
我们特别兴奋的一种方法是使用较低精度的数学运算进行深度学习推理和训练。在英特尔最新发布的白皮书中,我们回顾了最近关于低精度深度学习的研究,了解英特尔如何在英特尔至强可伸缩处理器上促进低精度深度学习,并预览即将开展的工作,以进一步加快当前和未来微体系结构的这些操作。
低精度操作的好处
如今,大多数商业深度学习应用程序在其训练和推理工作负载中使用32位浮点精度。然而,许多研究[2]已经证明,训练和推理都可以在较低的数值精度下进行,而结果的准确性几乎没有损失。
低精度操作有两个主要好处。首先,许多深度学习操作都受内存带宽的限制。在这些情况下,精度的降低可能允许更好地使用缓存并减少内存瓶颈。这样可以更快地移动数据并最大化计算资源。第二,硅乘法器的精度和面积要求更低。这可以使硬件每秒执行更多的操作,从而进一步加速工作负载。由于这些优点,在不久的将来,使用较低精度操作将成为标准操作,特别是对于卷积神经网络。
英特尔至强可伸缩平台上的低精度操作
我们的白皮书详细介绍了Intel Xeon可伸缩平台的512位宽的融合乘法加法(FMA)核心指令(Intel®Advance Vector Extension 512(Intel®AVX-512)指令集的一部分,如何通过实现低精度乘法与高精度累加来加速深度学习。将两个8位值相乘并将结果累加到32位需要三条指令,并且要求8位向量中的一个为无符号int8(u8)格式,另一个为带符号int8(s8)格式,累加为有符号int32(s32)格式。这使得以增加3倍指令为代价的输入增加了4倍,或者在内存需求为1/4的情况下,计算量增加了33.33%。此外,用于较低精度操作的减少的内存和更高的频率可以进一步加快执行速度。有关详细信息,请参见图1。
图1:Intel®Xeon®可伸缩处理器使用3条指令实现8位乘法和32位累加:VPMADDUBSW u8×s8→s16 multiples,vpmaddwdwd broadcast1 s16→s32,以及VPADDD s32→s32将结果相加到累加器。这使得在fp32上的输入增加了4倍,指令增加了3倍,计算量增加了33.33%,内存需求增加了1/4。内存减少,频率更高,精度更低,速度更快。以色列赫什的形象功劳。 低精度操作的未来改进
一组名为AVX512_VNNI(向量神经网络指令)的英特尔AVX-512指令集将进一步提高未来微体系结构的深度学习性能。AVX512_VNNI包括用于8位乘法(32位累加u8×s8→s32)的FMA指令(如图2所示)和用于16位乘法(32位累加s16×s16→s32)的FMA指令,如图3所示。理论峰值计算增益分别是fp32 OPS的4倍int8运算和2倍int16运算。实际上,由于内存带宽瓶颈,增益可能较低。编译器对这些AVX512_VNNI指令的支持目前正在进行中。
图2:AVX512_VNNI使用1条指令启用8位乘法和32位累加。图1中的VPMADDUBSW、VPMADDWD、VPADDD指令为熔合VPDPBUSD指令u8×s8→s32。这使得fp32上的输入量增加了4倍,计算量(理论峰值)增加了4倍,内存需求量减少了1/4。以色列赫什的形象功劳。
图3:AVX512_VNNI VPDPWSSD指令s16×s16→s32启用16位乘法和32位累加。这使得fp32上的输入增加了2倍,计算量(理论峰值)增加了2倍,内存需求减少了1/2。以色列赫什的形象功劳。
用于深层神经网络(英特尔MKL-DNN)和低精度原语的英特尔数学内核库
“英特尔®;数学内核深层神经网络库”(英特尔®;MKL-DNN)包含各种模型中常用的深度学习函数或原语,以及操作张量或高维数组布局所需的函数。为了更好地支持低精度原语,“英特尔MKL-DNN”中添加了新函数,用于在卷积层、ReLU层、融合卷积加ReLU层和池层中实现8位精度的推理工作负载。用于递归神经网络(RNN)的函数、其他融合运算、用于推理的8位Winograd卷积以及增加对用于训练的16位函数的支持被指定为未来的工作。有关量化模型权重和激活的说明以及“英特尔MKL-DNN”中较低数值函数的说明,请参阅我们的白皮书。
低精度操作的框架支持
Intel在Intel®发行版Caffe*中启用了8位推理。英特尔的DL推理引擎、Apache*MXNet*和TensorFlow*8位推理优化。所有这些8位优化目前仅限于CNN模型。
关于低精度操作的更多信息
Intel在多功能、知名、基于标准的Intel®体系结构上实现了卓越的深度学习性能,这一体系结构已被许多其他流行的工作负载所依赖。低精度操作为加速深度学习工作提供了一个令人兴奋的机会。