解读至强的小秘密之 DL Boost,以低精度成就高效率的魔术师

英特尔® 深度学习加速(Intel® DL Boost):

  • 英特尔® 至强® 可扩展处理器专为灵活的架构而设计,可在硬件上运行复杂的 AI 工作负载,就像面对现在其他的工作负载一样;

  • 英特尔® 至强® 可扩展处理器通过英特尔® 深度学习加速(Intel® DL Boost)将嵌入式 AI 性能提升到一个新的水平。

BUILT IN - ARTICLE INTRO SECOND COMPONENT

深度学习是人工智能(AI)近几年重新走红的功臣,也是吞噬算力的巨大 “黑洞”。据评估,仅对一个图像分类器进行训练,可能就需耗费 1018 次单精度操作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

产品和性能信息

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
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 日进行测试。