PACT: PARAMETERIZED CLIPPING ACTIVATION FOR QUANTIZED NEURAL NETWORKS 论文学习

摘要

深度学习算法以牺牲大量的计算成本为代价,实现了较高的分类精度。为了解决这一成本,已经提出了一些量化方案——但这些技术大多集中于量化权重,与激活相比,这些权重的规模相对较小。本文提出了一种新的训练激活量化方案,该方案使神经网络能够在超低精度权值和激活下工作,而没有任何显著的精度下降。这种技术,PArameterized Clipping acTivation (PACT)即准参数化裁剪激活(PACT),使用一个激活裁剪参数α,在训练过程中进行优化,以找到正确的量化尺度。PACT允许将激活量化到任意比特精度,同时相对于已发布的最先进的量化方案实现了更好的精度。我们首次表明,权重和激活都可以量化到4位的精度,同时仍然可以在一系列流行的模型和数据集上实现与全精度网络相媲美的精度。我们还表明,在硬件中利用这些精度降低的计算单元可以在推断性能方面实现超线性改进,这是由于加速器计算引擎领域的显著减少,以及在芯片上存储器中保留量化模型和激活数据的能力。

1. 引言

PACT允许显著减少表示权重和激活所需的位宽,并为权衡硬件复杂性和模型准确性提供了新的机会。
这项工作的主要贡献包括:
1):一种新的激活量化方案,用于寻找训练过程中的最优量化尺度。我们引入了一个新的参数α,用于表示激活函数中的剪切水平,并通过反向传播进行学习。α设置的量化尺度小于ReLU,以减少量化误差,但比传统的剪切激活函数(在以前的方案中使用)大,以允许梯度更有效地流动。此外,还对损失函数中的α进行了正则化处理,使其收敛速度加快。我们对PACT在保持模型准确性方面的预期有效性进行了推理和分析。
2)定量结果证明了PACT在多个模型和数据集上的有效性。根据经验,我们表明:(a)对于极低的位精度(权重和激活度为≤2位),与所有发布的方案相比,PACT获得了最高的模型精度,而基于PACT的(b)4位量化cnn实现了类似于单精度浮点表示的精度。
3)系统性能分析证明了不同位表示与模型精度在硬件复杂性方面的权衡。我们证明了在计算引擎领域的显著减少是可能的,并使用它来估计可实现的系统级性能的提高。

3. 激活量化过程中的挑战

权重的量化等价于离散损失函数的假设空间相对于权重变量的关系。因此,在模型训练过程中确实可以补偿权重量化误差(HWang&Sung,2014;Courbariaux等人,2015)。另一方面,传统的激活函数没有任何可训练的参数,因此量化激活所产生的误差不能通过反向传播得到直接补偿。
当ReLU(cnn中最常用的激活函数)作为层激活函数(ActFn)时,激活量化变得更加具挑战性。ReLU允许激活的梯度通过深层传播,因此相对于其他激活函数实现了优越的精度(Nair&Hinton(2010))。然而,由于ReLU函数的输出是无界的,因此ReLU后的量化需要一个较高的动态范围(即更高的比特精度)。在图1中,我们给出了使用ReLU的CIFAR10数据集的ResNet20的训练和验证误差,并表明ReLU量化的精度显著降低。
在这里插入图片描述
研究表明,这种动态范围问题可以通过使用剪切激活函数来缓解,该函数为输出设置了一个上界(Hubara等人(2016b);Zhou等人(2016))。然而,由于层对层和模型的差异,很难确定全局最优剪切值。另外,如图1所示,虽然使用量化剪切得到的训练误差小于使用量化ReLU得到的训练误差,但验证误差仍然明显高于基线。
最近,通过应用half-wave Gaussian quantization方案来实现激活,已经部分地解决了这一挑战(Caietal.(2017))。基于批规范归一化后的激活接近均值和单位方差为零的高斯分布,他们使用劳埃德算法找到该高斯分布的最优量化尺度,并对每一层使用该尺度。然而,这种技术也没有充分利用反向传播的强度来最优地学习剪切水平,因为所有的量化参数都是离线确定的,并且在整个训练过程中保持不变。

4. PACT: PARAMETERIZED CLIPPING ACTIVATION FUNCTION

基于这些见解,我们引入了PACT,一种新的激活量化方案,其中ActFn具有参数化的剪切水平,α.α通过基于梯度下降的训练进行动态调整,目的是最小化量化产生的精度退化。在PACT中,cnn中传统的ReLU激活功能被以下功能所取代:
在这里插入图片描述
其中,α将激活的范围限制为[0,α]。截断的激活输出被线性量化为k位用于点积计算,其中
在这里插入图片描述

