2018:MIXED PRECISION TRAINING OF CONVOLUTIONAL NEURAL NETWORKS USING INTEGER OPERATIONS利用整数运算对卷积神经网络

@[TOC](2018:MIXED PRECISION TRAINING OF CONVOLUTIONAL NEURAL NETWORKS USING INTEGER OPERATIONS(利用整数运算对卷积神经网络进行混合精度训练)论文阅读—未完待续!!!)

Abstract

用于混合精度训练的最先进的(SOTA)主要是各种低精度浮点运算,特别是FP16积累为FP32 Micikevicius等人(2017)。另一方面,虽然在低精度和混合精度Integer训练领域也发生了很多研究,但这些工作要么针对非sota网络(例如仅针对ImageNet-1K的AlexNet),要么针对相对较小的数据集(如cipf -10)。在这项工作中,我们在ImageNet-1K数据集上训练最先进的视觉理解神经网络,并在通用(GP)硬件上使用Integer操作。特别地,我们关注整数融合乘加(FMA)操作,它接受两对INT16操作数并将结果累积为INT32输出。我们提出了张量的共享指数表示,并开发了一种适用于常见神经网络操作的动态不动点(DFP)方案。研究了开发高效整数卷积核的细微差别,包括处理INT32累加器溢出的方法。实现ResNet-50、GoogLeNet-v1、VGG-16、AlexNet的CNN训练;这些网络在与FP32相同的迭代次数内达到或超过SOTA精度,而超参数没有任何变化,端到端训练吞吐量提高了1.8倍。据我们所知,这些结果代表了第一个使用SOTA cnn的GP硬件ImageNet-1K数据集的INT16训练结果,并使用半精度表示实现了最高的报告精度。

1 INTRODUCTION

虽然单精度浮点(FP32)表示一直是深度学习训练的主流,但半精度和半精度算法最近也引起了学术界和工业界的兴趣。这种兴趣主要源于与FP32相比,FP32的训练速度有可能提高2倍或更多,使用半精度时使用半精度时,例如,NVIDIA V olta NVIDIA(2017)提供的半精度失败比FP32多8倍。

与32b训练一致选择的单精度浮点不同,半精度训练既可以使用半精度浮点(FP16),也可以使用整数(INT16)。这两个选项提供不同程度的精度和范围;与FP16相比,INT16具有更高的精度但更低的动态范围。这也导致半精度表示法和单精度表示法之间的残差有根本的不同——整数表示法对张量的较大(可能更重要)元素的残差更小。除了数据类型上的一级区别之外,每个数据类型都有多个算法和语义差异(例如,FP16乘积操作积累为FP32结果)。因此,在讨论半精度训练时,为了达到SOTA精度,必须综合考虑张量表示的整个色域、乘加运算的语义、下转换方案(如果累加精度更高)、标度和归一化技术以及溢出管理方法。事实上,除非选择了上述向量的正确组合,否则半精度训练很可能失败。相反,如果不正确地选择所有向量,就会得出不准确的结论。

在这项工作中,我们描述了一个混合精度的训练设置,使用:
• INT16 tensors with shared tensor-wide exponent, with a potential to extend to sub-tensor
wide exponents.(具有共享张量宽指数的INT16张量,有可能扩展到次张量宽指数。一个指令,将两个INT16数相乘,并将输出存储到一个INT32累加器中。)
• An instruction which multiplies two INT16 numbers and stores the output into a INT32
accumulator.(将两个INT16数相乘并将输出存储到INT32累加器中的一种指令。。)
• A down-convert scheme based on the maximum value of the output tensor in the current iteration using multiple rounding methods like nearest, stochastic, and biased rounding.(基于当前迭代中输出张量的最大值的下转换方案,使用多种舍入方法,如最近舍入、随机舍入和有偏舍入。)
• An overflow management scheme which accumulates partial INT32 results into FP32, along with trading off input precision with length of accumulate chain to gain performance.(一种溢出管理方案,将INT32的部分结果累积到FP32中,并权衡输入精度和累积链的长度以获得性能。)

神经网络训练的计算主要是GEMM-like、卷积或点积操作。通过专门的低精度的融合乘加(FMA)指令(如VX512_4VNNI 1),这些指令可以加速。然而,这并不一定意味着对所有张量使用半精度表示,或者只使用半精度运算。事实上,在前向传播和后向传播(FPROP、BPROP和WTGRAD)中迁移计算密集型操作所获得的性能加速,通常接近于在半精度下替换所有操作(例如SGD)所获得的最大加速。如果不是这样,性能下降通常是由于内存带宽的限制和其他体系结构原因造成的。因此,在平衡的通用机床上,可以采用混合精度策略,即保持精度关键操作(如SGD和一些归一化)在单一精度和计算密集型操作在半精度。提出的基于整数-16的混合精度训练遵循此模板。

使用上述方法,我们在ImageNet-1K数据集Deng et al.(2009)上训练多个视觉理解cnn,获得匹配或超过单个精度结果的Top-1精度Russakovsky等人(2015)。这些结果是在不改变任何超参数的情况下获得的,迭代次数与基线FP32训练一样多。我们对ResNet-50实现了75.77%的Top-1精度,据我们所知,这大大超过了半精度训练的任何结果,例如米奇克维西乌斯等人(2017);Ginsburg等人(2017)。此外,我们还演示了我们的方法通过在GoogLeNet-v1、VGG-16和AlexNet网络上进行int16训练,实现了最先进的精度(与FP32基线相当)。据我们所知,这是第一次使用int16训练得到这样的结果。

