AI学习者 · 2月18日

RepVGG量化神器 | 异常值感知批量归化OABN&ClusterQAT提高RepVGG量化性能

image.png

轻量级卷积神经网络(CNN)的设计需要在模型架构和压缩技术上进行协同设计努力。作为一种将训练和推理分离的新设计范式,如代表性的RepVGG结构重参化(SR)网络,它使简单的类似VGG的网络焕发新生,其高准确度可以与更高级且通常更复杂的网络相媲美。然而,SR网络中的合并过程引入了权重中的异常值,使得其分布与常规网络不同,从而增加了量化难度。

为了解决这个问题,作者提出了一种称为异常值感知批量归一化(OABN)的训练 Level 的算子改进方法。此外,为了在保持推理准确度的同时满足有限位宽的需求,作者开发了一个基于聚类的非均匀量化框架,用于量化感知训练(QAT),名为ClusterQAT。将OABN与ClusterQAT结合,大大提高了RepVGG的量化性能,特别是在位宽降至8以下时。

1 Introduction

卷积神经网络(CNNs)在众多计算机视觉任务中扮演着主要角色。为了将CNNs部署到资源有限的边缘设备上,需要轻量级设计技术来在硬件成本和推理精度之间找到平衡。

大量的文献显示在轻量级设计方面做出了相当大的努力。这些贡献可以归类为两个主要方面:模型架构设计和其压缩算法。对于前者,文献[17]和[16]提出了对卷积(Conv)块之间连接的改变。此外,如[14]、[21]和[15]等工作采用了Conv块的替代方案。所有这些工作都证明能提高推理性能。

与此同时,模型压缩技术包括量化、剪枝、知识蒸馏和低秩分解。关于量化的研究包括后训练量化(PTQ),以及量化感知训练(QAT)。PTQ在预训练模型上执行量化,这避免了训练过程中的额外计算。QAT将量化误差融入训练中,使模型更能抵抗量化。PTQ兼容高比特量化,如16位或8位,而QAT适用于低于8位的低比特量化。

结构重参化,特别是在RepVGG中使用的方法,是一种在简化模型结构的同时保持推理高效率的有效途径。对于RepVGG来说,它在训练时具有3个分支的结构,而在推理时则采用单一分支的类似VGG的结构。这种训练与推理之间的解耦结构使得VGG得以复兴。尽管类似于VGG的推理结构只包含卷积(Conv)和非线性块,但它们在参数更少的情况下仍能胜过ResNet和EfficientNet。

然而,这些新型架构或算子中的一些与模型压缩技术不兼容。值得注意的是,RepVGG的一个明显不足是量化性能不佳。如图2所示,在RepVGG的权重中存在异常值。正如[23]中所示,这些异常值的出现将对量化产生不利影响。

image.png

尽管先前的工作尝试通过各种技术克服不同种类卷积神经网络上的量化问题,但它们未能适应结构重参化网络。其中大多数是设计和在传统CNNs(如ResNet、MobileNet等)上进行基准测试的。因此,不经任何修改直接将这些技术应用于RepVGG可能是不恰当的。

也有研究工作致力于修改RepVGG,使其更能适应量化,例如[14]中的QARepVGG和[15]中的Rep-Optimizer。然而,这些研究只在8位量化这一相对宽松的条件下进行了基准测试。为了使其更接近现实世界的硬件部署,有必要在更严格的条件下进行讨论。

作者的工作详细讨论了RepVGG的量化。与其他研究在改变模型结构或优化器方面,如QARepVGG和Rep-Optimizer的工作不同,作者提出了一种通过在训练过程中修改RepVGG的批量归一化(BN)块的操作 Level 改进。然后,结合针对这类训练技术的非均匀量化方案,作者最终使RepVGG适用于低比特量化。

作者的贡献如下:

  1. 作者找出了导致RepVGG量化恶化的原因。通过引入一种增强的批量归一化运算符,即所谓的异常值感知批量归一化(OABN),在训练过程中抑制异常值。OABN使得RepVGG能够与常见的PTQ方法兼容,从而显著提高了量化性能。
  2. 作者提出了ClusterQAT,这是一个非均匀的量化训练框架,用于微调使用OABN训练的模型。通过将聚类融入训练过程中,ClusterQAT动态调整量化区间。得益于权重中分布模式的保持,在RepVGG上实现更低比特的量化变得可行。
  3. 结合了PTQ和QAT,作者的高效训练流程解决了与SR网络低比特量化相关的难题。通过在量化过程中精心控制状态的数量,作者在很大程度上平衡了内存开销和推理精度。

2 OABN - Operator for Improving RepVGG's Quantization

RepVGG has outliers in weights

不同于其他类型的卷积神经网络,RepVGG在训练和推理之间的合并步骤中综合了权重。正是这些合并步骤引入了权重中的异常值,这导致了量化过程中的困难。

