Paper Reading||PROFIT: A Novel Training Method for sub-4-bit MobileNet Models

论文(ECCV 2020): https://arxiv.org/abs/2008.04693

源码(Pytorch): https://github.com/EunhyeokPark/PROFIT

Motivation

  1. 如Fig 1 所示,作者发现在主流模型中,较笨重的模型(AlexNet、ResNet-18、ResNet-34、ResNet-50)在经过ultra low-bit量化后精度损失较少,但紧凑轻型网络(MobileNet-v1、MobileNet-v2)在经过量化后精度损失很严重。对于这个现象,引起了作者的思考。
  2. 作者发现在微调过程中,Weight量化后会使Activation的统计信息(statistics)发生变化,如mean和variance会发生变化。如何缓解Activation这样的变化称为值得思考的问题。
  3. 在当时(2020年)看来,已经有的量化方法只支持对称(symmetric)或非负(non-negative)分布,不适用于非对称分布。也就是说,需要创新出一种方法来支持非对称分布量化。
    在这里插入图片描述

Method

Proposal:Activation Instability Metric

  针对 Fig 1 的现象,作者猜测是“权重量化导致激活不确定性”造成的,于是先提出一个度量方法,Activation Instability induced by Weight Quantization(AIWQ):
在这里插入图片描述

  其中 t t t为当前的batch, p o t p^{t}_{o} pot为一个通道下的Activation原分布, q o t q^{t}_{o} qot为一个通道下的Weight量化后Activation的分布, D K L D_{KL} DKL求KL散度操作, E o t E^{t}_{o} Eot为对当前层所有的通道的结果求mean, D l D^{l} Dl为一个卷积层/全连接层的AIWQ度量结果。 D l D^{l} Dl越大,表明该层的Activation分布受Weight变动的影响越严重。需要注意的是,作者使用分布的mean和variance来简化KL散度计算过程。

  在Fig 2中,图底横坐标表示training的epoch轮数,图顶横坐标的 N l v N_{lv} Nlv表示量化电平数(如bit-width为8-bit时,有 N l v = 2 8 − 1 = 255 N_{lv}=2^{8}-1=255 Nlv=281=255)。需要注意的是作者此时使用了Progressive Quantization(训练时将bit-width逐渐减小到8-bit、5-bit、4-bit……)。而纵坐标中的AIWQ Distance、Running Mean、Running Variance来自于MobileNet-v3的第二个倒残差模块。实线表示Expansion层,虚线表示Depthwise层,细虚线表示Projection层。由Fig 2可得,随着 N l v N_{lv} Nlv的降低,AIWQ值呈增大趋势,而Accuracy、Running Mean、Running Variance也同步出现了震荡趋势。这表明作者提出的AIWQ度量还是比较合理的,且和Accuracy、Running Mean、Running Variance有相关性。

在这里插入图片描述

  接着作者试图解释Weight量化时如何影响到Activation的分布的。如Fig 3 (a)所示,在BP更新Weight时,有可能会使Weight迈过过渡点(虚线),即该Weight的离散化结果会发生改变。且bit-width越低,这种改变就越明显。Weight分布发生了改变,自然也就会导致Activation的结果发生改变。如图Fig 3 (b)所示,设有第i次迭代,那么当BP更新Weight后进入第i+1次迭代时,Activation的分布也发生了变化。

在这里插入图片描述

  如Fig 4所示,作者又进一步探究各个卷积层的“敏感”情况。可以发现在MobileNet-v3中,Depth-wise层的AIWQ度量值基本都保持在一个很高的水平,Reduction层的某几个层AIWQ度量值很高,而Expansion的AIWQ度量值除B0以外基本都很低。

在这里插入图片描述

Proposal:PROFIT

  鉴于AIWQ的分析,作者提出了自己的量化流程:PROgressive-Freezing Iterative Training (PROFIT),渐进迭代式地冻结最敏感的层的权值,以此消除波动源,使其余层收敛到更优点。具体伪代码如Algorithm 1 所示。

