• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Winograd 快速卷積相關(guān)研究綜述

      2022-05-17 06:01:16黃立波
      計算機與生活 2022年5期
      關(guān)鍵詞:剪枝切片乘法

      童 敢,黃立波

      國防科技大學 計算機學院,長沙410073

      卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在計算機視覺、自然語言處理等任務(wù)上應(yīng)用廣泛。越來越多的研究嘗試加速CNN 的訓練和推理,使用快速卷積算子就是其中的重要方法??焖倬矸e算子包括快速傅里葉變換(fast Fourier transformation,F(xiàn)FT)卷積和Winograd 卷積,這類卷積通過把輸入特征映射和卷積核線性變換到相應(yīng)的空間,將原來的運算轉(zhuǎn)換為對應(yīng)位相乘,運算結(jié)果再經(jīng)過逆線性變換即可得到原特征映射空間的輸出。

      在“變換-運算-逆變換”的過程中,乘法運算的次數(shù)比直接卷積有可觀的減少,而代價則是加法運算次數(shù)的增加。在絕大多數(shù)現(xiàn)代處理器上,加法的執(zhí)行效率遠高于乘法,因此可以使用快速卷積算子來提高模型執(zhí)行效率。由于FFT 變換是映射到復(fù)數(shù)空間,Winograd 卷積運算過程中對內(nèi)存的占用只需FFT卷積的一半,使其迅速成為最流行的快速卷積算子。

      但是直接應(yīng)用Winograd 卷積存在很多挑戰(zhàn)。首先,基本的Winograd 卷積適用范圍有限,僅可在單位步長、小卷積核的二維卷積上應(yīng)用,在大卷積核上應(yīng)用則會有數(shù)值不穩(wěn)定的情況。其次,由于線性變換和逆線性變換的復(fù)雜性,快速卷積算子在特定平臺上的優(yōu)化難以實現(xiàn),比如利用并行性和數(shù)據(jù)局部性。此外,Winograd 卷積與以剪枝和量化為代表的網(wǎng)絡(luò)壓縮技術(shù)難以直接結(jié)合,因此不易在算力不足和有能耗限制的平臺上部署實現(xiàn)。針對這些問題,研究者做了大量的工作,但至今還未有公開的文章對相關(guān)工作進行系統(tǒng)性的總結(jié)。為給后續(xù)研究者提供參考,本文從算法拓展、算法優(yōu)化、實現(xiàn)與應(yīng)用三方面綜述Winograd 的發(fā)展,并對未來可能的研究方向做出展望。

      1 Winograd 卷積原理

      Winograd 于1980 年提出了有限脈沖響應(yīng)(finite impulse response,F(xiàn)IR)濾波的最小濾波算法。最小濾波算法指出,由拍的FIR濾波器生成個輸出,即(,),需要的最少乘法數(shù)量((,))為+-1。以(2,3)為例,涉及到的乘法數(shù)量為((2,3))=2+3-1=4,從6 次降低到了4 次。

      2015 年,Winograd 最小濾波算法初次被應(yīng)用在CNN 中,利用減少的乘法次數(shù)提升卷積算子性能。如果用矩陣的形式表示W(wǎng)inograd 最小濾波算法,則可以得到:

      其中,為濾波器向量,為輸入數(shù)據(jù)向量,為輸出數(shù)據(jù)向量,表示濾波器變換矩陣,表示數(shù)據(jù)變換矩陣,⊙表示矩陣的對應(yīng)位相乘(Hadamard積),表示輸出變換矩陣。通過嵌套一維最小濾波算法(,),可以得到二維的最小濾波算法(×,×):

      二維最小濾波算法所需乘法數(shù)為(+-1),而原始卷積算法需要乘法數(shù)為×××。對于(2×2,3×3)而言,乘法次數(shù)從36降低到了16,減少了55.6%。

      根據(jù)二維矩陣形式,可以自然地將Winograd卷積分為四個分離的階段:輸入變換(input transformation,ITrans)、卷積核變換(kernel transformation,KTrans)、對應(yīng)位相乘(element-wise matrix multiplication,EWMM)和輸出變換(output transformation,OTrans),如圖1所示。

      圖1 Winograd 卷積的四個階段Fig.1 Four stages of Winograd convolution

      對于二維卷積算子,需要先將卷積輸入劃分為相互重疊的(+-1)×(+-1)的切片,切片之間有-1 的重疊部分。實驗表明,(2×2,3×3)在多個卷積上的實現(xiàn)性能超過了NVIDIAcuDNN,而且使用的內(nèi)存大小遠低于FFT 卷積。

      2 Winograd 卷積的一般化和拓展

      2.1 Winograd 卷積的一般化

      基本的Winograd 卷積僅支持=3 和=2 的二維卷積算子,且切片大小不超過6,無法滿足現(xiàn)代CNN 中豐富的卷積算子類型,需要對其進行一般化。Winograd 卷積的一般化主要分為四個方向,分別是支持任意維度、支持任意切片大小、支持任意常規(guī)卷積、支持特殊卷積。

      三維卷積是三維CNN 的主要組件,常用于處理空間相關(guān)的信息。通過對一維Winograd 卷積進行嵌套,可以得到其二維形式,重復(fù)進行嵌套則可以得到任意維度的Winograd 卷積。Budden 等給出了維Winograd 卷積的一般形式,并將二維Winograd 卷積視為特殊情況在CPU 上實現(xiàn),但并未實現(xiàn)三維的情況。其他研究者使用了同樣的嵌套方法,并針對特定平臺完成了三維Winograd 卷積的實現(xiàn)。由于不同維度上算法的實現(xiàn)有統(tǒng)一性,Shen 等提出了二維、三維統(tǒng)一的現(xiàn)場可編程邏輯門陣列(field programmable gate array,F(xiàn)PGA)模板實現(xiàn)。Deng 等提出了可變分解方法,支持三維卷積的同時也支持了非單位步長的卷積。

      更大的切片大小會減少切片之間的重疊部分,但同時也會帶來更大的數(shù)值誤差,因此在對精度要求不太嚴格的場合會直接使用更大的切片尺寸以提升性能。大尺寸的卷積核也在卷積網(wǎng)絡(luò)模型中經(jīng)常出現(xiàn),通常為了保持Winograd 卷積的精度,這里卷積也會被替換為小尺寸的卷積。Lu 等在FPGA 上評估了大尺寸切片分別在=3 和=5 下的精度情況,實驗表明小的切片尺寸在=3 時可以保持模型的高精度。Huang 等也完成了類似的工作。Mazaheri等則基于符號編程構(gòu)建了支持不同硬件后端的實現(xiàn),同時也支持不同尺寸的切片。

      此類直接實現(xiàn)的方法會在大尺寸切片和大尺寸卷積核上顯著損失精度,因此將這類卷積分解為更小的卷積成為了研究者常用的方法。Yang 等使用分解方法統(tǒng)一了常規(guī)卷積、depth-wise 卷積以及分組卷積,而大切片尺寸、大卷積核卷積和非單位步長卷積也都可以通過分解方法轉(zhuǎn)換為基本的Winograd 卷積。常用的分解單元實現(xiàn)包括(2×2,3×3)、(2×3,3×3)、(3×2,3×3)、(3×3,3×3)等。Liu 等同樣基于分解方法,在FPGA 上實現(xiàn)了使用相同資源支持任意卷積核大小的Winograd 卷積。利用大卷積核上計算的對稱性,Sabir 等使用近似計算技術(shù)支持了=5 大小的卷積核。

      包括空洞卷積和轉(zhuǎn)置卷積在內(nèi)的特殊卷積常用于圖像分割、超分辨率等領(lǐng)域。空洞卷積的Winograd形式被提出用于支持擴張為2 和4 的情況,原理是擴張輸入變換矩陣的規(guī)模。Shi 等通過預(yù)定義的分解和交織操作將轉(zhuǎn)置卷積轉(zhuǎn)換為多個基本卷積,從而實現(xiàn)了對轉(zhuǎn)置卷積的支持。

      總結(jié)Winograd 卷積一般化研究工作相關(guān)文獻如表1 所示。通過結(jié)合嵌套方法和分解方法,理論上可以實現(xiàn)CNN 中所有卷積的Winograd 卷積形式。

      表1 Winograd 卷積的一般化Table 1 Generalization of Winograd convolution

      2.2 Winograd 卷積的拓展

      除了一般化到各類卷積,還有一些研究嘗試拓展Winograd 卷積本身的線性變換。Winograd 算法族首先將輸入的切片和卷積核線性變換到Winograd域,執(zhí)行Hadamard 積之后再逆變換回特征映射域。對于指定的卷積核和切片尺寸,線性變換矩陣、、是給定的。卷積可以表示為多項式乘法,將卷積核和輸入向量的元素分別映射到多項式()和()的系數(shù),則輸出向量(和的卷積)的元素等于多項式()=()()的系數(shù)。Winograd 卷積算法族基于多項式上的中國剩余定理(Chinese remainder theorem,CRT)對不可約且互質(zhì)的多項式同余系統(tǒng)內(nèi)的多項式取余即可得到卷積輸出,對同余方程組進行求解即根據(jù)多項式的系數(shù)得到線性變換矩陣的具體解。因此,對Winograd 卷積的拓展可以從兩個角度入手:一是使用不同的變換,將運算映射到不同的域;二是采用不同的變換矩陣生成多項式。

      Barabasz 等將Winograd卷積算法中使用的卷積多項式拓展為高階多項式,實驗表明使用二階多項式會顯著降低誤差,但同時也會增加乘法次數(shù),因此需要在乘法次數(shù)和浮點數(shù)精度之間做權(quán)衡。Ju等提出的雙線性多項式與此方法原理相同,保持了大卷積核上的數(shù)值穩(wěn)定性。而Meng 等將多項式乘法拓展到復(fù)數(shù)域,利用共軛復(fù)數(shù)乘法的對稱性可以進一步減少乘法數(shù)量。Liu等提出將余數(shù)系統(tǒng)(residual number system,RNS)引入到Winograd 卷積,通過取余的操作實現(xiàn)Winograd 卷積的量化操作,進一步支持更大的輸入切片尺寸而不會引入顯著誤差。Xu等創(chuàng)新地引入了費馬數(shù)變換(Fermat number transformation,F(xiàn)NT),使用這種變換一方面可以確保中間運算結(jié)果均為無符號數(shù),另一方面還將所有的計算都簡化為移位和加法操作,有利于在FPGA等設(shè)備上實現(xiàn)。

      根據(jù)最小濾波算法的描述,Winograd 卷積已經(jīng)達到了最少的乘法運算次數(shù)。FFT 卷積由于使用了傅里葉變換,在乘法次數(shù)和內(nèi)存占用上遠高于Winograd 卷積,但保持了很好的精度。探索不同的變換可能會引入更多的乘法次數(shù),但若能保持模型精度也是可選的實現(xiàn)技術(shù)。而生成多項式的選擇則是在不增加乘法次數(shù)的前提下減少了精度損失,且無需修改算法,因此在應(yīng)用上更具有現(xiàn)實意義。

      2.3 其他

      Winograd 卷積還被用于和Strassen 算法結(jié)合。Strassen 算法是一種減少矩陣運算次數(shù)的算法。雖然有研究指出Strassen 算法減少的運算遠小于Winograd 算法,但該工作將在Strassen 算法中使用的卷積替換為Winograd 卷積,結(jié)合了兩者帶來的運算減少實現(xiàn)了更進一步的優(yōu)化。Winograd 卷積也被應(yīng)用在加法神經(jīng)網(wǎng)絡(luò)上,用加法代替乘法,保持了相當?shù)男阅芮医档土斯摹?/p>

      3 Winograd 卷積的優(yōu)化

      3.1 剪枝和利用稀疏性

      剪枝是CNN 優(yōu)化中常用的有效技術(shù)。剪枝主要用于對CNN 中卷積算子的權(quán)值進行修剪,對輸出影響很小的權(quán)值會被置零。剪枝后的卷積核成為稀疏張量,這帶來了兩點好處:一是按照特定的壓縮格式存儲稀疏的卷積核張量權(quán)值可以減少內(nèi)存使用;二是稀疏張量中大量元素為0,因此可以減少卷積的計算量。對于卷積層和全連接層的卷積可以將參數(shù)減少90%以上。但在Winograd 卷積上直接應(yīng)用剪枝是有困難的,因為稀疏的卷積核在變換到Winograd 域后又會變回稠密矩陣,這違背了剪枝的初衷。

      Liu 等首 先提出 在Winograd 卷積和FFT 卷積上應(yīng)用剪枝,在卷積核變換之后引入剪枝以得到稀疏的Winograd 域卷積核。他們在后續(xù)的研究中又將線性整流單元(rectified linear unit,ReLU)置于輸入變換之后,結(jié)合稀疏的卷積核進一步提升了稀疏性,如圖2 所示,Wang 等也使用了相同的剪枝方法。Li等提出在本地學習剪枝系數(shù),減少了剪枝帶來的精度損失。Lu 等和Shi 等也分別在卷積核變換后引入了剪枝。Yu 等指出,添加ReLU 的方法改變了網(wǎng)絡(luò)結(jié)構(gòu),重訓練的代價也大,因此他們提出在輸入變換前進行結(jié)構(gòu)化剪枝傳遞稀疏性,同時對卷積核進行剪枝。為了兼顧速度和準確性,Zheng 等在Liu等工作的基礎(chǔ)上,提出了動態(tài)學習批量的大小。

      圖2 在Winograd 卷積中應(yīng)用ReLU 以實現(xiàn)剪枝Fig.2 Pruning by applying ReLU in Winograd convolution

      在對稀疏性的利用上,包括計算優(yōu)化和模型壓縮兩方面。Park 等提出Zero-Skip 技術(shù),軟硬件上分別實現(xiàn)在EWMM 階段計算時跳過零權(quán)值,是經(jīng)典的計算優(yōu)化方法。Choi 等首次提出了利用Winograd 卷積剪枝的模型壓縮方法,區(qū)別于Liu 等工作,他們使用池化代替了ReLU。Yang 等提出了一種規(guī)則的剪枝模式,以優(yōu)化模型的壓縮,Wang 等則是提出了一種新的編碼方式來確保壓縮與解壓縮。

      Winograd 卷積的剪枝技術(shù)主要相關(guān)工作的總結(jié)與分析如表2 所示。

      表2 Winograd 卷積中的剪枝Table 2 Pruning in Winograd convolution

      3.2 低精度與量化

      Winograd 卷積也可以與量化結(jié)合,犧牲精度以換取更小的模型和更快的運算速度。Zhuge 等首先使用了8 位定點數(shù)的Winograd 卷積,但與16 位定點數(shù)相比誤差顯著。Zhang 等使用的精度與他們一致,但引入了細粒度調(diào)度,因此在性能上有顯著提升。Meng 等在變換后的卷積核上應(yīng)用量化,使用精度縮放技術(shù)量化到INT8 精度上。Liu 等在把Winograd 卷積拓展到余數(shù)系統(tǒng)的同時也使得可以將卷積量化到INT8 精度。Ye 等實現(xiàn)了12 位的混合卷積FPGA 實現(xiàn),還有一些研究也使用了8 位的量化精度。Han 等還進一步探索了ARMCPU 上的2~8位量化精度。Li等直接在Winograd域插入線性量化,對2~8 位的量化精度進行了全面評估。他們的實驗表明,8 位以下的量化精度會帶來不可忽視的模型精度下降。

      對于低精度和量化帶來的精度損失,F(xiàn)ernandez等提出通過學習訓練減少INT8 精度Winograd 卷積的誤差,與剪枝技術(shù)中的重訓練原理相同。而Ahmad 等提出對精度損失建模,為特征映射和卷積核使用不同的量化級別。Barabasz用勒讓德基多項式取代Winograd 變換中的規(guī)范基多項式,提出基于基變技術(shù)的9 位量化精度Winograd 卷積,維持了數(shù)值穩(wěn)定性。Sabir 等在特征映射切片上應(yīng)用量化,應(yīng)用粒子群優(yōu)化技術(shù)找到量化的閾值以保持精度。可以根據(jù)他們的工作,總結(jié)緩解量化帶來的精度損失的方法如表3 所示。

      表3 緩解量化Winograd 卷積精度損失的方法Table 3 Methods to alleviate accuracy loss of quantization in Winograd convolution

      3.3 數(shù)值穩(wěn)定性

      Winograd 卷積在初期只應(yīng)用在3×3 的卷積核和小的輸入切片上,原因在于Winograd 卷積計算中內(nèi)在的數(shù)值不穩(wěn)定性。在更大的卷積核或輸入切片上,Winograd 變換的多項式系數(shù)呈指數(shù)增長,這種不平衡會反映在變換矩陣的元素上,造成很大的相對誤差。Vincent 等指出這種數(shù)值不穩(wěn)定性的來源是變換中大尺寸的范德蒙德矩陣,提出精心挑選出最小指數(shù)增長的值相應(yīng)的多項式,同時對變換矩陣進行縮放以緩解數(shù)值不穩(wěn)定性。

      Barabasz 團隊從數(shù)學的角度在Winograd 卷積數(shù)值穩(wěn)定性的維持上做了大量工作。他們首先提出使用超線性多項式來構(gòu)造Winograd 變換矩陣,在運算次數(shù)和計算精度之間進行平衡,Ju 等提出的雙線性方法與他們的想法一致;之后他們又提出基變技術(shù),通過額外引入一個正則化變換矩陣,在實現(xiàn)了量化的同時保持了數(shù)值穩(wěn)定性;他們進一步的研究表明,線性變換過程中浮點數(shù)乘加的運算順序會影響到結(jié)果的準確性,這同樣是由于變換矩陣中元素的指數(shù)級不平衡導(dǎo)致的,通過霍夫曼編碼運算順序就可以減少這種誤差,從而允許更大的切片尺寸和卷積核尺寸。

      在前文提到的工作中,也有很多研究嘗試優(yōu)化Winograd 卷積的數(shù)值穩(wěn)定性,總結(jié)相關(guān)工作的主要思路有四點:

      (1)將卷積拆分為小切片或小卷積核的Winograd 卷積,如分解方法;

      (2)對Winograd 變換作出修改映射到精度更高的空間,如使用超線性多項式;

      (3)選擇變換矩陣生成多項式中相對誤差更小的,如使用變換矩陣最大最小元素比值最小的;

      (4)更改計算中乘累加的順序,優(yōu)先累加乘積更小的結(jié)果。

      其中分解方法已經(jīng)大量使用于研究中,而選擇變換矩陣的方法由于無需修改Winograd 卷積算法本身也具備直接應(yīng)用的可行性。而超線性變換會突破現(xiàn)有Winograd 卷積實現(xiàn)的架構(gòu),在數(shù)學上論證該方法優(yōu)越性之前距離實際應(yīng)用還有一定的距離。

      4 Winograd 卷積的實現(xiàn)、優(yōu)化與應(yīng)用

      4.1 實現(xiàn)

      Winograd 卷積帶來的高性能使得研究者們迅速將其部署到各類平臺,除了CPU、GPU 等,還包括對效率和功耗有嚴格要求的FPGA 平臺、移動端和邊緣計算設(shè)備。對實現(xiàn)了Winograd 卷積的實現(xiàn)進行統(tǒng)計,得到特定平臺上的研究占比如圖3 所示。

      圖3 Winograd 卷積實現(xiàn)的平臺分布情況Fig.3 Platform distribution of Winograd convolution implementation

      從圖中可以看到,在FPGA 上的Winograd 卷積實現(xiàn)幾乎達到了總數(shù)的一半。這個具有統(tǒng)治地位的比值一方面說明Winograd 卷積在硬編碼的FPGA 平臺上更容易實現(xiàn)并發(fā)揮優(yōu)勢,另一方面也說明越來越多的人工智能應(yīng)用在向低功耗的平臺上部署。與之類似的是移動端和邊緣計算上的實現(xiàn),在這類平臺上計算資源十分有限,對功耗的要求也更高,因此Winograd 卷積帶來的乘法數(shù)量減少是有重大收益的。CPU 端和GPU 端具備很強的算力,通常用于神經(jīng)網(wǎng)絡(luò)的訓練,因此相關(guān)工作也集中在對訓練速度的優(yōu)化上。而也有部分供應(yīng)商仍在使用云服務(wù)器上的CPU 和GPU 為用戶提供人工智能服務(wù),因此相關(guān)研究也具備一定的市場。GPGPU-Sim 作為模擬GPU 的軟件平臺,可以模擬對GPU 硬件的修改,在GPGPU-Sim 上的研究可以為SIMT 體系結(jié)構(gòu)的設(shè)計提供方向。

      對于上述傳統(tǒng)平臺,部分研究實現(xiàn)了相應(yīng)的深度學習框架,在其中集成了Winograd 卷積以提升模型執(zhí)行效率。Perkins實現(xiàn)的Cltorch 是基于OpenCL實現(xiàn)的硬件無關(guān)的后端平臺。Xiao 等實現(xiàn)了一個Caffe 模型到FPGA 映射的工具,基于動態(tài)規(guī)劃選擇是否應(yīng)用Winograd 卷積。Dicecco 等設(shè)計了CPUFPGA 異構(gòu)平臺上的開源后端框架,但僅支持單位步長的Winograd 卷積。Demidovskij 等還實現(xiàn)了面向Intel 硬件的、支持Winograd 卷積的軟件棧,面向包括CPU、集顯、神經(jīng)計算棒等生成高效負載。

      值得注意的是,除了上述傳統(tǒng)平臺,還有一些研究嘗試將Winograd 卷積部署在其他非傳統(tǒng)平臺上。比如基于內(nèi)存的計算平臺,Lin 等在ReRAM 上實現(xiàn)了Winograd卷積,基于切片提高了數(shù)據(jù)重用,而Ghaffar等則基于DRAM 架構(gòu)實現(xiàn)了8-bit 的量化卷積。隨機計算和近似計算也用于實現(xiàn)Winograd 卷積。Chen 等實現(xiàn)了向量DSP(domain specific processor)上的三維Winograd 卷積。而第五代精簡指令集計算機(reduced instruction set computer-V,RISC-V)指令集作為新流行的開源指令集,同樣吸引了部分研究者在相關(guān)平臺上部署人工智能應(yīng)用。Wang 等通過拓展一條(2×2,3×3)的卷積指令并新增計算模塊,在一個開源RISC-V框架上實現(xiàn)了Winograd 卷積。

      4.2 優(yōu)化

      性能是部署在特定平臺上必須要考慮的事情,對于不同的平臺,研究者們采用的優(yōu)化方法也大相徑庭,現(xiàn)分平臺總結(jié)相關(guān)優(yōu)化技術(shù)如下。

      Heinecke 等將即時(just-in-time,JIT)編譯優(yōu)化技術(shù)用于加速x86 CPU 架構(gòu)上直接卷積和Winograd卷積在小卷積核上的實現(xiàn),在編譯過程中提前計算卷積核調(diào)用時的地址偏移量。Ragate依賴編譯器的自動向量化,可將計算階段轉(zhuǎn)換為批量矩陣乘法(batched general matrix multiplication,BGEMM),利用CPU 的高級向量擴展(advanced vector extensions,AVX)指令集實現(xiàn)性能提升。Jia 等提出了CPU 上的自定義數(shù)據(jù)布局,同樣利用CPU 上的向量化指令實現(xiàn)高效訪存。在數(shù)據(jù)重用方面,Gelashvili 等利用CPU 的L3 Cache 駐留卷積核實現(xiàn)了對卷積核的重用,但無法支持通道數(shù)過大的卷積,而Wu 等利用Winograd 卷積中的相似性也可以實現(xiàn)CPU 上的深度數(shù)據(jù)重用。

      在GPU 上同樣可以將Winograd 卷積的計算階段轉(zhuǎn)換為批量矩陣乘法,然后調(diào)用高效的矩陣乘法實現(xiàn)。Lan 等和Wang 等分別在GPU 上實現(xiàn)了三維Winograd 卷積,但前者的計算階段直接調(diào)用了cuBLAS 中的矩陣乘法實現(xiàn),后者則是手動編寫了特定的實現(xiàn)。Hong 等在大規(guī)模GPU 集群上利用Winograd 卷積的數(shù)據(jù)并行性和切片內(nèi)并行性實現(xiàn)了多維并行訓練。Jia 等利用MegaKernel 技術(shù)將Winograd 卷積的四個階段融合,同時利用精心設(shè)計的任務(wù)映射算法可在GPU 上達成顯著的性能提升。另外,Yan 等將源代碼和匯編(source and assembly,SASS)級別的匯編器優(yōu)化用于優(yōu)化Winograd 卷積,通過合并全局訪存并使共享訪存無沖突,利用緩存設(shè)計流水線,提高計算強度,還利用常規(guī)寄存器填補了謂詞寄存器不足的缺陷。

      與CPU和GPU不同的是,F(xiàn)PGA上沒有高效的神經(jīng)網(wǎng)絡(luò)計算庫可供直接調(diào)用,但可定制的特性給予了FPGA 上進行優(yōu)化更多可能性。Cariow 等首先研究了Winograd 卷積硬件實現(xiàn)的最小需求,并在FPGA 上實現(xiàn)了Winograd 卷積的基本模塊。在數(shù)據(jù)重用方面,Aydonat 等利用流緩沖區(qū)暫存所有的中間特征映射實現(xiàn)了高能耗比的FPGA 實現(xiàn),而Lu等設(shè)計了線緩存結(jié)構(gòu)來暫存特征映射并重用不同切片的數(shù)據(jù),并在后續(xù)工作中針對稀疏的情況進行了優(yōu)化。

      由于FPGA 可定制化的特性,對計算資源的充分利用是優(yōu)化的重點。一些研究統(tǒng)一了二維和三維的Winograd,構(gòu)建了FPGA 上的統(tǒng)一模板。另一些研究聚焦于統(tǒng)一Winograd 卷積和矩陣乘的實現(xiàn),以最大化模塊的可重用性。對硬件實現(xiàn)方案進行系統(tǒng)評估才能最大化資源利用率并提升計算效率。Ahmad 等和Liu 等還對FPGA 上實現(xiàn)Winograd 卷積進行了全面的設(shè)計空間探索。此外,還有其他工作也在FPGA 上實現(xiàn)了Winograd 卷積并對設(shè)計空間進行了探索,他們還在設(shè)計高效數(shù)據(jù)布局等方面進行了大量研究。

      各個平臺上的優(yōu)化雖然方法各異,但相互有共同之處。例如,CPU 和GPU 均為多級內(nèi)存層級體系結(jié)構(gòu),因此均可利用各級緩存駐留數(shù)據(jù)實現(xiàn)數(shù)據(jù)重用。三個平臺上的優(yōu)化方法總結(jié)比較如表4 所示。

      表4 不同平臺上的性能優(yōu)化方法Table 4 Performance optimization methods on different platforms

      4.3 應(yīng)用

      Winograd 卷積提出的初衷是為了實現(xiàn)高性能卷積,但由于其內(nèi)在的數(shù)值不穩(wěn)定性,初期僅有小卷積核 上應(yīng) 用Winograd 卷積。CPU 上和GPU 上均有對FFT 和Winograd 的性能進行的比較,他們的結(jié)論是一致的,即FFT 在大尺寸卷積核的卷積上性能更好,而Winograd 卷積適用于小尺寸卷積。而Zlateski等指出,隨著CPU 的內(nèi)存帶寬越來越大,Winograd 卷積的性能優(yōu)勢也會減少。不過隨著拓展和優(yōu)化的進一步深入,Winograd 卷積也成為了最適合小尺寸卷積核的快速卷積實現(xiàn),在各神經(jīng)網(wǎng)絡(luò)計算庫和深度學習編譯框架上均有實現(xiàn)。

      Winograd 卷積旨在加速卷積以提高CNN 模型的執(zhí)行效率,對實時性有要求的場景都可以嘗試使用。Zhuge 等利用混合卷積實現(xiàn)了人臉識別系統(tǒng)。Lou 等基于三維Winograd 卷積實現(xiàn)了用于動作識別的加速器。Shi 等和Yen 等分別將其用于實時超分辨率,但在上采樣上有區(qū)別,前者使用的是轉(zhuǎn)置卷積的Winograd 實現(xiàn),而后者使用shuffle 層代替了轉(zhuǎn)置卷積。Yao 等還實現(xiàn)了穿戴設(shè)備上的語音識別加速器,應(yīng)用了一維的8 bit 整數(shù)Winograd 卷積網(wǎng)絡(luò)。Winograd 卷積的應(yīng)用不止于此,未來還可以有更多對實時性有要求的人工智能應(yīng)用Winograd卷積實現(xiàn),尤其是在移動端、物聯(lián)網(wǎng)和邊緣計算設(shè)備上。

      5 總結(jié)與展望

      Winograd 卷積是當前應(yīng)用最廣泛的快速卷積算子。從引入到CNN 至今,其使用范圍隨著研究的深入逐漸覆蓋了現(xiàn)代CNN 中的各類卷積,與剪枝、量化等技術(shù)的結(jié)合也走向成熟。在各種平臺深度學習框架和神經(jīng)網(wǎng)絡(luò)庫中均已集成Winograd 卷積,可以為各類硬件平臺生成高效的工作負載。

      這里對未來的研究方向給出幾點展望。在算法本身的優(yōu)化方面,數(shù)學方法仍然是突破Winograd 卷積局限性的根本方法,由于其內(nèi)在的最小乘法次數(shù)屬性,有望在未來的研究中基本取代現(xiàn)有的基于一般矩陣乘的卷積。現(xiàn)已有從數(shù)學角度解決數(shù)值穩(wěn)定性的方法,但由于引入了新的計算機制或額外的步驟,在各平臺上還沒有高效的實現(xiàn),對硬件友好優(yōu)化方法的研究可能會是后續(xù)研究的重點方向。在實現(xiàn)與應(yīng)用方面,F(xiàn)PGA 平臺上可以輕松為Winograd 卷積定制軟硬件協(xié)同的實現(xiàn),但現(xiàn)有FPGA 實現(xiàn)對數(shù)值穩(wěn)定性的關(guān)注太少。FPGA 實現(xiàn)具備很高的靈活性,可參照相關(guān)優(yōu)化方法率先部署更快更精確的Winograd卷積。由于Winograd 卷積數(shù)據(jù)流的內(nèi)在復(fù)雜性,在CPU、GPU 這類通用計算平臺上,如何利用好算力和內(nèi)存層級還有待進一步研究。比如Winograd 四個階段現(xiàn)大多實現(xiàn)為四個分離的計算核,CPU 上已經(jīng)有研究嘗試利用L3Cache 進行融合。但GPU 上嘗試的融合屬于任務(wù)調(diào)度層面的融合,利用高速緩存的融合還未有相關(guān)研究。GPU 等設(shè)備近年都引入了類似TensorCore的高性能運算單元,但Winograd 卷積相關(guān)研究均未利用這類部件,因此對新硬件特性的利用也可以成為另一個突破口。此外,在非常規(guī)平臺的實現(xiàn)明顯滯后于理論,比如基于內(nèi)存的計算平臺、開源RISC-V框架上的實現(xiàn)還局限于小卷積核,下一步可以嘗試在這類平臺上實現(xiàn)更一般化的Winograd卷積。

      猜你喜歡
      剪枝切片乘法
      算乘法
      人到晚年宜“剪枝”
      我們一起來學習“乘法的初步認識”
      基于YOLOv4-Tiny模型剪枝算法
      《整式的乘法與因式分解》鞏固練習
      把加法變成乘法
      剪枝
      天津詩人(2017年2期)2017-03-16 03:09:39
      基于SDN與NFV的網(wǎng)絡(luò)切片架構(gòu)
      電信科學(2016年11期)2016-11-23 05:07:58
      腎穿刺組織冷凍切片技術(shù)的改進方法
      冰凍切片、快速石蠟切片在中樞神經(jīng)系統(tǒng)腫瘤診斷中的應(yīng)用價值比較
      什邡市| 德江县| 太康县| 慈溪市| 筠连县| 二手房| 民和| 论坛| 宣化县| 阿拉善盟| 永川市| 广元市| 普宁市| 西林县| 黄平县| 新竹市| 陇川县| 绥棱县| 行唐县| 鄂州市| 宁晋县| 鄯善县| 台南县| 井陉县| 贵德县| 墨玉县| 台州市| 肇庆市| 苍溪县| 尖扎县| 杭州市| 阿城市| 白山市| 家居| 唐河县| 贵溪市| 永泰县| 宣汉县| 锦州市| 措勤县| 邓州市|