博客專欄

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

基礎干貨:高效卷積,降內(nèi)存提速度保精度(附論文下載)

發(fā)布人:CV研究院 時間:2022-01-16 來源:工程師 發(fā)布文章

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

1.png

深度學習模型在目標檢測的性能上取得了重大突破。然而,在傳統(tǒng)模型中,例如Faster R-CNN和YOLO,由于計算資源有限和功率預算緊張,這些網(wǎng)絡的規(guī)模使其難以部署在嵌入式移動設備上。

一、背景

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

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

二、前言

考慮到這一點,研究者提出了一種新型的卷積層,我們稱之為分布移位卷積(DSConv)。這種類型的層在設計時考慮了兩個主要目標:(i)它應該大大提高標準卷積層的內(nèi)存效率和速度;(ii)它應該是標準卷積的即插即用替代品,因此它可以直接用于任何卷積神經(jīng)網(wǎng)絡,包括推理和訓練。

研究者通過將傳統(tǒng)的卷積內(nèi)核分解為兩個組件來實現(xiàn)這一點。其中之一是只有整數(shù)值的張量,不可訓練,并根據(jù)預訓練網(wǎng)絡中浮點 (FP) 權(quán)重的分布進行計算。另一個組件由兩個分布移位器張量組成,它們將量化張量的權(quán)重定位在模擬原始預訓練網(wǎng)絡分布的范圍內(nèi):其中一個移動每個內(nèi)核的分布,另一個移動每個通道。這些權(quán)重可以重新訓練,使網(wǎng)絡能夠適應新的任務和數(shù)據(jù)集。

三、新框架(DSConv layer)

2.png

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

分布移位:此組件的目的是移動VQK的分布以嘗試模仿原始卷積內(nèi)核的分布。通過使用兩個張量轉(zhuǎn)換兩個域來實現(xiàn)。第一個張量是內(nèi)核分布移位器(KDS),他改變每個(1,BLK,1,1)的分布。

例如,給定(128,128,3,3)的原始單精度張量大小,將位大小的超參數(shù)設置為2位且塊大小設置為64,將保存2位整數(shù)的VQK的大小為(128,128,3,3)(量化后的,由單精度變整型),保持FP32編號的內(nèi)核移位器(KDS)的大小為2*(128,2,3,3),保存Fp32編號的通道移位器的大小為2*(128),在此示例中,卷積內(nèi)核減少到其原始大小的7%

使用此設置,VQK充當先驗,它捕獲特定切片應提取的特征類型的本質(zhì)。

四、 Quantization Procedure

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

3.png

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

五、 Distribution Shifts

分布轉(zhuǎn)移的目的是移動VQK,使得輸出和原始權(quán)重張量的值是相匹配的,這是通過內(nèi)核中的分布偏移(KDS)以及通道中的分布偏移(CDS)來完成的,對其進行良好的初始化是有必要的,因為他會使網(wǎng)絡最接近最佳值,只有在達到最大精度之前才進行微調(diào)。

KL-Divergence: 內(nèi)核分布器移位后產(chǎn)生的VQK應該具有與原始權(quán)重類似的分布。量化過程僅適用縮放因子來評估VQK的整數(shù)值

最小化L2范數(shù):初始化內(nèi)核移位器張量的值,使得逐元素乘法后的結(jié)果盡可能接近原始值。

兩種方法效果是一致的。

六、 Optimized Inference

4.png

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

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

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

5.png6.png

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

七、 實驗

7.png8.png9.png

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



關鍵詞: 深度學習

相關推薦

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

關閉