论文链接

摘要

我们提出了可加性2的N次幂(APoT)量化,这是一种有效的非均匀量化方案,用于神经网络中权重和激活的钟形和长尾分布。将所有量化水平约束为2的幂之和,具有较高的计算效率,与权值分布匹配良好。应用一个简单的裁剪函数重新参数化,生成一个定义更好的梯度来学习裁剪阈值。此外,还提出了将权值归一化的方法,以细化权值的分布,使训练更加稳定和一致。实验结果表明,我们提出的方法优于最先进的方法,甚至与全精度模型竞争,证明了我们提出的APoT量化的有效性。例如,我们在ImageNet上的4位量化ResNet-50在没有附加功能的情况下达到了76.6%的前1精度;同时,与统一量化的模型相比,我们的模型降低了22%的计算成本。

1.引言

如何设计量化水平,同时考虑计算效率和权重的分布?大多数现有的量化方法(Caietal.,gan.,2017;Gong等人,2019)使用统一量化,尽管非统一量化通常可以实现更好的量化性能。原因是针对统一量化级别的投影对硬件更加友好(Zhouetal.,2016)。然而,实证研究(Hanetal.,2015)表明,DNN层中的权重遵循钟形和长尾分布,而不是均匀分布(如右图所示)。换句话说,相当比例的权重集中在平均值(峰值面积)周围;还有一些权重具有相对较高的幅度,超出了量化范围(称为异常值)。这种分布也存在于激活过程中(Miyashitaetal.,2016)。第二个矛盾是:考虑到权重的钟形分布,我们可以很好地为均值分配更高的分辨率(即更小的量化区间);然而,这种非均匀的量化水平会引入较高的计算开销。2的次幂量化水平(Miyashita等人,2016;Zhou等人,2017),因为其通过硬件上的移位操作实现的廉价乘法,以及在平均值附近的超高分辨率。然而,当位宽增加时,普通的两次幂的量化方法只增加了均值附近的分辨率,而完全忽略了其他区域。因此,它在均值附近的一个小范围内分配了异常的量化水平。为此,我们提出了可加性二的次幂(APoT)量化来解决这两个矛盾,我们的贡献可以列出如下:

1.我们介绍了对dnn的权值和激活的APoT量化方案。APoT是一种非均匀量化方案,其量化水平是几个PoT项的和,能够很好地适应权值的钟形分布。在一般硬件和特定硬件上,与APoT量化相比,APoT量化具有近似2×的乘法速度。
2.我们提出了一个重参数化裁剪函数(RCF),它可以计算一个更精确的剪切阈值梯度,从而促进剪切阈值的优化。我们还引入了神经网络量化的权值归一化。正向传递中的归一化权值在剪切和投影方面更加稳定和一致。
3.实验结果表明,该方法的性能优于最先进的方法,甚至具有全精度实现的竞争力,具有更高的计算效率。具体来说,我们在ImageNet上的4位量化ResNet-50实现了76.6%的Top-1和93.1%的Top-5精度。与均匀量化相比,该方法可以降低22%的计算成本,证明了该算法的硬件友好性。

2.方法

2.2. 2的次幂加法

为了解决非均匀分辨率和硬件效率之间的矛盾,二次幂(PoT)量化(Miyashita等人,2016;Zhou等人,2017)通过将量化水平约束为二次幂或零,即,