α越大,参数化的剪切函数就越类似于ReLUActfn。为了避免由于动态范围较宽而产生的大量化误差,我们在损失函数中包含了一个α的l2正则化器。图2显示了在CIFAR10-ResNet20的全精度训练过程中,从初始值为10开始并使用l2-正则化器时,α的值是如何变化的。可以观察到,随着训练阶段的进行,α收敛于比初始值小得多的值,从而限制了激活的动态范围,并最小化了量化损失。
在这里插入图片描述
α越大,参数化的剪切函数就越类似于ReLUActfn。为了避免由于动态范围较宽而产生的大量化误差,我们在损失函数中包含了一个α的l2正则化器。图2显示了在CIFAR10-ResNet20的全精度训练过程中,从初始值为10开始并使用l2-正则化器时,α的值是如何变化的。可以观察到,随着训练阶段的进行,α收敛于比初始值小得多的值,从而限制了激活的动态范围,并最小化了量化损失。
在这里插入图片描述

4.1 了解参数化剪辑是如何工作的

当激活被量化时,网络参数的整体行为会受到训练过程中量化误差的影响。为了观察网络训练过程中激活量化的影响,我们对剪切参数α进行了扫描,并记录了有量化和没有量化时的训练损失。图中。3a、b和3c分别在预训练的SVHN网络的α范围内显示交叉熵和训练损失(交叉熵+正则化)。用所提出的量化方案对加载的网络进行训练,即被替换为其7个卷积层的参数化裁剪ActFn。在计算交叉熵和训练损失时,我们每次扫描一层α的值,保持所有其他参数(权重(W)、偏差(b)、BatchNorm参数(β,γ)和其他层的α)不变。
通过全精度正向传递训练计算出的交叉熵如图3a所示。在这种情况下,随着α的增加,交叉熵在许多层中收敛到一个很小的值,这说明当没有应用量化时,ReLU是一个很好的激活函数。但即使对于全精度情况,训练剪切参数α也有助于减少某些层的交叉熵;例如,ReLU(即α=∞)对于act0和act6层不是最优的。
接下来,通过量化计算的交叉熵如图3b所示。随着量子化,交叉熵在大多数情况下随着α的增加而增加,这意味着ReLU不再存在有效。我们还观察到,最优的α对于不同的层有不同的范围,这促使人们需要通过训练来“学习”量化尺度。此外,我们观察到某些α范围(如act6)的交叉熵平台,导致基于梯度下降的训练困难。
最后,在图3c中,我们展示了总的训练损失,包括上面讨论的交叉熵和α正则化的代价。正则化有效地消除了训练损失中的高原,从而有利于基于梯度下降的训练的收敛。同时,α正则化并不扰动全局最小点。例如,图3c中的实心圆是从预训练模型中提取的最优α,处于训练损失曲线的最小值。下一节将讨论的正则化系数λα是一个额外的超参数,它控制了正则化对α的影响。
在这里插入图片描述

4.2超参数的探索

For this new quantization approach, we studied the scope of α, the choice of initial values of α,and
the impact of regularizing α. We briefly summarize our findings below, and present more detailed
analysis in Appendix A.
从我们的实验来看,α的最佳范围是在每层中共享α。这种选择还降低了硬件的复杂性,因为在一个层中所有精度降低的相乘累积(MAC)操作完成后,α只需要相乘一次。
在α的初始化选择中,我们发现将α初始化到一个相对于典型的激活值更大的值是有利的,然后在训练过程中应用正则化来减少它。
最后,我们观察到应用l2正则化与相同的正则化参数λ效果相当好。我们还观察到,正如预期的那样,当使用更高的比特精度时,λα的最优值略有下降,因为更多的量化级别会导致激活量化的更高分辨率。
此外,我们遵循了许多其他量化的CNN研究的实践(例如,Hubara等人(2016b);Zhou等人(2016)),并且没有量化第一层和最后一层,因为这些已经被报道会显著影响准确性

5. 实验

图4:
图4
在这里插入图片描述

5.1激活量化性能

我们首先使用不同的cnn来评估我们的激活量化方案。图4显示了测试cnn对PACT的训练和验证误差。总的来说,比特精度越高,训练/验证误差就越接近全精度参考。具体地说,可以看到,使用高于3位的训练几乎完全收敛于全精度基线。当激活位精度至少为4位时的所有情况下,最终的验证误差相对于全精度验证误差的差异都小于1%。

我们进一步比较了之前的DoReFa、LPBN和HWGQ三种方案的激活量化性能。我们使用精度退化作为量化性能度量,它被计算为全精度精度和每个量化比特精度的精度之间的差异。图4f显示了当每个量化方案使用相同的权重位精度(括号内表示)时,ResNet18(左)和ResNet50(右)的精度下降(top1)。总的来说,我们观察到,随着我们增加激活的比特精度,精度下降会降低。对于ResNet18和ResNet50,与其他量化方案相比,PACT始终实现了较低的精度下降,证明了PACT相对于之前的量化方法的鲁棒性。

