现有神经网络在计算资源和计算能力上消耗大量内存,这使得在资源受限的环境中部署它们变得具有挑战性。然而,有多种方法可以提高它们的效率。这两种方法是量化,这是一种众所周知的方法,用于网络压缩,以及重参化,这是一种新兴技术,旨在提高模型性能。

虽然这两种技术分别得到了研究,但关于它们同时应用的研究却非常有限。为了解决这个问题,作者提出了一种新颖的方法,称为RepQ,它将量化应用于重参化的网络。

作者的方法基于一个洞察,即任意重参数化层的测试权重可以表示为可训练参数的不同可微函数。作者通过在函数上应用量化来实现量化感知的训练。RepQ对各种重参数化模型有很好的泛化能力,并且在所有实验中超过了基线LSQ量化方案。

多年来,神经网络(NN)中的参数数量不断增加,这使得基于NN的应用在计算资源受限的设备上部署变得不切实际,例如移动设备。许多研究旨在设计计算效率更高的NN。

这一领域的一些非 exhaustive 想法包括知识蒸馏,模型剪枝,矩阵分解,神经架构搜索,量化,重参数化。在这里,作者主要关注重参化和量化作为主要研究领域。

重参数化是一种新兴技术,最近使得在ImageNet上训练一个普通的非残差VGG模型能够达到80%的惊人准确度。

重参数化

早期的重参数化是由于批标准化和残差连接研究而出现的。受到批标准化 [] 的启发,作者们提出了一种权重规范化技术。这种技术可以被视为一种重参数化,通过引入一个额外的参数,该参数负责权重规范化,将权重向量的方向和长度解耦。DiracNets []的作者们寻找一种无需显式残差连接来训练深度网络的方法。

他们提出了将卷积与卷积结合,并引入跳跃连接进行重参数化的方法。这使得非常深的单分支架构也能达到良好的质量。ACNets和 RepVGG通过引入多个卷积和批标准化来将重参数化提升到一个新的水平,重新审视了著名的架构如VGG和 ResNet 并显著提高了它们的质量。

更先进的重参数化策略通常会使用更多的卷积和更多样的分支在它们的块中。除了在分类任务中广泛应用外,重参数化最近在目标检测和超分辨率等其他计算机视觉任务中也有所帮助,减少了计算负担。

Re-parameterization 得到了理论上的支持;作者证明了在某些特定理论假设下,重参数化可以导致更快地收敛。作者们证明了在某些情况下,重参数化可以等价于具有某种梯度缩放策略的常规网络训练。

量化

通常,NN参数以浮点数形式存储。然而,32位参数表示对于保持网络质量是冗余的。旨在寻找最佳低位整数参数表示的研究领域被称为神经网络量化。

从理论上讲,量化涉及到舍入,导致网络在几乎所有地方都具有零梯度。为了解决这个问题,QAT算法通过以一种可微分的方式模拟量化,允许网络适应随后的量化。

例如,有研究建议在全精度网络训练中注入伪量化噪声。另一方面,使用直截估计器来近似连续量化函数在反向传播过程中的梯度。

此外,列出的基础方法还可以通过使用知识蒸馏、渐进量化、随机精度、批标准化重估计、额外的正则化和各种非均匀量化扩展来改进。

背景

量化可以通过降低卷积或全连接层中矩阵乘法因子的精度来减少推理时间和功耗。量化可能导致质量下降,因此QAT被用来恢复质量并确保模型的鲁棒性。

RepQ~_权重

  1. 作者介绍了一种新颖的方法,其中同时应用了QAT和重参数化,通过在合并的重参数化块上执行伪量化来实现。

选项1-3是基于公认的模型量化方法,而选项4是作者的新颖方法,专为重参数化模型的量化而设计。由于选项1和3要么不是通用的,要么已知会导致重参数化模型产生不满意的结果,因此作者排除了这两个选项。在实验中,作者将选项2与作者的RepQ方法(选项4)进行比较,以证明其有效性。

提出的方法

在第4.1节中,作者描述了没有BN层的重参化块的量化策略,并引入了一个通用的RepQ训练框架。对于具有BN层的块,作者在第4.2和4.3节中提供了两种不同的扩展。

RepQ:带重参化的量化感知训练

让作者先考虑这样一个场景,即在重参数化块中没有使用BN。作者们注意到,可以将没有BN的重参化块合并为一个单卷积,同时仍然优化由重参数化引入的扩展一组权重,从而通过合并训练来减少训练时间。这部分展示了这种合并训练如何使QAT受益。

RepQ~_人工智能_02

RepQ~_人工智能_03

RepQ-BN:合并批标准化

许多最先进的重参化方法使用批标准化。几篇论文表明,批标准化是它们块中的一个必要组成部分。如果移除批标准化,会导致显著的性能下降。由于作者旨在提供一个适用于各种重参化的通用量化策略,作者研究如何在QAT中处理批标准化。

第一个选项是在训练期间将BN与前一个卷积层融合,如本节所述。[20, 21]中也提出了一种类似的程序来实现仅使用整数算法的量化。在作者的情况下,折叠BN将任务简化为第4.1节中描述的无BN情况。

RepQ~_参数化_04

算法1:卷积与批标准化融合进行量化

RepQ~_权重_05

RepQ-BNEst:批量归一化估计

RepQ~_权重_06

RepQ~_权重_07