RepVGG的合并步骤包括批量归一化(BN)融合、填充和相加。对于和分支,首先将支撑的BN块吸收到卷积(Conv)核中,并添加必要的填充。对于恒等分支,计算BN块中的比率作为等效权重。然后,这三个分支相加,形成带有偏置的等效 Conv块。

图3详细展示了合并过程。至于合并后的权重,作者根据它们的位置定义它们为A类、B类和C类如下。位于A类的权重是从所有三个分支合并而来的。对于在B类中的权重,它们来自和分支,不包括恒等分支。剩下的权重,定义为C类,只来自分支。在合并权重中,这三类的数量从最少到最多不等。

image.png

相应地,权重是这样计算的:

image.png

考虑到第二层的第1到第3个输出通道,图4(a)展示了一个训练有素的RepVGG网络合并权重的代表性幅度模式。

image.png

值得注意的是,对角线上存在非常大的权重,这些权重与它们周围的环境显著不同。通过对比它们的位置和幅度,作者得出以下发现。

位置 大多数较大的权重位于类别A的位置,而不是类别B和类别C。

幅度 位于类别A()的权重几乎等同于身份BN的值。分支和分支对类别A的贡献很小。

基于图4的双重发现,作者确认是身份 BN 分支引入了异常值。 和 分支并非主要贡献者。

OABN - Outlier Aware Batch Normalization

image.png

3 ClusterQAT - Lower-Bit Quantization for RepVGG

为了最小化模型的内存消耗,需要模型本身和量化算法的共同努力。基于OABN对RepVGG进行更低比特量化研究是必要的。作者引入了一种结合训练期间聚类的非均匀量化方法,名为ClusterQAT。

Quantization-Aware Training for RepVGG

QAT是训练量化卷积神经网络模型的传统方法。然而,直接将QAT用于3分支RepVGG是不可行的。所有的可训练参数都存在于3分支结构中,而量化需要准备好涉及单分支权重的推理阶段。在这种情况下,如果直接使用QAT,量化误差不能直接反馈到三个分支结构的每个可训练参数中。

image.png

为了使RepVGG适用于量化感知训练(QAT),作者在训练过程中量化了合并后的权重,而不是3分支权重。如图1所示,在前向传播中使用量化的权重和激活,而在反向传播中使用全精度。

ClusterQAT - Quantization-Aware Training with Clustering

量化质量的关键在于量化方法是否能够保留全精度权重的原始分布。受到无标签数据聚类算法的启发,作者在训练过程中为RepVGG进行低比特量化时执行聚类。由于聚类可以最小化类内相似性并最大化类间相似性,所提出的ClusterQAT将这种聚类量化结合到QAT中。

image.png

所提出的ClusterQAT在训练过程中执行量化并更新量化点。ClusterQAT的伪代码在算法2中给出。

4 Experiments and Discussions

Experiment Settings

作者通过与其他不同位宽以及不同网络的对比,验证了作者提出的OABN和ClusterQAT方法。作者使用NVIDIA RTX-3090 11GB进行训练,软件平台为Pytorch 1.11.0和Ubuntu 20.04。

作者首先使用均匀量化来验证OABN的效果。具体来说,权重是对称量化,而激活值是非对称量化。整个过程包括缩放和取整。使用简单的夹紧方法将整数值保持在[0, ]范围内。权重和激活值的均匀量化模块图如图5所示。

image.png

所有的量化都是在等效的VGG样卷积核上进行的。如图6所示,第一个卷积层和最后一个全连接(FC)层保持FP32精度,不进行量化。作者对每一层的权重和激活采用逐层量化的方法。每一层的权重共享相同的量化参数。

image.png

Results with OABN

4.2.1 8-bit uniform quantization with OABN

作者首先在诸如CIFAR-10 和 ImageNet-1k 这样的分类数据集上验证OABN。使用算法1中不同的设置来训练类似RepVGG-A0的网络。

image.png

配置列表见表1。所有模型都是从零开始训练的。用于推理的权重是在FP32精度达到最高的那个时期选择的。权重和激活的量化都是根据附录中的规则进行的。图7(a)和7(b)分别给出了FP32和INT8下的精度结果。

image.png

所有图表均显示了在FP32和INT8之间准确度的一致趋势。较小的值可以缩小FP32和INT8之间的差距,而较大的值则会扩大这一差距。对于图7(a)中展示的CIFAR-10的结果,当时,FP32和INT8之间的推理准确度差距得以弥合。较小的限制了身份BN中的比例。根据图1概述的合并规则,在类别A处的合并权重被抑制。相应地,那些预期具有相对较大幅值的点不再被视为异常值。量化误差不再是影响准确度的因素。

