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