模型量化小结

目前,个人主要将当前模型量化的论文分为四个方向:

  1. 2/3 bit的模型计算
  2. 量化损失原理分析
  3. 增量量化
  4. 量化Tricks

1/2 bit的模型计算

  该方向,试图使用极低bit位的计算,使得原来加减乘除的计算变为简单的位加减运算,从而解放硬件上的需求。但由于其精度仍与float运算有一定距离(部分方法的论文未体现大差距,但都在很小的模型或者在冗余度极高的论文上进行试验,本人也未进一步验证),故该方向主要是为了总结思想。
  其主要代表有:

  1. SYQ:将 conv 层的量化目光放在了元素层级上,而 fc 层的量化仍在 layer 级。(元素级:每层的卷积核大小为 K * K * Cin * Cout,在这之前,都是一层提取一个量纲,在2-3元模型上就是 α \alpha α,而SYQ提取 K * K个量纲,每个量纲统计的是 Cin * Cout)
  2. HORQ(High-Order-Residual-Quantization):就是从残差上再拟合一个二元矩阵,一层通过两次二元矩阵的运算,达到进一步拟合计算效果的功能;

量化损失原理分析

  该方向,主要是考虑了量化过程中,retrained过程中的困难,以及量化输入(activation)时所遇到的大量化误差的分析,从原理上分析激活函数等部件;
  其主要代表有:

  1. PACT(PArameterized Clipping Activation):训练多一个参数 α \alpha α ,给激活值一个截断,大概就是 Relu6 —> Relu α \alpha α
  2. HWGQ(Half-wave Gaussian Quantization):使用Relu6以及实验稀疏激活值,以及提出一个观点: 最大值池化操作应该在BN层之前;

增量量化

  就是一次性量化所有权重,使得模型的retrain操作(想要恢复精度的retrain)变得困难,所以提出了一步步增加量化的比重的观点;
  其主要代表有:

  1. INQ:分组量化,将权重weight分成几个小组,其认为大值较为重要,先量化大值的权重;
  2. MLQ:多层次量化,multi-layer Quantization,其主要是增加了一个逐层量化的思想:一次量化一层,下面retrain恢复精度的权重慢些量化,且减轻量化难度;

量化Tricks

  一些量化的tricks,主要是因为需要量化激活值时,会存在量化权重与量化激活值耦合的问题;
  其主要代表有:

  1. TSQ:Two-Step Quantization,先量化激活值,再量化权重;量化权重时,使用最小二乘法量化;量化激活值时,使用等效替换,从而达到解耦的效果;最后通过EM算法的思路,交替量化权重和激活值;
  2. TS-PQ-Guide:TS—Two-step、PQ—Progressive Quantization、Guide—Guide training with a full-precision network,教师系统;

限制activation量化的损失,主要有两种手段:1. Relu截断,引导其不上涨,最终由一个较为合理的范围之后再量化;2. 在量化时,使用截断,如人工设置或者使用KL散度进行度量;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值