CVPR 2020: 8比特數值也能訓練模型?商湯提出訓練加速新算法
由于卷積神經網絡的梯度具有如上四個特點,所以當我們直接在訓練中對梯度進行量化時,訓練精度非常容易出現突發的崩潰情況。下圖展示了在CIFAR-10數據集上進行實驗的精度和損失函數變化曲線,以MobileNetv2在CIFAR-10數據集上訓練為例,其訓練的精度曲線和loss曲線如下圖,從圖中可以發現INT8訓練的loss在訓練初期正常下降,但隨后迅速上升,對應的精度也不斷下降。

是什么影響了收斂穩定性
根據以上的觀察和初步啟發,我們希望通過理論的分析和推導,對量化訓練的收斂穩定性進行建模。根據Adam等相關論文的經驗和優化理論中的Regret analysis,不失一般性地定義R(T)為

其中f是損失函數,t是訓練輪數,T是訓練總輪數,

為t輪的權重,

是最優權重。
基于以下兩個樸素的假設:

通過推導證明可以得到:

其中

為

輪的學習率,

為權重的維度,

為

輪的量化誤差,

是

輪的量化后梯度。
為了確保網絡能夠穩定收斂,

在T變大時需要能夠達到足夠小。通過上式可以發現,在T趨于無窮大時,第(1)項可以忽略不計,主要考慮減小第(2)項和第(3)項。
我們發現,第(2)項與量化誤差正相關,第(3)項與學習率以及量化后的梯度大小有關。
因此我們不難得到兩個直觀的提升訓練收斂穩定性的策略:通過調節量化函數中的截斷值減小量化誤差通過適當調低學習率來提高量化訓練精度
主要方法
依據以上分析,我們針對量化誤差和學習率提出了基于方向自適應的梯度截斷和誤差敏感的學習率調節兩個方法來解決量化訓練帶來的精度損失問題。同時,為了減少量化操作帶來的額外開銷,本文還提出了周期更新和量化卷積融合的方法。

1. 基于方向自適應的梯度截斷:調整截斷值,讓梯度方向保持正確。
為了最小化量化誤差,之前有很多研究提出優化截斷值的方法,其中就有研究提出通過假設數據分布直接求解最優截斷值。但是已有的研究都針對于權重量化的截斷值進行優化。就如本文觀察所顯示,梯度的分布特征與權重區別較大,無法直接使用。本文通過KS檢驗發現梯度的分布并不符合常見的高斯分布、拉普拉斯分布和學生t分布,因此很難通過假設梯度分布來直接求解最優的截斷值。

基于以上的分析,本文采用梯度下降的方法來自適應地學習最優截斷值,常見的目標函數有均方誤差函數,但是由于梯度的分布特征,均方誤差的大小會受到梯度的影響,影響優化過程;同時對于梯度來說,均方誤差并不能很好地體現梯度的量化誤差對于優化過程的影響,因此本文提出使用能夠體現梯度方向的余弦距離來衡量梯度的量化誤差,并以余弦距離為目標函數來優化求解最優截斷值。余弦距離定義如下:

其中,

是梯度,

是量化后的梯度。
2. 誤差敏感的學習率調節:在錯誤的方向上盡量少更新。
根據上述的理論分析,降低學習率能夠有助于模型量化訓練的收斂。針對學習率的調整,本文提出誤差敏感的學習率調節方法,使用學習率系數對原學習率進行調整,學習率系數與余弦距離

負相關,學習率系數

定義如下:

其中

和

是超參數,用于控制衰減程度和調節下界。
3. 周期更新:降低由于統計而帶來的額外計算耗時
由于量化操作需要的統計數據范圍和計算截斷值等操作十分耗時,為了減少這些操作的時間開銷,本文采用周期更新的方式,周期性地統計數據范圍和計算截斷值。通過周期更新的方法能夠有效地提高減少因量化引入的額外時間開銷。下表為ResNet50在ImageNet數據集上不同周期的單次訓練時間統計表。

4. 量化卷積融合:減少訪存次數、節省cuda kernel launch次數
通過將量化和反量化操作融合入卷積計算的CUDA核函數里,可以減少一次數據的訪存,有效地減少量化和反量化操作的時間開銷。

請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













