博客專欄

EEPW首頁 > 博客 > 基礎(chǔ)干貨:高效卷積,降內(nèi)存提速度保精度

基礎(chǔ)干貨:高效卷積,降內(nèi)存提速度保精度

發(fā)布人:計算機(jī)視覺工坊 時間:2021-12-15 來源:工程師 發(fā)布文章

1.png

論文地址:https://arxiv.org/pdf/1901.01928v1.pdf

一、背景

卷積神經(jīng)網(wǎng)絡(luò)已被證明在計算機(jī)視覺中傳統(tǒng)的艱巨任務(wù)中是成功的,例如圖像分類和目標(biāo)檢測。隨著AlexNet的突破,ILSVRC中創(chuàng)建了許多新的拓?fù)鋪韺崿F(xiàn)高精度。此類網(wǎng)絡(luò)的成功不僅將注意力轉(zhuǎn)移到如何做到這一點上,而且還轉(zhuǎn)移到了它運行的速度和記憶效率上。這些模型以具有數(shù)百萬個參數(shù)而聞名,即使使用GPU,它也需要更多的計算時間和比許多應(yīng)用程序所需的更多的存儲空間。

2.jpg

運行卷積神經(jīng)網(wǎng)絡(luò)時所需的大部分內(nèi)存和計算工作都花在了卷積層中,例ResNet50超過90%的時間/內(nèi)存。這意味著,為了讓網(wǎng)絡(luò)運行得更快更高效,我們必須提高卷積層的計算負(fù)載。

二、前言

考慮到這一點,研究者提出了一種新型的卷積層,我們稱之為分布移位卷積(DSConv)。這種類型的層在設(shè)計時考慮了兩個主要目標(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)核分解為兩個組件來實現(xiàn)這一點。其中之一是只有整數(shù)值的張量,不可訓(xùn)練,并根據(jù)預(yù)訓(xùn)練網(wǎng)絡(luò)中浮點 (FP) 權(quán)重的分布進(jìn)行計算。另一個組件由兩個分布移位器張量組成,它們將量化張量的權(quán)重定位在模擬原始預(yù)訓(xùn)練網(wǎng)絡(luò)分布的范圍內(nèi):其中一個移動每個內(nèi)核的分布,另一個移動每個通道。這些權(quán)重可以重新訓(xùn)練,使網(wǎng)絡(luò)能夠適應(yīng)新的任務(wù)和數(shù)據(jù)集。

三、新框架(DSConv layer)

3.png

可變量化內(nèi)核(VQK):此張量僅保留可變位長整數(shù)值,并且與原始卷積張量具有相同大小的(ch0,chi,k,k),參數(shù)值被設(shè)置為從原始浮點模型量化,并且一旦設(shè)置不能改變,這是DSConv的量化組件。

分布移位:此組件的目的是移動VQK的分布以嘗試模仿原始卷積內(nèi)核的分布。通過使用兩個張量轉(zhuǎn)換兩個域來實現(xiàn)。第一個張量是內(nèi)核分布移位器(KDS),他改變每個(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īng)提取的特征類型的本質(zhì)。

四、 Quantization Procedure

量化函數(shù)將要量化的網(wǎng)絡(luò)的比特數(shù)作為輸入,并將帶符號的整數(shù)表示來存儲。

4.png

這是通過首先縮放每個卷積層的權(quán)重以使得原始權(quán)重w的最大絕對值與上面的量化約束的最大值匹配來實現(xiàn)的。再次步驟之后,將所有權(quán)重量化為最接近的整數(shù),然后將新權(quán)重wq作為整數(shù)值存儲到存儲器中,以便稍后在訓(xùn)練和推理中使用。

五、 Distribution Shifts

分布轉(zhuǎn)移的目的是移動VQK,使得輸出和原始權(quán)重張量的值是相匹配的,這是通過內(nèi)核中的分布偏移(KDS)以及通道中的分布偏移(CDS)來完成的,對其進(jìn)行良好的初始化是有必要的,因為他會使網(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

5.png

首先將它乘以輸入張量,而不是移動VQK,這意味著大部分操作將以整數(shù)值而不是浮點數(shù)計算,根據(jù)所使用的硬件,這可以通過8位操作實現(xiàn)2-10倍的加速。使硬件可以利用整數(shù)運算而不必使用浮點運算。

給定BLK的塊大小,當(dāng)chi是BLK的倍數(shù)時,該方法將執(zhí)行比其原始對應(yīng)物少的FP乘法的BLK倍。對于塊大小為128,通過簡單的將卷積層更改為DSConv,將顯著減少2個量級的fp乘法

在執(zhí)行給定內(nèi)核中所有卷積的總和之后,將在稍微應(yīng)用信道分布移位,進(jìn)一步改善存儲器和計算能力,如果模型在卷積運算符之后包括它,則可以將通道移位合并到BN中。

6.png7.png

使用此過程,也可以很容易地計算方向傳播。借助上圖可以看出方向傳播被簡單地分解為三個簡單的操作。還應(yīng)該注意的是,VQK核是不可訓(xùn)練的,因此不需要計算?wr/?w的值。相反,只需要計算?ξr/?ξ,它的大小明顯小于?wr/?w。

七、 實驗

8.png9.png10.png

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: 深度學(xué)習(xí)

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