然而,当非常小(例如)时,FP32和INT8的准确度都会下降。尽管它们之间的差距很小,但FP32和INT8的准确度通常较低。由于模型的性能已经下降,量化性能自然也会较差。对于RepVGG来说,存在一个的适当范围,既不应该太大也不应该太小,以确保量化成功。

关于图11(b)中展示的ImageNet分类结果,INT8的曲线与CIFAR-10呈现出类似的趋势。相对更优的值大约在1到3之间。所有这些结果都证明了OABN在训练对量化友好的RepVGG模型时的有效性。

4.2.2 8-bit PTQ results with OABN

在本节中,作者挑选了一些PTQ技术来量化作者的带有OABN的RepVGG。为了检验这些PTQ技术的有效性和能力,作者列出了准确率(Acc.)和唯一元素的总数以便清晰地展示。根据图6,第一层和最后一层不进行量化。作者将剩余层中唯一权重的总和定义为状态大小。表3展示了详细的 信息。所有项目都在ImageNet-1k上进行测试。

image.png

显然,OABN在8位设置下显著提高了RepVGG的PTQ性能。在应用了OABN的情况下,所有方法都为RepVGG带来了改进的结果。特别是对于较小的值(例如),上述所有PTQ方法都变得有效,而对于较大的值,它们的效果则不太明显。

然而,一些量化方法并不能压缩状态大小。与作者的统一量化方法相比,它们产生的状态大小要大100倍,这需要在推理时使用额外的内存。从这个角度来看,作者的统一量化方法具有优势,因为它在保持8位设置下可接受的准确性的同时,相对保持较少的状态。

与QARepVGG相比,作者可以发现,在宽松的量化条件下,产生更多权重状态时,QARepVGG表现良好。在权重状态较少的严格条件下,作者带有OABN的RepVGG优于QARepVGG。

Results with OABN and CLUSTERQAT

4.3.1 Lower-bit Quantization with OABN and ClusterQAT

基于使用OABN的预训练RepVGG模型,作者根据表4中给出的流程,使用QAT对作者的模型进行微调。

image.png

图8展示了一个关于在4位量化下联合使用OABN和ClusterQAT的消融研究。可以看出,ClusterQAT仅对经过OABN训练的模型产生影响。在未经OABN训练的模型上直接使用ClusterQAT,在低比特量化下将不会有所帮助。

image.png

此外,提供了更多的实验来验证作者的ClusterQAT。为了清晰地展示,作者使用OABN对一些用不同训练的代表模型进行了微调。

image.png

与统一QAT的比较,以及在不同s值下的情况都已列出。CIFAR-10和ImageNet-1k上的结果分别呈现在表5和表6中。所有的量化都是逐层进行的,这与图7中使用的策略相一致。

image.png

如表5所示,作者提出的ClusterQAT在CIFAR-10数据集上与传统统一的QAT相比,在性能方面表现更佳。然而,它需要与使用OABN中适当的预训练的模型进行合作。具体来说,对于没有使用OABN的RepVGG-A0模型,即使使用了ClusterQAT,结果也是不可接受的。由异常值引入的错误非常大,以至于ClusterQAT无法处理。

值得注意的是,当剪裁阈值调整到其最佳值(例如0.5)时,即使量化位数为3,作者的模型也能再次获得良好的准确率。ClusterQAT相较于使用较大训练的模型显示出改进。相比之下,对于所有使用统一量化的尝试,调整并没有显著影响性能。作者在ImageNet数据集上也观察到了类似的趋势,如表6所示。

Computation Cost for Training

训练速度是使用单个RTX-3090 11GB显卡进行基准测试的。如表7所示,作者的RepVGG+OABN相比于QARepVGG,在消耗的通道大小和FLOPs方面更少。

image.png

5 Conclusions

RepVGG是一种新颖的卷积神经网络架构,它使VGG再次复兴。然而,其合并步骤在推理时引入了异常值和独特分布的权重,这使得它对量化不友好。通过在训练期间使用OABN而非传统的BN,经过良好训练的RepVGG不存在异常值,这对8位量化是友好的。

基于使用OABN训练的模型,作者提出了ClusterQAT来进一步调整权重。结合OABN和ClusterQAT,作者使RepVGG对状态尺寸受限的量化友好。

6 Related Work

QARepVGG从另一个角度提升了RepVGG的量化效果。它认为,权重和激活值的大方差是阻碍INT8量化性能的主要因素。

为了解决这个问题,提出了一个带有后批量归一化(post-BN)块的新训练结构。结果表明,在INT8量化下,ImageNet上的分类精度相较于RepVGG提高了20%。

参考

[1].Outlier-Aware Training for Low-Bit Quantization of Structural Re-Parameterized Networks.

作者:AI视界引擎
文章来源:AI视界引擎

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
16950
内容数
1236
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息