- 主题技术
- 以原创技术系统为根基,SenseCore东升国际官网AI大装置为主题基座,布局多领域、多方向前沿钻研,
急剧买通AI在各个垂直场景中的利用,向行业赋能。
8比特数值也能训练模型?东升国际官网提出训练加快新算法
导读:在CVPR 2020上,东升国际官网钻研院链接与编译团队、高机能推算团队和北航刘祥龙教员团队合作提出了用于加快卷积神经网络训练过程的INT8训练技术。该工作通过将网络的输入、权沉和梯怀抱化到8比特来加快网络的前向传布和反向传布过程,缩短卷积神经网络训练功夫。论文观察到梯度的怪异散布给量化训练带来了极大挑战,为相识决梯怀抱化带来的精度损失和不不变问题,该论文进行了量化训练收敛不变性的理论分析并基于此提出了误差敏感的进建率调节和基于方向自适应的梯度截断步骤。同时为了保障更高的加快比,该论文还提出使用周期更新、量化卷积融合等技术来削减量化操作带来的功夫开销。利用了上述步骤之后,INT8训练在图像分类工作和检测工作上都仅仅损失微幼的精度,且训练过程相比浮点训练加快了22%。
动机与布景
卷积神经网络被宽泛利用在多种推算机视觉工作中并且获得了优异的精度。由于占有重大的参数量,训练和部署卷积神经网络必要耗费大量推算资源和漫长的训练功夫,若何用更少资源训练卷积神经网络一向是一个学术钻研热点,也是工业界关切的话题。
神经网络量化技术是一种使用定点推算包办浮点的加快技术,目前被宽泛地利用在神经网络部署中,能够极大地提升部署速度,并降低内存资源占用。现有好多工作均批注将网络前向过程的浮点推算代替成INT8推算,不会带来显著的精度降落[1][2]。
下图展示了现代神经网络加快芯片对于分歧精度推算的理论推算峰值对比,能够看到,INT8算力相迸宗FP32和FP/INT16均能有超过2倍峰值机能提升。

当思考将神经网络量化技术利用在卷积神经网络训练中时,为了加快卷积的反向梯度传布过程,不得不合梯度进行量化操作。在将浮点的梯怀抱化到INT8数值领域内之后,训练过程变得极其不不变,并且收敛到极度差的精度。若何解决量化梯度给训练带来的收敛不变性问题,是极度沉要的问题。与此同时,在提升训练精度的同时,也不该当进入过多额表的推算,不然加快成效将会大打折扣。
一方面是高效的推算峰值保险,一方面是难题沉沉的算法设计,这是INT8训练技术的机缘与挑战。
何为INT8训练
尺度的线性量化操作指的是,将一个浮点张量(tensor)进行线性映射,变换到整数空间中[3]。这个整数空间的大幼由于量化比特数来决定,好比常见的8bit量化数,就有256个取值,本文中使用的是对称量化,因而量化数的取值是从-128到127。具体公式如下,其中x是被量化的数据,q是量化后的数据,s是量化系数,clip是截断函数:

在8bit的场景里,截断函数和量化系数的推算公式如下:

为了降低量化带来的误差,一个常见做法是对取整过程进行随机化,使得取整函数从进展上更靠近原始的数,具体随机取整的公式如下:

相反的,将8bit量化数变换回浮点的过程称之为反量化。反量化公式如下所示,其中q为量化推算了局,s为量化系数,
为反量化后的了局。


上图的上半部门展示了尺度的卷积神经网络量化推算前向过程,该过程被宽泛利用在INT8部署加快中。在卷积推算之前,量化器会对输入和权沉进行量化操作,将浮点数量化到8bit数值上,通过INT8卷积推算主题,即可实现一次INT8前向推算,最终将求和得到的32bit数进行反量化操作回算到浮点数域中,以供给下一层推算使用。
INT8训练的一个主题的加快点在于卷积推算的反向过程,上图展示了INT8训练中卷积推算在反向传布过程中的推算细节。在卷积的反向梯度传布过程,同样的将梯度进行浮点量化操作,不外为了降低量化的误差,针对梯度的量化选取了随机取整操作。通过INT8的反向卷积推算主题,能够得到下一层所需的回传梯度,以及当前层的权沉所需的梯度。由于INT8反向卷积输出的是32bit数,与前传类似,必要引入一次反量化操作,将32bit数反算回到浮点数域中。
梯度为何难以量化
为什么对梯度进行量化会给网络训练带来如此大的影响?我们能够观察训练过程中的梯度散布情况来进一步的分析。

通过图(a)中对比梯度和输入、权沉的散布,能够发现:梯度散布相比输入和权沉散布越发敏感,同时领域更大。相迸宗输入和权沉,梯杜仔更多的值集中在0左近,但同时梯度还有很多较大值,让梯度的散布领域变得相当广,这些特点城市导致梯怀抱化的量化误差比输入和权沉更大。

图(b)展示的是layers16随着训练,其梯度从epoch 0到epoch 300的变动情况。从中能够看出,随着训练的进行,梯度散布越变得越发敏感,同时依然维持着较广的散布领域,这意味着梯怀抱化的误差会随着训练的进行变得越来越大。

梯度的散布随网络深度变动情况从图(c)中能够看出。很容易发现,卷积层的深度越浅,梯度散布越敏感,这也会导致梯怀抱化的误差更大。

从图(d)中能够看出卷积的结构也会影响梯度散布,对于MobileNetV2来说,conv2为depthwise卷积其相比conv1和conv3拥有越发敏感的散布。
由于卷积神经网络的梯度拥有如上四个特点,所以当我们直接在训练中对梯度进行量化时,训练精度极度容易出现突发的崩溃情况。下图展示了在CIFAR-10数据集上进行尝试的精度和损失函数变动曲线,以MobileNetv2在CIFAR-10数据集上训练为例,其训练的精度曲线和loss曲线如下图,从图中能够发现INT8训练的loss在训练初期正常降落,但随后迅速上升,对应的精度也不休降落。

