大数跨境
0
0

无需任何Trick,极致缩小量化性能差距!美团提出量化友好方案QARepVGG

无需任何Trick,极致缩小量化性能差距!美团提出量化友好方案QARepVGG 极市平台
2022-12-07
2
↑ 点击蓝字 关注极市平台

作者丨Happy
来源丨AIWalker
编辑丨极市平台

极市导读

 

解决结构重参数模型的量化时性能下降问题,无需任何技巧,采用标准PTQ,RepVGG在ImageNet上的精度下降就能保持在2%以内。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

论文链接:https://arxiv.org/abs/2212.01593

性能与推理速度间的均衡在实际应用中非常重要,而结构重参数机制是达成该均衡的一种非常有效的模块。但是,因结构重参数训练得到的模型在面临量化时却出现了严重的性能下降(比如RepVGG-A0经PTQ量化,指标从72.4%下降到了52.2%)。

本文旨在挖掘产生该现象的根本原因,提出了一种简单、鲁棒且有效的补救措施,在享有重参数的优势同时具有量化友好特性。所提方案大幅缩小了RepVGG在INT8与FP32之间性能差距。无需任何技巧,采用标准PTQ,RepVGG在ImageNet上的精度下降保持在2%以内。

本文方案

在标准量化流程中,有多个地方会引入误差。作者采用MSE进行量化误差度量:

注: 表示量化过程, 表示权值的第 通道, 表示截断阈值, 表示量化比特数。量化误差由张量分布因子(包含最大值、最小值、标准差以及阶段阈值)决定。不幸的是,由于我们不能对网络内部张量做任何假设,导致我们无法得到一个具体的解决方案。实际上,我们认为一个量化友好的分布应当具有较小的数值范围、较小的标准差。对于重参数类架构而言,它有两个主要成分(权值、激活张量)需要进行量化且均可能导致性能退化,激活张量同时还将作为下一层的输入,因此误差会逐层累积 。因此,具有好的量化性能的网络需要满足两个基本条件:

  • C1:权值分布有利于量化;
  • C2:激活张量分布易于进行量化。

Diving into the Quantization Failure of Reparameterizaton Structure

首先,我们采用官方Code复现RepVGG-A0性能,见上表。这里,我们采用标准PTQ对RepVGG-A0进行量化并评估INT8精度。

上图给出了复现模型的权值分布,可以看到: 权值很好的分布在零附近,没有特别的异常值存在,即满足上述C1条件。这就是促使我们对C2进行验证是否激活张量导致的量化性能极具恶化。不幸的是,激活张量具有输入依赖性且与权值相耦合,无法通过对输入分布进行假设并得出具体结论。相反,我们对每个分支的标准差进行分析

以RepVGG为出发点,对于卷积层,采用 表示 卷积, ;对于BN层, 采用 进行表示。同时,假设输入和输出分别是 , 令 分别表示Identity、 分支的输出。不失一般性, 令 , 此时有:

分支的BN操作可以描述如下:

这意味着:BN起到改变数据分布的作用。 不会影响量化误差, 但方差改变会影响量化误差。从概率角度出发, 给定随机变量 和标量 , 令 , 此时有

会控制 的爆炸与收缩, 进而导致更好或更快的量化性能。对于其他两个分支, 我们可以得出类似结论。

在模型训练过程中,有一个针对weight decay设计的重要但容易被忽视的成分:custom L2(它有助于改善精度,促进量化)。该部分损失12_loss_eq_kernel表示如下

该损失将通过增大分母来减小损失,而这则会放大激活张量的方差,为量化带来难度。为此,作者通过提出分母提出了一个简单的替代方案:

下表给出了此时的结果,移除分母项后,FP32模型的精度下降了0.7%,但量化精度提升到了61.2%。尽管该精度在实际场景仍无法接受,但该实验表明:常规L2权值衰减策略通过重分配权值分布构建了一个更强的FP32模型,但同时增大的激活张量的方差,导致了量化崩塌

Quantization-friendly Reparameterization