实验

实验设置

架构

作者在三个架构上评估RepQ的性能:ResNet-18,VGG和ECBSR。对于ResNet-18,作者采用了两种重参化技术,即众所周知的ACNets和最近发布的OREPA,作者分别称之为AC-ResNet-18和OREPA-ResNet-18。

对于VGG,作者采用了最新的RepVGG方法进行重参化,其中两个网络深度变体分别为RepVGG-A0和RepVGG-B0。ECBSR是一种针对超分辨率问题开发的重参数化方法。作者评估RepQ与SOTA架构的轻量级版本在移动设备上的适用性。

对比

作者将RepVGG的量化结果与QARepVGG进行了比较,QARepVGG是引入的友好的量化版本的VGG。据作者所知,除了RepVGG之外,没有对重参化架构进行量化研究。为了进一步支持作者文章的主要论点,作者设计了一些基准,如下所述。

基准

量化模型训练包括两个连续阶段:(1) 常规的全精度(FP)预训练和(2)QAT。在第二阶段开始时,使用FP阶段预训练的权重来初始化量化模型。作者将作者的重参数化量化感知训练RepQ与不使用重参数化在QAT阶段进行的基准进行了比较。特别地,作者将RepQ与表格1中概要描述的简单和合并的基准进行了比较。

RepQ~_参数化_08

Plain

常规训练的模型,在两个阶段都没有使用重参数化。

Merged

在FP阶段训练重参数化的模型。将重参数化的块合并回单个卷积,并使用合并的权重初始化量化模型。这种初始化对后续量化可能是有益的,因为重参数化的模型通常具有比常规模型更好的指标。

训练流水线

RepQ~_人工智能_09

一旦全精度训练收敛,将"self.quantize"参数设置为True,并在补充文件中描述的微小超参数变化下重复训练。   

实现细节

作者按照重参数化文章的设置使用官方仓库训练全精度模型。这就是为什么对于相同模型架构,不同重参数化块的基准会有轻微差异。作者使用与全精度模型相同的超参数设置来训练有量化的模型,除了学习率调整。

量化模型初始化

所有量化的模型都是使用相应的全精度预训练权重初始化的;量化的步骤使用MinError[B]初始化,对于第一个批处理。为了可重复性,作者在附录中提供了超参数。

实验结果

作者在表格2和3中呈现了作者的主要结果。它们表明,所提出的RepQ变体在所有测试架构和重参数化块的基准上均取得了良好的性能。表格3展示了RepQ在各种超分辨率数据集上的优势。

RepQ~_参数化_10

对于所有研究的分类模型,8位RepQ性能超过了全精度结果,而QARepVGG出现了质量下降。RepQ与QARepVGG之间的差距在两个RepVGG版本上都超过了1%,分别为RepVGG-A0和RepVGG-B0。对于RepVGG和ResNet,最佳结果是由RepQ-BN或RepQ-BNEst实现的。特别是,在8位实验中,RepQ-BN略好于RepQ-BNEst。

RepQ~_权重_11

在四比特量化中,RepQ-BNEst实现了更好的结果。令人惊讶的是,RepQ-BNEst在四比特的RepVGG-A0和RepVGG-B0上超过了RepQ-BN,取得了相当大的优势。

此外,作者在2个V100 GPU上测量了ResNet-18的训练速度。与RepQ-BN相比,RepQ-BNEst允许25%的训练时间减少。合并的基准在不同的研究架构上表现出不一致性。对于RepVGG-B0,合并结果非常接近RepQ,但对于ResNet-18和ECBSR,其性能不如简单的模型。

讨论

作者的结果表明,8位量化可以提高重参数化模型的质量。简单模型中也观察到类似的行为,通常解释为量化的额外正则化效应。使用RepQ方法的四位量化导致质量略有下降。

同时,与8位模型相比,4位RepVGG-B0的位操作次数减少了四倍。有趣的是,4位RepVGG-B0的位操作次数比8位RepVGG-A0少了两倍,但它的精度却更高。这使得4位RepVGG-B0在部署方面更有优势。

局限性

Re-parameterization和RepQ的主要局限性是增加了训练时间(TT)。让作者以ResNet-18用两种不同的块(ACNets和OREPA)重参数化为例。表格提供了重参数化模型在Plain FP和QAT网络上的相对训练时间。

由RepQ引入的TT增加与在full-precision训练上对ACNets和OREPA块的重参数化相比具有可比性。

尽管RepQ-BN由于需要两次前向计算而具有较长的训练时间,但RepQ-BNEst能够缓解这个问题。总的来说,尽管存在额外的训练时间开销,但在推断时间和模型质量之间的权衡中,重参数化和RepQ是有益的。

结论

本文介绍了RepQ,这是一种专为重参化模型设计的QAT策略。在训练期间,RepQ将重参化的块合并为一个卷积,并在合并的权重上应用伪量化函数。为了能够对任意重参数化块进行量化,作者提供了一种自然的方法来合并块内的非线性批标准化层。

此外,作者还通过估计BN统计量来增强这个解决方案,从而实现了加速。作者对各种重参数化块和模型架构进行了广泛的实验评估。结果表明,RepQ超越了现有解决方案,并为重参数化模型提供了无损的8位量化。总的来说,RepQ将重参数化的应用扩展到了量化NN的领域,并提供了易于实现的解决方案。