在这里插入图片描述
  Algorithm 1 可主要分为四个stage。第一个stage先进行全精度训练(from scratch),可附加进行Progressive Quantization。第二个stage就是在几个batch下得到各个层的AIWQ度量情况。第三个stage就是PROFIT的本体,也即分几次来依次冻结敏感层,并fine-tune其他层,如此迭代直到所有敏感层被冻结。最后的stage仅对BN层进行迭代更新,进一步稳固BN层的参数。

  作者认为该Proposal有效地消除了波动源,使得模型能进一步优化。

Proposal:DuQ

  对于Motivation 3,作者首先阐述了Non-negative Quantization和Symmetric Quantization的弊端。Non-negative Quantization就是非负量化,即只对[0, |u|]范围进行量化,在范围外的值都会被clip到0或|u|。Symmetric Quantization就是对称量化,即只对[-|u|, |u|]范围进行量化,在范围外的值都会被clip到-|u|或|u|。

在这里插入图片描述
  如Fig 5 (a)所示,橙色曲线表示H-swish,蓝色曲线表示ReLU。Fig 5 (b)展示的是H-swish函数的输出的分布。Fig 5 ©展示的是对H-swish输出进行Non-negative Quantization的情况,可以发现分布中红色部分数据完全被clipping掉了,浪费了重要信息。Fig 5 (d)展示的是对H-swish输出进行Symmetric Quantization的情况,可以发现有一些量化电平被浪费掉了(虚线的量化电平被浪费了),因为其附近没有数据。

  也就是说,Non-negative Quantization和Symmetric Quantization无法很好地量化H-swish的输出。

  接着作者又讨论了其他方法对于Activation量化的不足。如Fig 6 (a)(b)©所示,PACT、QIL、LSQ方法使用Non-negative Quantization,仅能处理带有ReLU函数的模型。

在这里插入图片描述
  于是作者基于QIL方法,改进出了自己的量化方法,Differentiable and Unified Quantization (DuQ):
在这里插入图片描述
在这里插入图片描述
  式中, a a a为斜率, b b b为截距, α \alpha α为量化尺度, β \beta β为量化零点, x ^ \hat{x} x^为变换映射结果, x ˉ \bar{x} xˉ为离散化结果。需要注意的是,作者用softplus函数来保证斜率和量化尺度的非负性。

Proposal:NP

  作者最后提出了一个硬件加速的trick。由于许多现有的硬件加速器只支持对称整数类型和非负整数类型,在H-swish非对称数据上发挥不出效能,于是作者提出Negative Padding (NP)思想来加速在硬件上具有非对称分布的量化网络。

在这里插入图片描述
  如Fig 7 (a) 所示,当H-swish的输出是带有负常量(粉色)的,那么只需要将负常量矩阵分离出来,事先offline计算出Conv结果,再加和到实际推理中去就可以实现加速。而offline计算中的Conv层若使用zero padding,就是使得Conv输出非常量(如Fig 7 (b)),于是该Conv层应使用negative padding来保证卷积后输出的是常数矩阵(如Fig 7 (c))。

Experiment

在这里插入图片描述
  Table 1展示的是作者在MobileNet-v1、MobileNet-v2、MobileNet-v3的ImageNet上自己做的实验,量化时用到了上述所提到的所有Proposal。“Full”表示全精度。“Full+”表示全精度的同时还使用了distillation (ResNet101作为teacher)和weight averaging algorithm。可见作者的8-bit、5-bit、4-bit表现还是比较好的。

在这里插入图片描述
  Table 2 展示的是作者和其他方法的比较。c表示per channel量化,l表示per layer量化,*表示PTQ量化。可见作者的方法表现还是不错的。

Ablation Study

在这里插入图片描述
  Table 3 展示的是作者的Proposal和trick在MobileNet-v3上的的消融实验。可见作者的Proposal确实起到了作用。

个人思考

  • DuQ的提出比较粗糙。作者也表明DuQ本质上就是QIL + Post transformation,但是个人觉得其实其他的方法也可以通过零点偏移来移动数据分布实现不对称分布的量化。而且Post transformation用到的量化尺度和量化零点是否是超参数,作者没有说明。还有为什么叫“Differentiable”?作者没有具体阐明可微的地方作用在何处。
  • Ablation Study为什么没有单独针对PROFIT(PF)方法的实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值