是什么影响了收敛不变性
凭据以上的观察和初步启发,我们但愿通过理论的分析和推导,对量化训练的收敛不变性进行建模。凭据Adam等有关论文的经验和优化理论中的Regret analysis,不失通常性地界说R(T)为

其中f是损失函数,t是训练轮数,T是训练总轮数,
其中f是损失函数,t是训练轮数,T是训练总轮数,
为t轮的权沉,
是最优权沉。
基于以下两个朴素的如果:

通过推导证明能够得到:

其中
为t轮的进建率,
d为权沉的维度,
为t轮的量化误差,
是t轮的量化后梯度。
为了确保网络可能不变收敛,
在T变大时必要可能达到足够幼。通过上式能够发现,在T趋于无限大时,第(1)项能够忽略不计,重要思考减幼第(2)项和第(3)项。
我们发现,第(2)项与量化误差正有关,第(3)项与进建率以及量化后的梯度大幼有关。
因而我们不能贵到两个直观的提升训练收敛不变性的战术:
通过调节量化函数中的截断减幼量化误差
通过适当调低进建率来提高量化训练精度
重要步骤
凭据以上分析,我们针对量化误差和进建率提出了基于方向自适应的梯度截断和误差敏感的进建率调节两个步骤来解决量化训练带来的精度损失问题。同时,为了削减量化操作带来的额表开销,本文还提出了周期更新和量化卷积融合的步骤。

1、 基于方向自适应的梯度截断:调整截断值,让梯度方向维持正确。
为了最幼化量化误差,之前有好多钻研提出优化截断值的步骤,其中就有钻研提出通过如果数据散布直接求解最优截断值。但是已有的钻研都针对于权沉量化的截断值进行优化。就如本文观察所显示,梯度的散布特点与权沉区别较大,无法直接使用。本文通过KS检验发现梯度的散布并不切合常见的高斯散布、拉普拉斯散布和学生t散布,因而很难通过如果梯度散布来直接求解最优的截断值。

基于以上的分析,本文选取梯度降落的步骤来自适应地进建最优截断值,常见的指标函数有均方误差函数,但是由于梯度的散布特点,均方误差的大幼会受到梯度的影响,影响优化过程;同时对于梯度来说,均方误差并不能很好地体现梯度的量化误差对于优化过程的影响,因而本文提出使用可能体现梯度方向的余弦距离
来衡量梯度的量化误差,并以余弦距离为指标函数来优化求解最优截断值。余弦距离
界说如下:

其中,
是梯度,
是量化后的梯度。
2、 误差敏感的进建率调节:在谬误的方向上尽量少更新。
凭据上述的理论分析,降低进建率可能有助于模型量化训练的收敛。针对进建率的调整,本文提出误差敏感的进建率调节步骤,使用进建率系数对原进建率进行调整,进建率系数与余弦距离
负有关,进建率系数
界说如下:

其中α和β是超参数,用于节造衰减水平和调节下界。
3、 周期更新:降低由于统计而带来的额表推算耗时
由于量化操作必要的统计数据领域和推算截断值等操作极度耗时,为了削减这些操作的功夫开销,本文选取周期更新的方式,周期性地统计数据领域和推算截断值。通过周期更新的步骤可能有效地提高削减因量化引入的额表功夫开销。下表为ResNet50在ImageNet数据集上分歧周期的单次训练功夫统计表。

4、 量化卷积融合:削减访存次数、节俭cuda kernel launch次数
通过将量化和反量化操作融合入卷积推算的CUDA核函数里,能够削减一次数据的访存,有效地削减量化和反量化操作的功夫开销。

尝试了局
图像分类工作:本文在CIFAR10和ImageNet等图像分类数据集进行INT8训练尝试。从下表了局中能够看出,在大无数网络结构中均获得了比现有最好步骤更优的精度,并且初次在MobileNet、Inception等网络上进行量化训练尝试,精度损失也在1.5%以内。


指标检测工作:同时,本文也初次尝试在PASCAL和COCO等指标检测数据集上进行INT8训练尝试,精度损失也在2%以内。

已有的少量探索梯怀抱化的论文[4]均未汇报算法在现实训练工作中的真实加快机能,为了最大限度将步骤实用化,本文在 GeForce GTX1080TI显卡上编写并优化了用于支持INT8训练的卷积前向和后向推算主题。实测了局批注,使用INT8卷积推算的前向和后向过程相迸宗浮点推算有显著的加快,其中前向过程均匀加快1.63倍,后向过程均匀加快1.94倍。如下图所示:

同时,本文在现实训练过程中进行了齐全的端到端测试,能够看到,INT8训练能够将ResNet50的一轮训练过程从0.360秒降低到0.293秒,整体训练过程提速了22%。

招聘
东升国际官网钻研院-链接与编译团队致力于通过System+AI技术打造顶尖的深度进建主题引擎?⒌哪P脱盗泛湍P筒渴鸸ぞ吡匆逊务于公司多个主题业务。团队在量化模型的在线/离线出产、部署对齐、加快训练等方向有着明确的技术规划。
团队目前在招聘模型量化方向的系统算法钻研员/实习生,欢迎感兴致的幼同伴投递简历到yufengwei@sensetime.com。
传送门
论文地址:https://arxiv.org/pdf/1912.12607.pdf
论文解说:近期将有线上直播的论文解说及专题互换课程,欢迎点击下方“东升国际官网泰坦公开课”课程专题链接进行报名
报名链接:https://jinshuju.net/f/RKOLf9





返回