基礎干貨:高效卷積,降內存提速度保精度
論文地址:https://arxiv.org/pdf/1901.01928v1.pdf
一、背景
卷積神經(jīng)網(wǎng)絡(luò )已被證明在計算機視覺(jué)中傳統的艱巨任務(wù)中是成功的,例如圖像分類(lèi)和目標檢測。隨著(zhù)AlexNet的突破,ILSVRC中創(chuàng )建了許多新的拓撲來(lái)實(shí)現高精度。此類(lèi)網(wǎng)絡(luò )的成功不僅將注意力轉移到如何做到這一點(diǎn)上,而且還轉移到了它運行的速度和記憶效率上。這些模型以具有數百萬(wàn)個(gè)參數而聞名,即使使用GPU,它也需要更多的計算時(shí)間和比許多應用程序所需的更多的存儲空間。
運行卷積神經(jīng)網(wǎng)絡(luò )時(shí)所需的大部分內存和計算工作都花在了卷積層中,例ResNet50超過(guò)90%的時(shí)間/內存。這意味著(zhù),為了讓網(wǎng)絡(luò )運行得更快更高效,我們必須提高卷積層的計算負載。
二、前言
考慮到這一點(diǎn),研究者提出了一種新型的卷積層,我們稱(chēng)之為分布移位卷積(DSConv)。這種類(lèi)型的層在設計時(shí)考慮了兩個(gè)主要目標:(i)它應該大大提高標準卷積層的內存效率和速度;(ii)它應該是標準卷積的即插即用替代品,因此它可以直接用于任何卷積神經(jīng)網(wǎng)絡(luò ),包括推理和訓練。
研究者通過(guò)將傳統的卷積內核分解為兩個(gè)組件來(lái)實(shí)現這一點(diǎn)。其中之一是只有整數值的張量,不可訓練,并根據預訓練網(wǎng)絡(luò )中浮點(diǎn) (FP) 權重的分布進(jìn)行計算。另一個(gè)組件由兩個(gè)分布移位器張量組成,它們將量化張量的權重定位在模擬原始預訓練網(wǎng)絡(luò )分布的范圍內:其中一個(gè)移動(dòng)每個(gè)內核的分布,另一個(gè)移動(dòng)每個(gè)通道。這些權重可以重新訓練,使網(wǎng)絡(luò )能夠適應新的任務(wù)和數據集。
三、新框架(DSConv layer)
可變量化內核(VQK):此張量?jì)H保留可變位長(cháng)整數值,并且與原始卷積張量具有相同大小的(ch0,chi,k,k),參數值被設置為從原始浮點(diǎn)模型量化,并且一旦設置不能改變,這是DSConv的量化組件。
分布移位:此組件的目的是移動(dòng)VQK的分布以嘗試模仿原始卷積內核的分布。通過(guò)使用兩個(gè)張量轉換兩個(gè)域來(lái)實(shí)現。第一個(gè)張量是內核分布移位器(KDS),他改變每個(gè)(1,BLK,1,1)的分布。
例如,給定(128,128,3,3)的原始單精度張量大小,將位大小的超參數設置為2位且塊大小設置為64,將保存2位整數的VQK的大小為(128,128,3,3)(量化后的,由單精度變整型),保持FP32編號的內核移位器(KDS)的大小為2*(128,2,3,3),保存Fp32編號的通道移位器的大小為2*(128),在此示例中,卷積內核減少到其原始大小的7%
使用此設置,VQK充當先驗,它捕獲特定切片應提取的特征類(lèi)型的本質(zhì)。
四、 Quantization Procedure
量化函數將要量化的網(wǎng)絡(luò )的比特數作為輸入,并將帶符號的整數表示來(lái)存儲。
這是通過(guò)首先縮放每個(gè)卷積層的權重以使得原始權重w的最大絕對值與上面的量化約束的最大值匹配來(lái)實(shí)現的。再次步驟之后,將所有權重量化為最接近的整數,然后將新權重wq作為整數值存儲到存儲器中,以便稍后在訓練和推理中使用。
五、 Distribution Shifts
分布轉移的目的是移動(dòng)VQK,使得輸出和原始權重張量的值是相匹配的,這是通過(guò)內核中的分布偏移(KDS)以及通道中的分布偏移(CDS)來(lái)完成的,對其進(jìn)行良好的初始化是有必要的,因為他會(huì )使網(wǎng)絡(luò )最接近最佳值,只有在達到最大精度之前才進(jìn)行微調。
KL-Divergence: 內核分布器移位后產(chǎn)生的VQK應該具有與原始權重類(lèi)似的分布。量化過(guò)程僅適用縮放因子來(lái)評估VQK的整數值
最小化L2范數:初始化內核移位器張量的值,使得逐元素乘法后的結果盡可能接近原始值。
兩種方法效果是一致的。
六、 Optimized Inference
首先將它乘以輸入張量,而不是移動(dòng)VQK,這意味著(zhù)大部分操作將以整數值而不是浮點(diǎn)數計算,根據所使用的硬件,這可以通過(guò)8位操作實(shí)現2-10倍的加速。使硬件可以利用整數運算而不必使用浮點(diǎn)運算。
給定BLK的塊大小,當chi是BLK的倍數時(shí),該方法將執行比其原始對應物少的FP乘法的BLK倍。對于塊大小為128,通過(guò)簡(jiǎn)單的將卷積層更改為DSConv,將顯著(zhù)減少2個(gè)量級的fp乘法
在執行給定內核中所有卷積的總和之后,將在稍微應用信道分布移位,進(jìn)一步改善存儲器和計算能力,如果模型在卷積運算符之后包括它,則可以將通道移位合并到BN中。
使用此過(guò)程,也可以很容易地計算方向傳播。借助上圖可以看出方向傳播被簡(jiǎn)單地分解為三個(gè)簡(jiǎn)單的操作。還應該注意的是,VQK核是不可訓練的,因此不需要計算?wr/?w的值。相反,只需要計算?ξr/?ξ,它的大小明顯小于?wr/?w。
七、 實(shí)驗
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。