飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

DNN 加速器的数字编码

时间:2021-12-27  作者:电脑狂魔  

DNN 训练正在成为一种流行的计算密集型工作负载。这篇博文概述了 DNN 训练数字编码格式的最新研究,并介绍了混合块浮点 (HBFP) 格式,该格式可减少 DNN 训练的硅配置。

随着大数据的出现以及深度学习与现代数字平台的日益融合,深度神经网络 (DNN) 的实际应用变得无处不在。国际数据公司 (IDC) 预测人工智能服务的五年复合年增长率 (CAGR) 为 18.4%,到 2024 年收入将达到 380 亿美元。

虽然 DNN 和数据的规模呈爆炸式增长,但摩尔定律正在放缓,引导研究人员和供应商从通用平台转向加速器设计。不幸的是,为 DNN 奠定基础的两个工作负载具有极其不同的计算和存储要求,导致加速器设计各不相同。推理工作负载使用 DNN 模型来预测结果。这些工作负载是在线的,具有严格的查询延迟限制,但对错误的容忍度很高。最终结果是推理工作负载非常适合低精度算术,从而产生具有高计算密度的加速器设计。

相比之下,训练工作负载离线运行以创建 DNN 模型(用于推理),但依赖于更高精度的算法,导致加速器设计具有较低的计算密度和对操作数存储、带宽和功率的更高要求。例如,谷歌使用 8 位和 16 位定点算法对 TPUv1 进行针对性推理,在 TPUv2 和 v3 中使用自定义浮点进行训练,现在在TPUv4 中包含自定义核心进行推理和训练,使用不同的数值编码格式。

需要更高算术精度的训练算法的显着特征是称为反向传播的算法步骤。反向传播不仅在训练中占据了执行时间的主导地位,而且还需要来自底层数值表示的广泛范围。后者是由于模型中的训练值是基于梯度的,幅度变化很大,因此需要使用浮点数。不幸的是,浮点运算需要尾数重新对齐和归一化,与定点硬件相比,浮点硬件的密度更低、能效更低且占用空间更大。

域名

图 1:45nm 技术不同精度的能量和相对面积成本比较。

图 1显示了 45 纳米技术中各种精度的硬件逻辑和存储器操作的相对面积和能源成本。该图说明定点和低精度浮点逻辑在面积和能源方面比全精度逻辑明显更有效(例如,8 位定点加法的能源效率是 FP32 的 30 倍,面积效率是 FP32 的 116 倍)添加)。

训练数值解

传统的训练数字编码是FP32(IEEE 754格式),它是单精度浮点数,具有[1, 8, 23]位的[符号,指数,尾数]格式。FP16(IEEE 754 格式)是一种半精度浮点,具有 [1, 5, 10] 位的 [符号、指数、尾数] 格式,已成为 FP32 的流行的密集替代品。NVIDIA 的混合精度训练引入了深度学习的新趋势,即使用 FP32(例如,用于权重更新)和 FP16 来恢复数据丢失。

近年来,已经有许多尝试使用低精度数字格式进行训练。作为加速器中FP32 的直接替代品的数字编码的最新创新是BFLOAT16。这种编码使用与 FP32 相同数量的指数位,但总位数是其一半。研究人员还在使用 FP8 训练模型,方法是将其使用限制在混合精度训练中的特定操作数,或者通过改变为混合 FP8 格式的指数/尾数提供的位数来自定义其格式以用于前向与反向传播步骤。最近的工作表明由于反向传播步骤主要需要表示梯度的大小,因此在反向传播步骤中使用具有三个指数位且没有尾数的 FP4 进行训练也是可行的。

为了补偿低精度数字格式的数据丢失并最大限度地减少准确性的降低,许多人还提出了恢复技术。这些包括随机舍入技术、损失缩放、以更高的精度维护网络的选定层以及基于块的累积。这些恢复技术旨在提供足够的范围和精度来捕捉训练过程中张量分布的变化。不幸的是,这些技术在解决信息丢失方面缺乏广泛的适用性,因为它们需要大量的微调,不能推广到所有模型,并且仍然是一个开放的研究问题。

