<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

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

基礎干貨:高效卷積,降內存提速度保精度

發(fā)布人:計算機視覺(jué)工坊 時(shí)間:2021-12-15 來(lái)源:工程師 發(fā)布文章

1.png

論文地址: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í)間和比許多應用程序所需的更多的存儲空間。

2.jpg

運行卷積神經(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)

3.png

可變量化內核(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)存儲。

4.png

這是通過(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

5.png

首先將它乘以輸入張量,而不是移動(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中。

6.png7.png

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

七、 實(shí)驗

8.png9.png10.png

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



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

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>