Paper地址:https://arxiv.org/abs/1902.08153

GitHub地址 (PyTorch):https://github.com/zhutmost/lsq-net

基本量化设置

  • 计算结点伪量化:
  1. Weight跟Activation都采用Per-tensor量化;
  2. Scaling factor (Paper标记为Step size)是可学习参数;

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

  • 量化计算公式:

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

Step-size梯度求解

  • Loss关于step-size的梯度推导:

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

  1. 基于STE (Straight Through Estimate),直接pass round结点的梯度反传:

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

  • 与其他方法梯度函数的对比:
  1. QIL:https://arxiv.org/abs/1808.05779
  2. PACT:https://arxiv.org/abs/1805.06085

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

  • 梯度的scale:
  1. 当量化比特数增加时,step-size会变小,以确保更为精细的量化;而当量化比特数减少时,step-size会变大。为了让step-size的参数更新,能够适应量化比特数的调整,需要将step-size的梯度乘以一个scale系数,例如针对weight:

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

量化训练

  • 伪量化训练时,从预训练模型加载FP32参数,学习率按余弦曲线衰减。

实验结果

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

 

相关文章: