量化论文笔记

1. EasyQuant: Post-training Quantization via Scale Optimization

        本文通过优化缩放参数(scale)提出了一种更为简单高效的后量化方法,称为EasyQuant(EQ),可以达到与训练中量化相近的精度。

        EasyQuant优化了每一层权重和激活值的量化因子的取值,使得卷积后达到更高的量化精度;随后将权重和激活值的位宽降至7bit,中间值以int16形式存储,来加速推理。实验结果显示在不同计算机视觉任务中EQ比TensorRT效果更佳,7bit位宽后量化达到了接近int8的精度。

        本文从优化S的角度出发,很简单就是使得量化前后的值更加相似,量化+反量化后的浮点数与原本的浮点数越相似,证明量化的误差越小。

                Q为量化后的整型int8,而O为反量化后的浮点型。

                 O尖为伪量化后的输出,O为正常浮点输出。

         因此,最大化两者的相似性即可。

         同时,本文还采取贪心算法,逐层逐步量化优化,缩减优化搜索空间。量化的基本流程

         本文的scale优化步骤分两步走:

(1)首先固定激活值的缩放因子Sa,调整权重的缩放因子Sw;

(2)随后固定Sw优化Sa。
Sw和Sa交替优化直至cosing相似度收敛或者达到预设的值。

最开始Sw和Sa分别初始化为权重和激活的最大值;随后将搜索空间分为n段进行搜索[aSl,bSl]

 

        具体还有什么量化到7bit的好处之类的,不太懂,没仔细看。

2 .Data-Free Quantization Through Weight Equalization and Bias Correction

        文章核心点:Data-Free, Weight Equalization, Bias Correction

跨层均衡:per channel一般不需要,主要就是针对于per_tensor,像深度可分离卷积,这种每个通道是分开计算的,权重的分布差异性很大,而per_tensor这种,整层一个scale的,就会产生非常大的损失(谷歌白皮书),为了解决这个问题。

        详情关注AI小男孩,量化高阶。 这里把公式列上

  Data free quantization(DFQ)Through Weight Equalization and Bias Correction 论文解析 - 知乎 (zhihu.com)参考知乎解析

跨层均衡会带来一个问题,即在si<1的时候,会导致b那层的bias变大,从而可能导致激活变大,对量化产生负面影响。为了避免不同channel的激活值范围差异过大,文章采取策略是:吸收高偏差到下一层。主要也是利用Relu的特性。

Bias Correction:量化偏差修正

涨点杀器:

        就是说量化会带来整体偏差,为了修正这个整体偏差,我们可以采取一些数据,分别推理一次量化后的模型和全精度的模型。

 

3. Up or Down? Adaptive Rounding for Post-Training Quantization

        本文就是针对于round函数,一般情况下我们是采用四舍五入的做法,作者尝试了,全部舍去和全部进一步的方法,均不如四舍五入,但是如果随机舍入就会出现比四舍五入好的情况。

         因此想要探究round对于损失函数的影响

         一脸懵逼,其实是用了泰勒展开来逼近,这里可以参考AI小男孩公众号的推导

         具体就是将损失函数在W处展开,2阶展开就够用了。

带入到公式中

         也就是g是一阶导数,h是二阶导数。当函数收敛,就意味着一阶导数一定趋近于0.故只用考虑H这一项。

        所以想要将这一项最小,可以分别小这三项,对于前两项来说,一定是四舍五入最好的,因为这样的误差最低嘛,但是对后一项就不一定了,符号不同的话是负数,就会更小,因此不一定是四舍五入为最优。

        现在已经从公式上证明了嗯对,不一定是四舍五入最好,那该如何优化呢?

        本文将该优化问题定义为一个二元无约束的优化问题 (QUBO,Quadratic Unconstrained Binary Optimization)。因为对于w的取值,只能是向上取整或向下取整两种。

         由于深度神经网络的结构通常很复杂,为了避免问题复杂化,论文就限制这个优化函数只针对网络中的每一层单独进行。

        后面的推导有一丢丢复杂,对于我这个数学渣渣就有点困难了,谁爱看谁看吧()

最终得出就是优化结果

         但问题是w是离散的,不好优化,那就把它松驰成连续空间

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值