QARepVGG

性能和推断速度之间的权衡对于实际应用至关重要。架构重新参数化获得了更好的权衡,在现代卷积神经网络中变得越来越受欢迎。然而,当需要进行 INT8 推断时,其量化性能通常太差以至于无法部署(例如,在 ImageNet 上,Top-1 准确率下降超过 20%)。在本文中,我们深入探讨了这种失败的潜在机制,原始设计不可避免地扩大了量化误差。我们提出了一种简单、稳健且有效的解决方法,以获得一种适合量化的结构,同时也享受重新参数化的好处。我们的方法极大地弥合了 RepVGG 的 INT8 和 FP32 精度之间的差距。通过标准的后训练量化,不需要繁琐的操作,ImageNet 上的 Top-1 准确率下降仅在 2% 内。
尽管深度神经网络在视觉[4, 12, 17, 19, 35]、语言[6, 40]和语音[13]领域取得了巨大成功,但模型压缩已经变得迫在眉睫,尤其是考虑到数据中心能量消耗的急剧增长,以及全球范围内资源受限边缘设备的大量分布。网络量化[14, 15]是最有效的方法之一,因为它具有更低的内存成本和固有的整数计算优势。
然而,在神经架构设计中,量化意识并不是首要任务,因此在很大程度上受到忽视。然而,在量化是最终部署所必需的情况下,这可能会产生不利影响。例如,许多知名架构存在量化崩溃问题,如MobileNet [20, 21, 36]和EfficientNet [38],这需要进行修复设计或高级量化方案,如分别是 [26, 37, 45] 和 [2, 16]。
近来,在神经架构设计中,最具影响力的方向之一是重新参数化[8, 11, 46]。其中,RepVGG [11] 在训练过程中将标准的Conv-BN-ReLU转换为其相同的多分支版本,从而在提升性能的同时不增加推断成本。由于其简单性和推断优势,它受到许多最近的视觉任务的青睐 [10, 22, 28, 39, 41, 44]。然而,基于重新参数化的模型面临着众所周知的量化困难,这是一个固有的缺陷,阻碍了其在工业应用中的应用。事实证明,使这种结构舒适地量化并不是一件简单的事情。标准的后训练量化方案极大地降低了 RepVGG-A0 的准确率,从 72.4% 降至 52.2%。与此同时,应用量化感知训练也并不直接。
在这里,我们特别关注 RepVGG [11] 的量化困难。为了解决这个问题,我们探索了基本的量化原则,通过深入分析典型的基于重新参数化的架构来指导我们。也就是说,为了使网络具有更好的量化性能,权重的分布以及任意分布的处理数据都应该是量化友好的。这两者都对确保更好的量化性能至关重要。更重要的是,这些原则引导我们提出了一种全新的设计,我们称之为 QARepVGG(即 Quantization-Aware RepVGG),它不会遭受严重的量化崩溃,其构建块如图1所示,其量化性能得到了极大的改善。
我们的贡献有三个方面:

  1. 揭示了基于重新参数化架构(如 RepVGG [11])在量化过程中性能崩溃的根本原因。
  2. 设计了一个量化友好的替代品(即 QARepVGG),它在权重和激活分布方面有根本性的不同,同时保留了出色的速度和性能平衡优势。
  3. 我们提出的方法在不同的模型规模和各种视觉任务上都具有广泛的泛化能力,实现了出色的后量化性能,可以进行部署。此外,我们的模型在FP32准确性方面与RepVGG相当。
    我们的方法预计将在推断时极大地提升量化性能,而无需额外的成本,填补了重新参数化网络部署过程中的最后一公里的差距。我们将发布代码以促进复现和未来的研究。

重新参数化架构设计。RepVGG [11] 在训练阶段利用多个分支的超参数化网络形式,并在推断阶段将这些分支等同地融合为一个,这被称为重新参数化。随后的作品如DBBNet [9] 和 MobileOne [39]通过引入多样化的组合来扩展这种设计,增强性能和延迟之间的权衡。这种重新参数化趋势还适用于最近的目标检测方法,如PPYOLO-E [44]、YOLOv6 [28] 和 YOLOv7 [41]。

量化。网络量化是一种有效的模型压缩方法,将网络权重和输入数据映射到较低精度(通常为8位),以进行快速计算,从而大大减少了模型大小和计算成本。在不大幅降低性能的情况下,量化主要用于在部署前提速,成为工业生产中的事实标准。后训练量化(PTQ)是最常见的方案,因为它只需要少量图像批次来校准量化参数,并且不需要额外的训练。也提出了量化感知训练(QAT)方法来提高量化精度,如仅使用整数算术的量化 [24]、无数据量化 [32]、面向硬件的量化 [42]、混合精度量化 [43]、零射击量化 [3]。由于QAT通常涉及对训练代码的干预并需要额外的成本,因此只有在有训练代码的情况下无法产生令人满意的结果时才会使用。为了最好地展示所提出的量化感知架构,我们主要使用PTQ来评估量化后的精度。同时,我们还包括实验来证明它对于QAT也是有益的。

量化感知架构设计。[37]中提出了一种可量化替代可分离卷积的方法,其中定义了一个称为信号量化噪声比(SQNR)的度量来诊断网络每个组件的量化损失。同时也认为权重应遵循均匀分布以促进量化 [37]。众所周知,类似Swish的激活函数会产生量化崩溃,这要么需要精心设计的可学习量化方案来恢复 [2],要么需要在类似EfficientNet-Lite [30]中被RELU6替代。BatchQuant [1] 利用一次性神经架构搜索,构建了稳健的混合精度模型,无需重新训练。

针对重新参数化网络的量化。众所周知,基于重新参数化的架构由于其固有的多分支设计而具有量化困难,导致动态数值范围增加 [7]。通过PTQ,重新参数化模型的准确度下降是不可接受的。由于在部署模式下,重新参数化的网络缺少BN层,使用QAT [7] 很难提高量化准确性。据我们所知,RepOpt-VGG [7] 是唯一一个尝试通过制定两阶段优化流程来解决此量化问题的相关工作。RepOpt-VGG 声称,量化困难是由于融合卷积核的量化不友好参数分布引起的。我们重新调查了这个问题,发现问题要复杂得多,巨大的量化误差是权重和激活的协同效应的结果。