基於可訓練Step-size的低比特量化——LSQ: Learned Step-size Quantization

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梯度求解

  • Loss關於step-size的梯度推導:

  1. 基於STE (Straight Through Estimate),直接pass round結點的梯度反傳:

  • 與其他方法梯度函數的對比:
  1. QIL:https://arxiv.org/abs/1808.05779
  2. PACT:https://arxiv.org/abs/1805.06085
  3. 相比較而言,LSQ無論在不同Bin之間的Transition位置、還是量化範圍的Clip位置,都有較明顯的梯度數值,因而更有利Step-size的參數更新:

  • 梯度的scale:
  1. 當量化比特數增加時,step-size會變小,以確保更爲精細的量化;而當量化比特數減少時,step-size會變大。爲了讓step-size的參數更新,能夠適應量化比特數的調整,需要將step-size的梯度乘以一個scale係數,例如針對weight:

量化訓練

  • 僞量化訓練時,從預訓練模型加載FP32參數,學習率按餘弦曲線衰減。

實驗結果

 

發佈了29 篇原創文章 · 獲贊 87 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章