CVPR 2020: 8比特數(shù)值也能訓(xùn)練模型?商湯提出訓(xùn)練加速新算法
由于卷積神經(jīng)網(wǎng)絡(luò)的梯度具有如上四個特點,所以當(dāng)我們直接在訓(xùn)練中對梯度進行量化時,訓(xùn)練精度非常容易出現(xiàn)突發(fā)的崩潰情況。下圖展示了在CIFAR-10數(shù)據(jù)集上進行實驗的精度和損失函數(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ù)Adam等相關(guān)論文的經(jīng)驗和優(yōu)化理論中的Regret analysis,不失一般性地定義R(T)為
其中f是損失函數(shù),t是訓(xùn)練輪數(shù),T是訓(xùn)練總輪數(shù),
為t輪的權(quán)重,
是最優(yōu)權(quán)重。
基于以下兩個樸素的假設(shè):
通過推導(dǎo)證明可以得到:
其中
為
輪的學(xué)習(xí)率,
為權(quán)重的維度,
為
輪的量化誤差,
是
輪的量化后梯度。
為了確保網(wǎng)絡(luò)能夠穩(wěn)定收斂,
在T變大時需要能夠達到足夠小。通過上式可以發(fā)現(xiàn),在T趨于無窮大時,第(1)項可以忽略不計,主要考慮減小第(2)項和第(3)項。
我們發(fā)現(xiàn),第(2)項與量化誤差正相關(guān),第(3)項與學(xué)習(xí)率以及量化后的梯度大小有關(guān)。
因此我們不難得到兩個直觀的提升訓(xùn)練收斂穩(wěn)定性的策略:通過調(diào)節(jié)量化函數(shù)中的截斷值減小量化誤差通過適當(dāng)調(diào)低學(xué)習(xí)率來提高量化訓(xùn)練精度
主要方法
依據(jù)以上分析,我們針對量化誤差和學(xué)習(xí)率提出了基于方向自適應(yīng)的梯度截斷和誤差敏感的學(xué)習(xí)率調(diào)節(jié)兩個方法來解決量化訓(xùn)練帶來的精度損失問題。同時,為了減少量化操作帶來的額外開銷,本文還提出了周期更新和量化卷積融合的方法。
1. 基于方向自適應(yīng)的梯度截斷:調(diào)整截斷值,讓梯度方向保持正確。
為了最小化量化誤差,之前有很多研究提出優(yōu)化截斷值的方法,其中就有研究提出通過假設(shè)數(shù)據(jù)分布直接求解最優(yōu)截斷值。但是已有的研究都針對于權(quán)重量化的截斷值進行優(yōu)化。就如本文觀察所顯示,梯度的分布特征與權(quán)重區(qū)別較大,無法直接使用。本文通過KS檢驗發(fā)現(xiàn)梯度的分布并不符合常見的高斯分布、拉普拉斯分布和學(xué)生t分布,因此很難通過假設(shè)梯度分布來直接求解最優(yōu)的截斷值。
基于以上的分析,本文采用梯度下降的方法來自適應(yīng)地學(xué)習(xí)最優(yōu)截斷值,常見的目標(biāo)函數(shù)有均方誤差函數(shù),但是由于梯度的分布特征,均方誤差的大小會受到梯度的影響,影響優(yōu)化過程;同時對于梯度來說,均方誤差并不能很好地體現(xiàn)梯度的量化誤差對于優(yōu)化過程的影響,因此本文提出使用能夠體現(xiàn)梯度方向的余弦距離來衡量梯度的量化誤差,并以余弦距離為目標(biāo)函數(shù)來優(yōu)化求解最優(yōu)截斷值。余弦距離定義如下:
其中,
是梯度,
是量化后的梯度。
2. 誤差敏感的學(xué)習(xí)率調(diào)節(jié):在錯誤的方向上盡量少更新。
根據(jù)上述的理論分析,降低學(xué)習(xí)率能夠有助于模型量化訓(xùn)練的收斂。針對學(xué)習(xí)率的調(diào)整,本文提出誤差敏感的學(xué)習(xí)率調(diào)節(jié)方法,使用學(xué)習(xí)率系數(shù)對原學(xué)習(xí)率進行調(diào)整,學(xué)習(xí)率系數(shù)與余弦距離
負相關(guān),學(xué)習(xí)率系數(shù)
定義如下:
其中
和
是超參數(shù),用于控制衰減程度和調(diào)節(jié)下界。
3. 周期更新:降低由于統(tǒng)計而帶來的額外計算耗時
由于量化操作需要的統(tǒng)計數(shù)據(jù)范圍和計算截斷值等操作十分耗時,為了減少這些操作的時間開銷,本文采用周期更新的方式,周期性地統(tǒng)計數(shù)據(jù)范圍和計算截斷值。通過周期更新的方法能夠有效地提高減少因量化引入的額外時間開銷。下表為ResNet50在ImageNet數(shù)據(jù)集上不同周期的單次訓(xùn)練時間統(tǒng)計表。
4. 量化卷積融合:減少訪存次數(shù)、節(jié)省cuda kernel launch次數(shù)
通過將量化和反量化操作融合入卷積計算的CUDA核函數(shù)里,可以減少一次數(shù)據(jù)的訪存,有效地減少量化和反量化操作的時間開銷。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 AI 眼鏡讓百萬 APP「集體失業(yè)」?
- 2 大廠紛紛入局,百度、阿里、字節(jié)搶奪Agent話語權(quán)
- 3 深度報告|中國AI產(chǎn)業(yè)正在崛起成全球力量,市場潛力和關(guān)鍵挑戰(zhàn)有哪些?
- 4 上海跑出80億超級獨角獸:獲上市公司戰(zhàn)投,干人形機器人
- 5 國家數(shù)據(jù)局局長劉烈宏調(diào)研格創(chuàng)東智
- 6 一文看懂視覺語言動作模型(VLA)及其應(yīng)用
- 7 下一代入口之戰(zhàn):大廠為何紛紛押注智能體?
- 8 百億AI芯片訂單,瘋狂傾銷中東?
- 9 Robotaxi新消息密集釋放,量產(chǎn)元年誰在領(lǐng)跑?
- 10 格斗大賽出圈!人形機器人致命短板曝光:頭腦過于簡單