至强秘笈 | DL Boost,以低精度成就高效率的魔术师

2021-10-11 13:39:19 浏览数 (1)

深度学习是人工智能(AI)近几年重新走红的功臣,也是吞噬算力的巨大“黑洞”。据评估,仅对一个图像分类器进行训练,可能就需耗费次单精度操作[1]。在商业化深度学习应用纷纷落地的今天,用户的既有算力储备正受到前所未有的挑战。

传统上,大多数深度学习应用在其训练和推理工作负载中多采用32位浮点精度(FP32)。高精度数据格式固然能带来更精确的结果,但囿于系统内存带宽等限制,深度学习在执行操作时,往往易陷入内存瓶颈而影响计算效率。

这就如同协调工程车辆奔赴工地,传统的宽大工程车固然装载量(精度)较大,但在有限的道路宽度上却易造成拥塞。而小型化工程车虽然装载量小,但其更高的通行效率却反而会带来整体效能提升。

从图一可以看出,当数据格式由FP32转为8位整数(INT8)或16位浮点数(BF16)时,内存可以移动更多的数据量,进而更大化地利用计算资源。

图一 不同数据格式对内存利用率的影响

近年来已有众多研究和实践表明,以较低精度的数据格式进行深度学习训练和推理,并不会对结果的准确性带来太多影响[2],而低精度数据格式带来的优势,也不仅在于提升内存利用效率,在深度学习常见的乘法运算上,它也能减少处理器资源消耗并实现更高的操作速度(OPS)。

英特尔® 深度学习加速(英特尔® DL Boost)技术的精髓,就是把对低精度数据格式的操作指令融入到了AVX-512指令集中,即AVX-512_VNNI(矢量神经网络指令)和AVX-512_BF16(bfloat16),分别提供了对INT8(主打推理)和BF16(兼顾推理和训练)的支持。

图二 英特尔® 深度学习加速技术带来训练和推理效率提升

如图二所示,对应之前提到的工程车与施工效率的关系,在寄存器(道路)宽度一定的情况下,两种新的、针对AI应用的AVX-512指令集使道路(寄存器)上通过了更多的“工程车(数据量)”,当不同规格工程车的装载量(即精度)上的差别对结果几乎不会有什么实质影响时,新的指令集无疑能使计算效率获得大幅提升。

2020年问世的第三代英特尔® 至强® 可扩展处理器家族已集成了英特尔® 深度学习加速技术这两种AI加速指令集,并被广泛运用于商业深度学习应用的训练和推理过程。其中,AVX-512_VNNI理论上可使推理效率提升至4倍[3],而AVX-512_BF16则能帮助训练性能提升达1.93倍[4]。

让我们来看看更接地气的实践场景。以医疗影像分析为例,如图三所示,汇医慧影在乳腺癌影像分析场景中引入了集成有英特尔® 深度学习加速技术的第二代英特尔® 至强® 可扩展处理器,配合 OpenVINO™ 工具套件,在对检测模型进行了INT8转换和优化后,推理速度较原始方案提升高达 8.24 倍,且精确度损失不到 0.17%[5]。

图三 汇医慧影使用OpenVINO™及对模型进行转换、优化前后的效果对比

让我们再来看看Facebook,它导入了第三代英特尔® 至强® 可扩展处理器,以使用其新增BF16加速能力的英特尔® 深度学习加速技术来提升PyTorch的性能。据实测:与FP32相比,使用BF16加速后ResNet-50的训练性能提升1.64倍,DLRM的训练性能提升1.4倍,ResNeXt-101 32x4d的训练性能也提升1.6倍[6]。

[1] 数据援引自:

https://itpeernetwork.intel.com/science-engineering-supercomputers-ai/

[2] 相关研究例如:

Vanhoucke, et al. (2011):

https://research.google.com/pubs/pub37631.html;

Hwang, et al. (2014):

http://ieeexplore.ieee.org/abstract/document/6986082/;

Courbariaux, et al. (2015):

https://arxiv.org/abs/1412.7024;

Koster, et al.(2017):

https://arxiv.org/abs/1711.02213;

Kim and Smaragdis (2016):

https://arxiv.org/abs/1601.06071。

[3] 数据援引自:

https://www.intel.com/content/www/us/en/artificial-intelligence/posts/lowering-numerical-precision-increase-deep-learning-performance.html

[4] 测试配置如下:

测试组配置:单节点,4 个安装在英特尔参考平台 (Cooper City) 的第三代智能英特尔® 至强® 可扩展 8380H 处理器(预生产 28C,250W),总内存 384 GB(24 个插槽/16 GB/3200),ucode 0x700001b,超线程开启,睿频开启,带有 Ubuntu* 20.04 LTS,Linux* 5.4.0-26,28,29-generic,英特尔 800 GB 固态盘 OS 驱动器,ResNet-50 v 1.5 吞吐量,https://github.com/Intel-tensorflow/tensorflow -b bf16/base,commit #828738642760358b388d8f615ded0c213f10c9 9a,Modelzoo:https://github.com/IntelAI/models/ -b v1.6.1,Imagenet 数据集,oneAPI 深度神经网络库 (oneDNN) 1.4,BF16,BS=512,英特尔于 2020 年 5 月 18 日进行测试。  基准组配置:英特尔参考平台 (Lightning Ridge) 上的 1 个节点、4 个英特尔® 至强® Platinum 8280 处理器,总内存 768 GB(24 个插槽/32 GB/2933),ucode 0x4002f00,超线程开启,睿频开启,Ubuntu* 20.04 LTS,Linux* 5.4.0-26,28,29-generic,英特尔 800 GB 固态盘 OS 驱动器,ResNet-50 v 1.5 吞吐量,https://github.com/Intel-tensorflow/tensorflow -b bf16/base,commit #828738642760358b388d8f615ded0c213f10c99a,Modelzoo:https://github.com/IntelAI/models/ -b v1.6.1,Imagenet 数据集,oneAPI 深度神经网络资料库 (oneDNN) 1.4,FP32,BS=512,英特尔于 2020 年 5 月 18 日进行测试。

[5] 案例链接:

https://www.intel.cn/content/www/cn/zh/analytics/artificial-intelligence/accelerated-ai-on-xeon.html

[6] 详情请见:

https://www.intel.cn/content/www/cn/zh/artificial-intelligence/posts/intel-facebook-boost-bfloat16.html

0 人点赞