最近的研究提倡使用块浮点 (BFP),而不是使用低精度浮点,它在 1990 年代首次被提出用于信号处理算法,以提高移动平台密度。BFP 是浮点数的特殊情况这在定点和浮点表示之间取得了平衡。BFP 格式和浮点格式之间的主要区别在于,BFP 格式在一组值中共享单个指数,而浮点格式则不然。图 2 说明了当块大小等于张量大小时张量的 FP 和 BFP 表示。因此,在一个块内,BFP 强制执行类似定点的范围,而不同的块可以具有不同的指数,从而导致广泛的表示。此属性使点积能够以高精度计算。此外,BFP ALU 比 FP ALU 实现了更高的硅密度和能源效率,因为它们将指数管理开销分摊到许多值上。

域名

图 2:以 8 位 FP 和 8 位 BFP(块大小为 n)表示的 n 元素张量。

最近的研究提倡使用 BFP 进行 DNN 训练(以及Microsoft 的 Brainwave 中的推理)。Flexpoint和动态定点 (DFP)提出了 BFP 格式,用于使用 16 位尾数和共享指数进行训练。在一大群尾数之间共享指数使大多数 DNN 操作能够使用定点算法,并显着降低操作数存储、移动能量和带宽需求。不幸的是,BFP 的使用仍然是一个开放的研究问题,因为并非所有 DNN 训练操作都适合对尾数进行分组,导致与浮点相比,整体准确度较低。

使用混合块浮点训练 DNN

在NeurIPS 2018 论文中,作者提出了一种使用 BFP 进行训练的混合精度格式,称为混合块浮点 (HBFP)。HBFP 在训练操作中使用 8 位 BFP 作为张量,这非常适合分组(例如,点积、卷积),而 FP32 用于其余操作(例如,激活、正则化)。HBFP 优于纯 BFP 的训练有两个原因。首先,除非使用宽尾数,否则对所有操作使用 BFP 可能会导致发散。其次,通用 BFP 操作具有很高的区域开销。HBFP 建立在特定 DNN 操作(例如,激活、正则化)不能容忍 BFP 输入的洞察力之上,因为这些操作通常会导致宽张量分布,这对于 BFP 来说可能太宽,从而导致分布边缘的值丢失。因此,并非所有操作都可以容忍将 BFP 值作为输入,因为它们可能会以非平凡的方式改变值分布,小值和大值都会影响结果。然而,在 DNN 训练中占主导地位的点积对此类数据丢失具有弹性。点积是减少,因此输入张量中的最大值主导总和,较小的值对最终结果几乎没有影响。因此,HBFP 明智地仅将 FP32 用于需要它的操作,并为其他操作提供面积有效的数值表示。因此,输入张量中的最大值在总和中占主导地位,较小的值对最终结果几乎没有影响。因此,HBFP 明智地仅将 FP32 用于需要它的操作,并为其他操作提供面积有效的数值表示。因此,输入张量中的最大值在总和中占主导地位,较小的值对最终结果几乎没有影响。因此,HBFP 明智地仅将 FP32 用于需要它的操作,并为其他操作提供面积有效的数值表示。

HBFP 是 DNN 训练的算术表示,可保持准确性和收敛速度,ALU 密度和能源效率类似于推理加速器中使用的表示。HBFP 训练结果已被证明与 FP32 可达到的精度相匹配(见表 1 和表 2),同时实现 8.5 倍的吞吐量和 4 倍更紧凑的模型。

数据集模型FP32HBFP8
CIFAR100ResNet-50域名%域名%
WideResNet-28-10域名%域名%
DenseNet-40域名%域名%
SVHNResNet-50域名%域名%
WideResNet-16-8域名%域名%
DenseNet-40域名%域名%
图像网ResNet-50域名%域名%

表 1:图像分类模型的测试误差。HBFP8 表示具有 8 位尾数和 16 位权重存储的设置。

数据集模型FP32HBFP8
宾夕法尼亚树银行(PTB)LSTM61.361.9
英文维基百科BERT-Tiny60.962.9
BERT-中域名域名
BERT-Base域名域名

表 2:语言建模模型的验证困惑。HBFP8 表示具有 8 位尾数和 16 位权重存储的设置。

EPFL 的 ColTraIn(协同定位 DNN 训练和推理)项目最近发布了HBFP 训练模拟器。我们预见 HBFP 为在加速器上运行的准确训练算法奠定了基础,其算法比传统或新颖的基于浮点的平台高一个数量级。ColTraIn 模拟器存储库包括几个示例 DNN 模型,包括 CNN(ResNet、WideResNet、DenseNet、AlexNet)、LSTM 和 BERT,用于 HBFP 和参考 FP32 基线。

湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。