訂閱
糾錯(cuò)
加入自媒體

CVPR 2020: 8比特?cái)?shù)值也能訓(xùn)練模型?商湯提出訓(xùn)練加速新算法

由于卷積神經(jīng)網(wǎng)絡(luò)的梯度具有如上四個(gè)特點(diǎn),所以當(dāng)我們直接在訓(xùn)練中對梯度進(jìn)行量化時(shí),訓(xùn)練精度非常容易出現(xiàn)突發(fā)的崩潰情況。下圖展示了在CIFAR-10數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)的精度和損失函數(shù)變化曲線,以MobileNetv2在CIFAR-10數(shù)據(jù)集上訓(xùn)練為例,其訓(xùn)練的精度曲線和loss曲線如下圖,從圖中可以發(fā)現(xiàn)INT8訓(xùn)練的loss在訓(xùn)練初期正常下降,但隨后迅速上升,對應(yīng)的精度也不斷下降。

是什么影響了收斂穩(wěn)定性

根據(jù)以上的觀察和初步啟發(fā),我們希望通過理論的分析和推導(dǎo),對量化訓(xùn)練的收斂穩(wěn)定性進(jìn)行建模。根據(jù)Adam等相關(guān)論文的經(jīng)驗(yàn)和優(yōu)化理論中的Regret analysis,不失一般性地定義R(T)為

其中f是損失函數(shù),t是訓(xùn)練輪數(shù),T是訓(xùn)練總輪數(shù),

為t輪的權(quán)重,

是最優(yōu)權(quán)重。

基于以下兩個(gè)樸素的假設(shè):

通過推導(dǎo)證明可以得到:

其中

輪的學(xué)習(xí)率,

為權(quán)重的維度,

輪的量化誤差,

輪的量化后梯度。

為了確保網(wǎng)絡(luò)能夠穩(wěn)定收斂,

在T變大時(shí)需要能夠達(dá)到足夠小。通過上式可以發(fā)現(xiàn),在T趨于無窮大時(shí),第(1)項(xiàng)可以忽略不計(jì),主要考慮減小第(2)項(xiàng)和第(3)項(xiàng)。

我們發(fā)現(xiàn),第(2)項(xiàng)與量化誤差正相關(guān),第(3)項(xiàng)與學(xué)習(xí)率以及量化后的梯度大小有關(guān)。

因此我們不難得到兩個(gè)直觀的提升訓(xùn)練收斂穩(wěn)定性的策略:通過調(diào)節(jié)量化函數(shù)中的截?cái)嘀禍p小量化誤差通過適當(dāng)調(diào)低學(xué)習(xí)率來提高量化訓(xùn)練精度

主要方法

依據(jù)以上分析,我們針對量化誤差和學(xué)習(xí)率提出了基于方向自適應(yīng)的梯度截?cái)嗪驼`差敏感的學(xué)習(xí)率調(diào)節(jié)兩個(gè)方法來解決量化訓(xùn)練帶來的精度損失問題。同時(shí),為了減少量化操作帶來的額外開銷,本文還提出了周期更新和量化卷積融合的方法。

1. 基于方向自適應(yīng)的梯度截?cái)啵赫{(diào)整截?cái)嘀,讓梯度方向保持正確。

為了最小化量化誤差,之前有很多研究提出優(yōu)化截?cái)嘀档姆椒,其中就有研究提出通過假設(shè)數(shù)據(jù)分布直接求解最優(yōu)截?cái)嘀。但是已有的研究都針對于?quán)重量化的截?cái)嘀颠M(jìn)行優(yōu)化。就如本文觀察所顯示,梯度的分布特征與權(quán)重區(qū)別較大,無法直接使用。本文通過KS檢驗(yàn)發(fā)現(xiàn)梯度的分布并不符合常見的高斯分布、拉普拉斯分布和學(xué)生t分布,因此很難通過假設(shè)梯度分布來直接求解最優(yōu)的截?cái)嘀怠?/p>

基于以上的分析,本文采用梯度下降的方法來自適應(yīng)地學(xué)習(xí)最優(yōu)截?cái)嘀,常見的目?biāo)函數(shù)有均方誤差函數(shù),但是由于梯度的分布特征,均方誤差的大小會(huì)受到梯度的影響,影響優(yōu)化過程;同時(shí)對于梯度來說,均方誤差并不能很好地體現(xiàn)梯度的量化誤差對于優(yōu)化過程的影響,因此本文提出使用能夠體現(xiàn)梯度方向的余弦距離來衡量梯度的量化誤差,并以余弦距離為目標(biāo)函數(shù)來優(yōu)化求解最優(yōu)截?cái)嘀。余弦距離定義如下:

其中,

是梯度,

是量化后的梯度。

2. 誤差敏感的學(xué)習(xí)率調(diào)節(jié):在錯(cuò)誤的方向上盡量少更新。

根據(jù)上述的理論分析,降低學(xué)習(xí)率能夠有助于模型量化訓(xùn)練的收斂。針對學(xué)習(xí)率的調(diào)整,本文提出誤差敏感的學(xué)習(xí)率調(diào)節(jié)方法,使用學(xué)習(xí)率系數(shù)對原學(xué)習(xí)率進(jìn)行調(diào)整,學(xué)習(xí)率系數(shù)與余弦距離

負(fù)相關(guān),學(xué)習(xí)率系數(shù)

定義如下:

其中

是超參數(shù),用于控制衰減程度和調(diào)節(jié)下界。

3. 周期更新:降低由于統(tǒng)計(jì)而帶來的額外計(jì)算耗時(shí)

由于量化操作需要的統(tǒng)計(jì)數(shù)據(jù)范圍和計(jì)算截?cái)嘀档炔僮魇趾臅r(shí),為了減少這些操作的時(shí)間開銷,本文采用周期更新的方式,周期性地統(tǒng)計(jì)數(shù)據(jù)范圍和計(jì)算截?cái)嘀。通過周期更新的方法能夠有效地提高減少因量化引入的額外時(shí)間開銷。下表為ResNet50在ImageNet數(shù)據(jù)集上不同周期的單次訓(xùn)練時(shí)間統(tǒng)計(jì)表。

4. 量化卷積融合:減少訪存次數(shù)、節(jié)省cuda kernel launch次數(shù)

通過將量化和反量化操作融合入卷積計(jì)算的CUDA核函數(shù)里,可以減少一次數(shù)據(jù)的訪存,有效地減少量化和反量化操作的時(shí)間開銷。

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

發(fā)表評(píng)論

0條評(píng)論,0人參與

請輸入評(píng)論內(nèi)容...

請輸入評(píng)論/評(píng)論長度6~500個(gè)字

您提交的評(píng)論過于頻繁,請輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)