显然,作为一种非均匀量化器,PoT由于其指数特性,对权值更大的值范围具有更高的分辨率。此外,一个2x和另一个操作数r之间的乘法可以通过位移来实现,而不是庞大的数字乘数,即,
然而,我们发现PoT量化并没有从更多的比特中获益。假设α为1,如式(3)所示,当我们将位宽从b增加到b+1时,间隔将被分割成2b−1−1子间隔,而所有其他间隔保持不变。换句话说,通过增加位宽,只有[−2−2(b−1)+1,2−2(b−1)+1的分辨率才会增加。我们将这种现象称为PoT量化的刚性分辨率。以Qp(1,5)为例,两个最小的阳性水平分别是2−15和2−14,其粒度过细。相比之下,两个最大的水平是2−1和20,它们的间隔大到足以在[2−1,20]之间产生高投影误差,例如,0.75。刚性分辨率如图2(b).所示当我们从3位改变到4位时,所有新的量化级别都集中在0附近,因此不能有效地提高模型的表达性。

为了解决刚性分辨率问题,我们提出了2次幂累加的(APoT)量化。不失一般性,在本节中,为了简单起见,我们只考虑无符号数2。在APoT量化中,每个级都是n个PoT项的和,如下图所示,
其中γ是一个尺度系数,以确保Qa中的最大级别是 α。k被称为基位宽,即每个加项的位宽,n是加项的个数。当位宽b和基位宽k时,n可以用n=b/k计算。总共有2kn的=2b等级。APoT量化中的可加性项的数量可以随着位宽b的增加而增加,这为非均匀能级提供了更高的分辨率。
我们以b=4和k=2为例来说明APoT如何解决刚性分辨率问题。对于这个例子,我们有p0∈{0,20,2−2,2−4},p1∈{0,2−1,2−3,2−5},γ=2α/3,和Qa(α,kn)={γ×(p0+p1)},用于p0和p1的所有(2b=16)组合。首先,我们可以看到Qa(1,4)中最小的正量化水平是2−4/3。与原始的PoT水平相比,APoT为中心区域谨慎地分配量化水平。其次,APoT在20到2−1之间产生3个新的量化水平,以适当地提高分辨率。在图2中,第二行比较了使用4位作为范围[0,1]的3种量化方法。APoT量化具有合理的量化水平分布,在峰值区域(接近0),比普通的PoT量化(接近1)有更高的分辨率。

与其他量化方案的关系

一方面,均匀量化中使用的定点数表示是APoT的一种特情况。当方程(5)中的k=1时,量化水平是b PoT项的和或0。在定点表示中,每个位表示附加项的一个特定选择。另一方面,当k=b时,只有一个PoT项,Qa(α,b)变成Qp(α,b),即PoT量化。我们可以得出结论,当k减小时,APoT水平被分解为更多的PoT项,并且水平的分布变得更加均匀。我们的实验使用了k=2,这是在均匀情况(k=1)和单纯的PoT情况(k=b)之间的中间选择。

计算

定点数的乘法可以通过移动乘数(即激活乘数)和加部分乘积来实现。然后在公式(5)中表示乘数(权重)中相加的PoT项的数量,并控制计算速度。由于n=b/k,减少b或增加k都可以加速乘法。与均匀量化(k=1)相比,我们的方法(k=2)在乘法方面大约快2×。对于全精度α,它是一层中所有权值的系数,在乘加运算完成后只能乘一次。图3显示了硬件加速器,权重缓冲区将k位作为PoT项,并移位添加激活。

泛化到2n+1位

当k=2时,APoT量化只能利用2n位宽度进行量化。为了处理2n个+1位量化,我们选择添加n个+1个PoT项,其中之一仅包含2个级别。该公式是由

2.3重新参数化的剪切功能

除了投影运算外,剪切运算[W,α]对量化也很重要。α是一个决定量化层中权值范围的阈值。调整剪切阈值α是一个关键的挑战,因为权重的长尾分布。特别是,如果α太大(例如,W的最大绝对值),Q(α,b)会有一个很宽的范围,那么由于中心区域的权重分辨率不足而导致较大的误差;如果α太小,更多的异常值将被粗略地剪掉。考虑到权重的分布可能是复杂的,并且不同的层和训练步骤也不同,因此对所有层的静态剪切阈值α都不是最优的。
为了在训练过程中通过SGD联合优化剪切阈值α和权值,Choi等人(2018b)应用直通式估计器(Ste)(Bengio等人,2013)对投影操作进行反向传播。根据Ste,其中α范围外的权重不能对梯度有贡献,从而导致不准确的梯度近似。为了为剪切阈值提供一个细化的梯度,我们设计了一个重参数化的剪切函数(RCF)为
RCF没有直接将它们剪切到[−α,α],而是输出一个恒定的剪切范围,并在投影后重新缩放权值,这在数学上相当于正向时的方程(1)。在反向传播中,采用Ste进行投影操作,计算α的梯度

梯度的详细推导见附录a。与正常的剪切函数相比,RCF为优化提供了更精确的梯度信号,因为权重(|W|≤α)和(|W|>α)内的范围都可以导致剪切阈值的梯度。特别是,异常值负责剪切,而[−α,α]中的权值负责投影。因此,α的更新同时考虑了剪切和投影,并试图在它们之间找到平衡。在实验中,我们观察到,当减少位宽以保证足够的分辨率时,剪切阈值将普遍减小,这进一步验证了梯度在RCF中的有效性。

2.4重量归一化

在实践中,我们发现学习权重的α是相当困难的,因为权重的分布非常陡峭,并且在训练过程中变化。因此,联合训练剪切阈值和权值参数难以收敛。受批处理归一化(BN)(IOffe&Szegedy,2015)在激活量化中的关键作用(Caietal.,2017)的启发,我们提出了权值归一化(WN)来细化具有零均值和单位方差的权值分布,
其中εεε是数值稳定性的一个小数字(通常为10−5),I表示一层中权重的数量。请注意,权值的量化是在这个归一化之后立即应用的。
归一化对于为剪切和投影函数提供相对一致和稳定的输入分布非常重要,以便在训练期间对不同层和迭代上的α进行更平滑的优化。此外,使权值均值为零也可以有利于量化水平的对称设计。
在这里,我们在CIFAR10上进行了一个ResNet-20的案例研究,以说明权重的归一化如何帮助量化。对于ResNet-18中的某一层(在某个训练步骤中),我们首先确定权值,让α从0转到最大|W|,绘制裁剪比的曲线(即裁剪权值的比例)。如图4a所示,经过量化后,剪切率的变化更加平稳。因此,α的优化将明显更滑。此外,归一化也使权重的分布在训练迭代中更加一致。我们固定了α的值,并在图4b中可视化了训练迭代中的剪切比率。归一化后,相同的α会产生几乎相同的剪切率,这提高了α优化目标的一致性。更多的实验分析证明了权重归一化的有效性可以在附录B中找到。

2.5训练和部署

3.相关工作

非均匀量化

提出了几种处理权值非均匀分布的方法。LQ-Nets(Zhangetal.,2018)基于量化误差最小化(QEM)算法学习量化水平。蒸馏法(Polinoetal.,2018)直接优化量化水平,以最小化反映其教师网络行为的任务损失。这些方法使用有限的浮点数来量化权值(和激活),与线性量化相比,它带来了额外的计算开销。对数量化器(Zhouetal.,2017;宫城田等人,2016)利用2次幂值,通过移位操作加速计算;然而,它们存在刚性分辨率问题。

联合培训

许多工作已经探索了同时优化量化参数(如α)和权重参数。Zhu等人(2016)分别学习正尺度系数和负标度系数。LQ-Nets联合训练这些参数,以最小化量化误差。QIL(Jung等人,2019年)引入了一个可学习的转换器来改变量化间隔,并根据任务损失来优化它们。PACT(Choietal.,2018b)参数化了激活过程中的剪切阈值,并通过梯度下降对其进行优化。然而,在PACT中,α的梯度并不准确,它只包括了异常值的贡献,而忽略了其他权重的贡献。

权重规一化

以往关于权重归一化的工作主要集中在解决批处理规范的局限性上(Ioffe&Szegedy,2015)。萨利曼斯和Kingma(2016);Hoffer等人(2018)将方向与幅度解耦,以加速训练程序。权重标准化(Qiaoetal.,2019)将正向传递期间的权重标准化为零均值和单位方差。然而,研究神经网络量化的权值归一化的文献有限。(Zhuetal.,2016)使用特征尺度,通过除以最大绝对值来对权重进行归一化。基于权值归一化的量化(Cai&Li,2019)也使用了这种特征的缩放,并推导出梯度来消除权值张量中的异常值。

4实验

4.1 IMAGENET结果

4.2 CIFAR10结果

4.3消融研究


该算法由三种技术组成:拟合钟形分布的算法量化水平,RCF学习裁剪阈值,RCF避免训练过程中权重分布的扰动。在本节中,我们将对这三种技术进行消融术研究。我们使用Lloyd算法(Caietal.,2017)比较了APoT量化器、原始PoT量化器、均匀量化器和非均匀量化器来量化权重。我们要么应用RCF来学习最优裁剪范围,要么不剪辑任何权重(即α=max|W|)。权重标准化也被采用或丢弃,以证明这些技术的有效性。
表3总结了使用不同技术的ResNet-18的结果。使用Lloyd的量化器获得了最高的精度,但不规则的非均匀量化权值不能利用定点算法来加速推理时间。APoT量化关注权重的分布,与Lloyd相比,5位精度相同,3位量化精度仅降低0.2%,在任务性能和硬件性能之间有更好的权衡。我们还观察到,普通的PoT量化具有刚性分辨率,并且在5位模型中精度最低。
剪切范围在量化中也很重要,表3中的比较表明,适当的剪切范围有助于提高网络的鲁棒性。特别是当网络被量化到3位时,由于量化间隔的增加,精度会显著下降。应用RCF来学习最佳的剪切范围,最多可提高1.6%的准确率。正如我们前面提到的,权值的归一化对于学习剪切范围很重要,如果应用没有WN的RCF,网络就会发散。关于训练期间体重标准化的更多细节,我们请参考附录B。

5. 总结

在本文中,我们引入了二加幂(APoT)量化算法来量化神经网络的权值和激活,该算法通常呈钟形长尾分布。APoT的每一个量化水平都是一组两项幂的和,与统一量化相比,乘法速度大约提高了2倍。量化水平与现有的量化方案相比,量化水平的分布与权重和激活水平的分布更匹配。此外,我们提出对裁剪函数进行重新参数化,并对权值进行归一化,以得到更稳定、定义更好的梯度,以优化裁剪阈值。与统一量化或PoT量化相比,我们在ImageNet和CIFAR10数据集上达到了最先进的精度。

APoT ADDITIVE POWERS-OF-TWO QUANTIZATION: AN EFFICIENT NON-UNIFORM DISCRETIZATION FOR NEURAL NETWORK相关推荐

  1. [论文阅读] EIE: Efficient Inference Engine on Compressed Neural Network

    这是收录于ISCA16(International Symposium on Computer Architecture). 其是Deep Compression以及DSD的系列篇,其在Deep Co ...

  2. 模型量化论文阅读#1----综述:A Survey of Quantization Methods for Efficient Neural Network Inference

    1. 量化的基本概念 A. 问题设置和符号表示 假设网络有L层,其每层的参数表示为:{W1,W2,-,WL}\left\{W_{1}, W_{2}, \ldots, W_{L}\right\}{W1​ ...

  3. A Survey of Quantization Methods for Efficient Neural Network Inference---2021年

    A Survey of Quantization Methods for Efficient Neural Network Inference--2021年 Abstract I. INTRODUCT ...

  4. Central Similarity Quantization for Efficient Image and Video Retrieval

    哈希图像检索文章学习笔记 Central Similarity Quantization for Efficient Image and Video Retrieval 摘要:现在哈希算法通常只是从成 ...

  5. 【读点论文】FBNet:Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search可微分

    FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search Abstrac ...

  6. nextvlad:一个用于大规模视频分类的聚集帧级特征的有效神经网络 NeXtVLAD: An Efficient Neural Network toAggregate Frame-level Fea

    nextvlad:一个用于大规模视频分类的聚集帧级特征的有效神经网络 NeXtVLAD: An Efficient Neural Network toAggregate Frame-level Fea ...

  7. 论文阅读笔记:ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections

    提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 介绍 相关工作 神经投影网络(Neural Projection Networks) Pro ...

  8. 【1】谷歌2021模型量化白皮书《A White Paper on Neural Network Quantization》

    2021 Google模型量化白皮书 摘要 引言 模型量化的理论基础 硬件背景 均匀仿射量化 对称均匀量化 2的幂次方量化 量化粒度 量化模拟 Batch normalization folding ...

  9. 论文 | An Efficient Convolutional Neural Network for Coronary Heart Disease Prediction

    文章目录 论文信息 ABSTRACT 问题 解决 方法 效果 1. Introduction 2. Data Processing 3. Proposed Architecture 3.1 LASSO ...

最新文章

  1. C语言程序设计 细节总结(链表)
  2. linux环境变量堆栈,情景linux--如何摆脱深路径的频繁切换烦恼?
  3. boost::math::tools::cohen_acceleration用法的测试程序
  4. PHP(四)——性能优化
  5. LearnETutorial 中文系列教程【翻译完成】
  6. C++语言运算符重载
  7. Cocos2d-x建工程时避免copy文件夹和库
  8. 50行代码实现3D模拟真实撒金币动效
  9. imageJ 如何下载plugin_如何给微服务架构的项目做验收测试?
  10. 利用SQL语句查询数据库中具体某个字段的重复行
  11. 趣学Python之弹球游戏第三阶段--上下反弹
  12. 空号检测/空号检测接口/号码状态查询/号码状态查询接口/号码状态查询api/精准实时版/免费试用
  13. 利用matlab函数创建数组
  14. Bar Chart Race」动态可视化
  15. 怎样做终端安全防御?
  16. 什么叫股指期货,股指期货交易流程是什么
  17. atlsd.lib 和 atls.lib冲突
  18. 阶段小练—篮球比赛计分器
  19. 互联网平台如何快速搭建内容安全审核系统?
  20. STL容器底层实现数据结构

热门文章

  1. 【每日新闻】3分钟了解5G新动向!
  2. 文档翻译器怎么用?实用的语音翻译文字的方法介绍
  3. OpenLayers 加载天地图
  4. 【AMD显卡在WIndow10/11部署带GPU支持的深度学习环境(Pytorch-DirectML篇)】
  5. VC++实现GPS全球定位系统定位数据的提取
  6. bandicom录屏音画不同步_bendicam新人求助!音画不同步!
  7. 14-Springboot默认数据源配置HikariDataSource
  8. python 定时发微信,python 操作微信定时发信息
  9. 路由器中继, 网络时常中断,问题原因及解决方案
  10. 真正有效的竞品分析怎么做