訂閱
糾錯
加入自媒體

CVPR 2020: 8比特數值也能訓練模型?商湯提出訓練加速新算法

2020-04-30 09:59
將門創投
關注

由于卷積神經網絡的梯度具有如上四個特點,所以當我們直接在訓練中對梯度進行量化時,訓練精度非常容易出現突發的崩潰情況。下圖展示了在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核函數里,可以減少一次數據的訪存,有效地減少量化和反量化操作的時間開銷。

<上一頁  1  2  3  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

    人工智能 獵頭職位 更多
    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號