博客
关于我
CVPR 2020丨8比特数值也能训练模型?商汤提出训练加速新算法
阅读量:566 次
发布时间:2019-03-09

本文共 1754 字,大约阅读时间需要 5 分钟。

INT8训练技术革新:提升卷积神经网络训练效率

近年来,卷积神经网络(CNN)在计算机视觉领域的广泛应用引发了对加速训练过程的热烈讨论。为了解决浮点精度对训练过程的限制,INT8训练技术应运而生,为用户提供了低开销高效率的解决方案。

本文围绕CVPR2020入选论文《Towards Unified INT8 Training for Convolutional Neural Network》展开论述,揭示其核心技术和实践价值。

动机与背景

CNN的巨大成功源于其出色的表达能力,但训练过程却因庞大参数量和资源需求而面临挑战。目前研究主要聚焦于如何用更少资源训练CNN,同时确保模型性能不受显著影响。

神经网络量化技术已在部署阶段展现出显著优势。通过将浮点计算替换为8bit整数计算,INT8部署加速技术不仅提升了推理效率,还降低了内存占用。

携程引擎芯片的加速能力呈现出显著提升,我们测量显示,在ACLI5-Formatted的基准测试中,INT8算力可比FP32提升超过2倍。


INT8训练的核心挑战

将CNN量化技术延伸至训练阶段面临重大挑战。梯度量化涉及两个关键环节:前向传播和反向传播。尽管前向过程已有优化方案,其反向段更为棘手。

实验数据显示,梯度分布呈现出以下显著特征:

  • 梯度集中在0附近但极端值丰富,导致量化误差显著影响训练稳定性

对MobileNetV2进行训练的实验表明,INT8训练过程中预期的精度下降与损失函数突然上升存在高度相关性。


收敛稳定性分析

为理解量化误差对训练过程的影响,我们开展了理论分析。采用Adam优化器为基础,建立了损失函数为目标量的收敛分析框架。

关键发现如下:

  • 梯度量化误差直接贡献于权重更新的偏差

  • 学习率调节对稳定性至关重要

通过对模拟实验数据的系统分析,验证了上述假设的有效性。


主要方法

针对上述挑战本文提出以下创新性方法:

  • 基于方向自适应的梯度截断

    智能调整截断阈值,确保梯度方向信息不丢失。通过梯度下降策略实现最优截断点的自动寻找。

  • 误差敏感的学习率调节

    学习率与量化误差呈反向关系,提出动态调整机制以优化训练效率。

  • 周期更新技术

    借鉴量化核心反量化优化,周期性更新量化参数以降低额外开销。

  • 量化卷积融合

    将量化与反量化操作整合至卷积核函数,减少数据访存次数。


  • 实验结果

    实验验证了本文方法的有效性。CIFAR10和ImageNet分类任务中的精度损失均在1.5%以内。最佳效果出现在MobileNet和Inception网络上。

    100 epochs的训练任务显示,采用INT8训练的ResNet50+pFL.grad_backwards加速核实现了整体效率提升22%。这样修改后的模型在 کیفیت和效率间取得了较好的平衡。

    针对目标检测任务,PASCAL等数据集上的实验结果显示相应损失控制在2%以内。


    参考文献

    [1] Gong R, Liu X, Jiang S, et al. Differen-tiable soft quantization: Bridging full-precision and low-bit neural networks. ICCV, 2019.

    [2] Li R, Wang Y, Liang F, et al. Fully quantized network for object detection. CVPR, 2019.

    [3] Jacob B, Kligys S, Chen B, et al. Quantization and training of neural networks for efficient integer-arithmetic-only inference. CVPR, 2018.

    [4] Yang Y, Wu S, Deng L, et al. Training high-performance and large-scale deep neural networks with full 8-bit integers. 2019.


    :本文以该研究为基础提问,欢迎交流与合作。如需进一步了解技术细节或投稿事宜,请访问 www.52cv.net 或关注相关研究群。

    转载地址:http://dfysz.baihongyu.com/

    你可能感兴趣的文章
    pxe实现linux的自动安装
    查看>>
    py 的 第 19 天
    查看>>
    Py-Bitcoin 项目使用教程
    查看>>
    Pytorch 图像增强 实现翻转裁剪色调等 附代码(全)
    查看>>
    pyautogui模拟鼠标拖动选中文字的基本知识(附Demo)
    查看>>
    pyautogui的基本介绍和使用
    查看>>
    PyCharm - 社区版是否能够突出显示 css/javascript?
    查看>>
    PyCharm 2018.3.5 RC 发布,原生 SSH 支持
    查看>>
    PyCharm 3.1 在索引期间永远挂起并且无法使用
    查看>>
    Pycharm Pro 2018.2 汉化专业激活破解
    查看>>
    PyCharm vs VSCode,是时候改变你的 IDE 了!
    查看>>
    PyCharm 中,“新建”(New)和“新建项目”(New Project)-ChatGPT4o作答
    查看>>
    PyCharm 代码编辑与调试运行详解
    查看>>
    Pycharm 出现 instantitaing tests 以及test session starts 的解决方法
    查看>>
    pytorch 固定随机种子
    查看>>
    Pycharm 对容器中的 Python 程序断点远程调试
    查看>>
    Pycharm 常用快捷键大全【快查字典版】
    查看>>
    Pycharm 常用快捷键大全,全网最全!
    查看>>
    PyCharm 常用的技巧完全指南
    查看>>
    PyCharm 快捷键与效率编码详解
    查看>>