【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020( 四 )


本文插图

其中 , g是梯度 ,
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

是量化后的梯度 。 2、误差敏感的学习率调节:在错误的方向上尽量少更新根据上述的理论分析 , 降低学习率能够有助于模型量化训练的收敛 。 针对学习率的调整 , 本文提出误差敏感的学习率调节方法 , 使用学习率系数对原学习率进行调整 , 学习率系数与余弦距离
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

负相关 , 学习率系数
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

定义如下:
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

其中
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图


【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

是超参数 , 用于控制衰减程度和调节下界 。 3、周期更新:降低由于统计而带来的额外计算耗时
由于量化操作需要的统计数据范围和计算截断值等操作十分耗时 , 为了减少这些操作的时间开销 , 本文采用周期更新的方式 , 周期性地统计数据范围和计算截断值 。 通过周期更新的方法能够有效地提高减少因量化引入的额外时间开销 。 下表为ResNet50在ImageNet数据集上不同周期的单次训练时间统计表 。
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

4、量化卷积融合:减少访存次数、节省cuda kernel launch次数
通过将量化和反量化操作融合入卷积计算的CUDA核函数里 , 可以减少一次数据的访存 , 有效地减少量化和反量化操作的时间开销 。
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

实验结果
图像分类任务:本文在CIFAR10和ImageNet等图像分类数据集进行INT8训练实验 。 从下表结果中可以看出 , 在大多数网络结构中均取得了比现有最好方法更优的精度 , 并且首次在MobileNet、Inception等网络上进行量化训练实验 , 精度损失也在1.5%以内 。
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

目标检测任务:同时 , 本文也首次尝试在PASCAL和COCO等目标检测数据集上进行INT8训练实验 , 精度损失也在2%以内 。
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

已有的少量探究梯度量化的论文[4]均未报告算法在实际训练任务中的真实加速性能 , 为了最大限度将方法实用化 , 本文在 GeForce GTX1080TI显卡上编写并优化了用于支持INT8训练的卷积前向和后向计算核心 。 实测结果表明 , 使用INT8卷积计算的前向和后向过程相比于浮点计算有明显的加速 , 其中前向过程平均加速1.63倍 , 后向过程平均加速1.94倍 。 如下图所示:
【算法】8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
本文插图

同时 , 本文在实际训练过程中进行了完整的端到端测试 , 可以看到 , INT8训练可以将ResNet50的一轮训练过程从0.360秒降低到0.293秒 , 整体训练过程提速了22% 。
论文地址:


推荐阅读