点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
Distribution Adaptive INT8 Quantization for Training CNNs


论文:https://arxiv.org/abs/2102.04782
本文是阿里巴巴达摩院视觉实验室潘攀博士团队在量化加速训练方面的一次探索。针对INT8计算快的特点,研究者尝试在卷积网络中,用INT8计算替代传统的浮点计算来加速训练过程(包括前向+反向)。通过对反向梯度的深入分析,分别提出了Gradient Vectorized Quantization和Magnitude-aware Clipping Strategy两大策略来实现INT8的无损提速。在ImageNet,CIFAR,COCO等数据集上,几乎做到了精度无损。结合TensorCore,可以比FP16快18%,比FP32快200%。
1. 背景
近些年,利用低比特量化(权重或激活)可以在不影响精度的前提下加快推理阶段。由于反向传播比正向传播消耗两倍的计算资源,使得梯度的量化非常有前景。在低比特表达中(如FP16、INT16、FP8、INT8、INT4等),INT8因兼顾效率和精度,而被广泛采用。一方面,INT8的运行速度是FP16/INT16的两倍,并且相比FP8,能被更多的硬件设备支持。另一方面,INT8的量化范围(-128~127)比INT4(-8~7)或其它更低的比特(小于4比特)大,表达能力更强。
尽管用INT8量化梯度来加速训练是很有吸引力的,但是仍然有很大的挑战,因为梯度的量化误差很容易误导收敛的方向。为了保证训练过程的可靠性,人们提出了许多方法,大多数方法要么用浮点数来模拟INT8计算,没有实际的加速效果,要么采用不合适的量化方案,导致最终精度大大下降。
2. 我们的方案
Motivation
目前大部分的量化训练方案都有如下两个问题:
i). 没考虑梯度内部的多重分布。为了使量化误差最小化,以前的方法试图通过假设梯度满足一定的分布来寻找一个全局量化参数,或者(不需要分布假设)采用周期梯度下降技巧来寻找一个最优的全局量化参数。这些方法只对每一层的梯度使用一个全局量化参数(我们简称之为全局量化)。根据我们的观测,我们发现在一层中存在着不止一个梯度分布。不同的分布通常具有不同的最优量化参数。实验表明,多个量化参数比一个量化参数能更好地捕捉梯度分布。
ii). 没有考虑梯度幅值的贡献。在通信过程中,大梯度比小梯度更重要,因为大梯度包含更多的信息。同样,从训练精度的角度考虑,大梯度的量化误差比小梯度的量化误差更重要。随着训练的发展,小梯度占比越来越大,这意味着如果忽略梯度的大小,量化误差和量化参数将由小梯度决定。在这种情况下,大梯度的量化误差将更大,导致最终精度的恶化。
Method
针对上述两个问题,我们分别提出了Gradient Vectorized Quantization和Magnitude-aware Clipping Strategy两大策略。
  • Gradient Vectorized Quantization
在训练过程中,我们从样本和通道的角度观察每一层的梯度,我们发现,通道维度明显地将梯度的分布分为两类:钟形分布和尖峰长尾分布(我们称之为倒T分布)。在样本维度中没有发现类似的现象,这可能是由通道维度中包含的特定属性引起的。考虑到我们将对这两个分布使用不同的量化参数(见下),我们会对每一个通道维度使用一个量化参数。C个通道就会有C个量化参数。
  • Magnitude-aware Clipping Strategy
首先我们在量化误差函数中引入梯度的幅值:
其中p(g) 表示梯度的分布,f(g) 表示梯度的幅值。
然后根据我们观察到的两种梯度分布,分别求解量化参数。
3. 主要实验结果
据我们所知,除了MobileNetV2之外,我们是第一个获得几乎无损性能的INT8框架。这在实际场景中是非常重要的,因为如果INT8量化方案中存在一些精度损失,人们更愿意花费更多的时间来训练FP32模型。

我们在ResNet-50的不同卷积层上比较了INT8与FP16的实现。1*1卷积核上,我们的INT8效率比FP16实现快1.76倍,3*3上,速度是FP16的1.94倍。
*更多文章细节,欢迎参考我们的论文原文
CVPR和Transformer资料下载
后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集
后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF
CVer-Transformer交流群成立
扫码添加CVer助手,可申请加入CVer-Transformer 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加小助手微信,进交流群
▲点击上方卡片,关注CVer公众号
整理不易,请给CVer点赞和在看
继续阅读