本文的其余部分组织如下:第2节讨论了有关半精确训练的各个方面的文献。表示半精度张量的动态不动点格式将在第3节中描述。第4节介绍动态不动点核和神经网络训练操作,第5节给出实验结果。最后,我们在第6节中总结了本文的工作。

2 RELATED WORK

利用降低精度进行深度学习一直是一个活跃的研究课题。因此,有许多不同的降低精度数据表示,更标准的基于浮点数等人(2017);金斯伯格等人(2017);德特默斯(2015)和自定义定点方案范霍克等人(2011);库尔巴里奥等人(2014);古普塔等人(2015);Hubara等人(2016b);Kos特等人(2017)。

Micikevicius等人(2017)最近发表的混合精度训练工作使用16位浮点存储来进行激活、权重和梯度。正向、反向传播计算使用FP16计算,结果累积到FP32中,并保留全精度(FP32)权重的主副本用于更新操作。他们展示了各种各样的深度学习训练应用程序,包括深度网络和更大的数据集(ILSVRC类问题),与基线FP32结果相比,损失最小。此外,这表明FP16/FP32混合精度需要损失缩放Ginsburg等人(2017)来实现接近SOTA的精度。这确保了反向传播的梯度值被移到FP16可表示的范围内,并捕获了对精度至关重要的小幅度(负指数)值。这种尺度是不动点表示固有的,使得它更适合和更适合深度学习训练。

自定义定点表示(Custom fixed point representations)提供了更大的灵活性—在提高精度和动态范围方面。这允许更好地将表示映射到底层应用程序,从而使其比基于浮点的方案更健壮和准确。Vanhoucke等人(2011)已经表明,由Williamson(1991)提出的动态缩放不动点表示对于卷积神经网络非常有效——在通用CPU硬件上,与积极调整的浮点实现相比,其性能提高了4倍。Gupta等人(2015)对低精度不动点计算对深度学习的影响进行了全面的研究,并成功地在专门的硬件上使用16位不动点训练出了较小的网络。随着比特宽度的进一步减小,这种不动点数据表示更有吸引力——用更大的尾数位和动态缩放的共享指数提供更高的精度能力。

已经有一些出版物具有<16位精度,而且几乎所有的出版物都使用这种自定义定点方案。Courbariaux等人(2014)使用一种动态不动点格式(DFXP),使用12位操作进行低精度乘法。在此基础上,Courbariaux等人(2015)提出了仅使用二进制权的训练,而所有其他张量和操作都是完全精确的。Hubara等人(2016a)进一步扩展了这一点,也使用了二进制激活,但梯度和权重仍然保持完全精度。Hubara等人(2016b)提出了激活和权重量化到6位和梯度的训练。Rastegari等人(2016)对包括梯度在内的所有组件使用二进制表示。然而,上述所有方法都使用了较小的基准模型/数据集,并且使用较大的ImageNet数据集Deng等人(2009)和分类任务鲁萨科夫斯基等人(2015),导致精度明显下降。Koster等人(2017)已经表明,为深度神经网络(Flexpoint)设计的不动点数值格式优于FP16,并在广泛的应用中实现了与FP32的数值奇偶性。然而,这是专门为专门的硬件而设计的,并且发布的结果是通过软件模拟来实现的。在这里,我们提出了一个更一般的动态不动点表示和相关的计算原语,它可以利用使用智能计算管道的通用硬件。此外,我们提供了实际的准确性和性能,以训练大型网络的ILSVRC分类任务,在可用的硬件上测量。

3 THE DYNAMIC FIXED POINT FORMAT(动态定点格式)

3.1 DFP TENSOR PRIMITIVES(dfp张量原语)

4 NEURAL NETWORK TRAINING USING DYNAMIC FIXED POINT(使用动态顶点进行神经网络训练)

4.1 TRAINING WITH DYNAMIC FIXED POINT(动态顶点训练)

4.2 CORE COMPUTE KERNELS(核心计算内核)

4.3 HANDLING OVERFLOWS IN INT16-INT32 FMAS(在Int-16与Int32FMAS(频段)的处理溢出)

5 EXPERIMENTS AND RESULTS(实验和结果)

5.1 ACCURACY RESULTS FOR CNNS(cnns的精度结果)

5.2 PERFORMANCE DISCUSSION(性能讨论)

6 CONCLUSIONS(结论)

       我们在大型网络/数据集上降低基于int的精度训练结果。在存储精度相当或更好,在计算、通信和存储方面可能节省2×。此外,我们提出了一种通用的动态顶点表示方案,与相关的计算原语和算法的共享指数管理。这个DFP解决方案可以与通用硬件一起使用,利用整数计算管道。我们通过对ResNet-50、GoogLeNet-v1、VGG-16和AlexNet进行CNN训练来演示这一点;用混合精度的DFP16训练这些网络,用于ImageNet-1K分类任务。虽然这项工作的重点是视觉理解cnn,但在未来,我们计划展示这种方法对其他类型的网络的有效性,如rnn、lstm、gan,并将其扩展到更广泛的应用集。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月7日 下午1:18
下一篇 2022年5月7日

相关推荐