5.2 PACT量化对于cnns的性能

在本节中,我们证明了尽管PACT以激活量化为目标,但它并不排除我们也使用权重量化。我们使用PACT来量化cnn的激活,并使用DoReFa方案来量化权重。表1总结了PACT对被测试的cnn(CIFAR10、SVHN、AlEXNeT、RexNet18和ResNet50)的前1个准确性。我们还展示了当权重和激活都被DoReFa的方案量化时,cnn的准确性。可以看出,PACT的权重和激活都具有4位精度,在整个测试的网络中实现了一致的全精度精度。据我们所知,这是迄今为止报告的权重和激活的最低比特精度,可以达到接近(≤1%)的全精度精度
在这里插入图片描述

我们进一步比较了基于pact的量化cnn与之前的7种量化方案(DoReFa、BalancedQ、WRPN、FGQ、WEP、LPBN和HWGQ)的性能。图5显示了AlexNet、ResNet18和ResNet50的精度下降(前1位)的比较。总的来说,精度的下降随着激活或权重的比特精度的增加而降低。例如,在图5a中,当在相同的权重精度下激活位精度增加时,或者在相同的激活位精度下权重位精度增加时,精度下降减小。PACT在所有案例中都优于其他方案。事实上,AlexNet甚至通过使用PACT而不是全精度来实现了略微更好的精度(即负精度下降)。

6. 系统级性能增益

在本节中,我们将演示由于使用PACT-CNN实现的位精度的降低而导致的系统性能的提高。为此,如图6(a),我们考虑一个DNN加速器系统包括一个DNN加速器芯片,包括多个核,与一个外部存储器接口。每个核心由一个由固定点乘法和累积(MAC)处理元素组成的二维收缩期阵列组成,并在其上执行DNN层。每个核心还包含一个片上存储器,它存储被输入到MAC处理阵列的操作数。
为了估计系统在不同比特精度下的系统性能,我们研究了不同版本的DNN加速器,每个加速器包含相同数量的片上存储器、外部存储器带宽和占据等硅面积。首先,使用最先进的技术(14nmCMOS)中的真实硬件实现,我们准确地估计了通过积极扩展位精度而实现的MAC区域的减少。如图6(b)所示,当激活和权值的比特精度从16位均匀地降低到2位时,我们实现了∼14×的密度提高。
接下来,为了将面积的减少转化为整体性能的改进,我们构建了一个可精确配置的MAC单元,其比特精度可以动态调制。MAC单元的峰值计算能力(FLOPs)发生了变化,因此我们在每个精度上都实现了等面积计算。请注意,在所有精度上,总芯片内存和外部带宽保持不变。我们使用深度矩阵估计了系统的整体性能,这是一个针对DNN加速器的详细性能建模框架(文卡塔拉马尼等人)。
图6©显示了ResNet50DNN基准测试的推理性能的增益。我们研究了使用不同的外部内存带宽的性能改进,即带宽无约束系统(无限内存带宽)和两个带宽受约束系统在32和64gbps。在带宽无约束的情况下,性能的增益受到工作并行化程度的限制。在这种情况下,我们看到高达4位的性能接近线性增长,而在极端量化水平(2位)的小幅下降。
实际的系统,其带宽受到限制,(令人惊讶地)在量化的性能上表现出超线性增长。例如,当外部带宽被限制在64GBps时,从16位到4位的量化会导致峰值FLOPs增加4×,但性能提高4.5×。这是因为,片上内存的总量保持不变,并且在非常低的精度下,一些数据结构开始适应核心中存在的内存,从而避免了来自外部内存的数据传输。因此,在带宽有限的系统中,减少从芯片外传输的数据量可以进一步提高系统性能。请注意,对于4位和2位精度配置,我们仍然使用8位精度来执行DNN的第一层和最后一层。如果我们能够将第一层和最后一层量化为4位或2位,我们估计性能将额外提高1.24×,这促使我们需要探索量化第一层和最后一层的方法。

7. 总结

本文提出了一种基于超参数化裁剪激活函数(PACT)的激活量化方案。该方案用激活函数α代替激活函数代替ReLU,该参数通过基于梯度下降的训练进行优化。我们分析了为什么在训练过程中应用量化时,PACT优于ReLU。广泛的经验评估使用几个流行的卷积神经网络,如CIFAR10,SVHN,AlexNet,ResNet18和ResNet50表明,PACT非常有效地量化激活,同时允许权重被严重量化。与之前所有的量化方案相比,我们证明了权重和激活都可以更积极地量化(减少到4位),同时实现接近(≤1%)的全精度精度。此外,我们还证明,使用精度降低的MAC单元所节省的面积可以使同一区域的加速器核心数量显著增加,从而显著提高了系统的整体性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值