Press "Enter" to skip to content

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

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

AI科技评论报道

 

深度学习是人工智能(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] 数据援引自:

 

Solving Science and Engineering Problems with Supercomputers and 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/17 11.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

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注