接下来,作者提供了多个配置(S1-S4)逐步解决量化崩塌问题,核心结果见下表。

  • S1(Normal L2):即前述customL2到标准weight decay的替换,我们诚挚为S1。结果见上表,可以看到:尽管FP32精度下降0.5%,但INT8精度提升11.3%。此时,模型精度仍无法满足实际应用需求。那么是什么原因导致的呢?从下图可以看到:第5与6层权值具有较大的标准差(2.4, 5.1)和最大值(692.1107, 14477.3740),这就解释了为何量化性能不够好

既然NormalL2已经对每个分支的卷积添加了约束,为何融合后的权值出现了如此大的异常值呢?基于公式2和3,作者重写公式如下:

经分析,在进行权值融合后, 有可能导致极大权值。下图给出了佐证,有意思的是:Layer4在1和3分支的权值同样大异常值,但融合后并未出现。

  • S2(Identiy w/o BN) 一种解决S问题且满足C1条件的简单方案是:从Identity分支移除BN层,称之为S2。此时,FP32模型精度退化到70.7%,但INT8精度提升到了62.5%,这仍无法接受。这就促使我们进一步验证是否违背了C2。该部分建议查看原文,公式太多了......
  • No BN for Identity and ) 如果 分支有相同的均值, 那么相加会导致方差变大。为更好控制方差, **作者进一步移除了 分支的 , 该配置称之为 **。此时, FP32模型精 度为 , INT8精度达到了 , 极大的改善了量化性能。但是, FP32的精度仍然有些低。
  • S4(Post BN on S3) 由于三分支相加会引入协方差漂移问题,作者在三分支相加之后引入了一个额外的BN层以稳定训练,该配置称之为S4。此时,FP32模型精度提升到了72.2%,INT8精度提升到了70.4%。到此为止,我们成功解决了RepVGG的量化损失问题,并将所得模型称之为QARepVGG。

本文实验

本文主要聚焦ImageNet分类任务,同时采用YOLOv6验证所提方案的泛化性。关于PTQ,我们采用Nvidia开源的Pytorch量化工具,所有卷积与全连接层均被量化为8bit,量化机制为symmetric uniform

上表给出了ImageNet分类任务上的性能对比,可以看到:

  • 在FP32方面,所提方案取得了与RepVGG相当的精度;
  • 在INT8方面,RepVGG存在严重的量化性能退化,如RepVGG-B0精度从75.1%下降到40.2%;所提方案量化精度损失在2%以内。
  • 当带有组卷积时,RepVGG性能退化进一步加速,如RepVGG-B2g4指标从78.5%下降到了13.7%;而QARepVGG-B2g4仅损失0.7%。

上表给出了YOLOv6使用所提方案后的性能对比,从中可以看到:

  • YOLOv6s-RepVGG存在严重的性能退化问题,PTQ量化导致性能退化7.4%mAP;YOLOv6t-RepVGG稍好,但仍退化3%mAP。这个程度的性能退化在实际部署中是不可接受的。
  • 在FP32模型方面,YOLOv6s/t-QARepVGG具有与RepVGG版相当的精度,而INT8量化版精度损失在1.3%mAP以内,甚至优于YOLOv6-RepOpt-VGG。此外,RepOpt-VGG对于搜索超参非常敏感

公众号后台回复“105”极市直播第105期阿里达摩院DAMO-YOLO直播链接~

极市干货

技术干货数据可视化必须注意的30个小技巧总结如何高效实现矩阵乘?万文长字带你从CUDA初学者的角度入门
实操教程Nvidia Jetson TX2使用TensorRT部署yolov5s模型基于YOLOV5的数据集标注&训练,Windows/Linux/Jetson Nano多平台部署全流程

CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart2)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


极市&深大CV技术交流群已创建,欢迎深大校友加入,在群内自由交流学术心得,分享学术讯息,共建良好的技术交流氛围。

点击阅读原文进入CV社区

获取更多技术干货

【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读9.6k
粉丝0
内容8.2k