999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的卷積神經網絡加速器動態余數處理映射模型*

2021-09-22 13:27:16趙小強姜晶菲許金偉
計算機工程與科學 2021年9期
關鍵詞:模型

趙小強,姜晶菲,許金偉,竇 勇

(國防科技大學計算機學院,湖南 長沙 410073)

1 引言

卷積神經網絡是一類包含卷積計算且具有深度結構的前饋神經網絡,通過權值共享減少網絡參數,通過卷積和降采樣獲得表征學習的能力。由于其優異的表征學習能力被廣泛應用于人工智能算法的特征提取。卷積神經網絡成為人工智能算法的主流,其在圖像分類[1,2]、目標識別[3 - 5]和視頻分析[6 - 8]等計算機視覺應用中均展現出了優良的效果。

隨著卷積神經網絡的廣泛應用,卷積神經網絡硬件加速器成為新的研究熱點。FPGA高性能、低功耗和可重構等優點使其成為實現卷積神經網絡加速器的高效平臺。目前基于FPGA實現的卷積神經網絡加速器,根據加速方法主要分為以下4類:第1類是通用矩陣乘法卷積神經網絡加速器[9 - 11],如Liu等[9]設計的2D/3D通用的可重構卷積神經網絡加速器;Ma等[10]設計的最大化資源利用率卷積神經網絡加速器。第2類是FFT卷積神經網絡加速器[12 - 14],如Zhang等[12]設計的采用FFT和OaA來減少卷積冗余計算,將頻域算法映射到基于OaA的高度并行的2D FFT卷積神經網絡加速器;Lin等[13]設計的嵌入式FFT的深度卷積神經網絡加速器。第3類是Winograd卷積神經網絡加速器[15 - 17],Winograd快速算法將特征映射到特定域來降低算法復雜度,如Lu等[15]設計的稀疏有效Winograd卷積神經網絡加速器;Wu等[16]設計的適應大步長卷積的Winograd卷積神經網絡加速器。第4類是算子定制卷積神經網絡加速器[18 - 20],如Liu等[18]設計的層間流水優化卷積神經網絡加速器;Kim等[19]設計的零值感知卷積神經網絡加速器。相比之下,通用矩陣乘法加速器將卷積轉化為矩陣乘直接進行計算,具有較好的通用性;FFT加速方法將空間域做卷積轉化為頻域做乘法,降低了算法復雜度,比較適用于卷積核尺寸較大的情況;Winograd加速方法通過線性映射使用加法運算替代乘法運算,降低了算法復雜度,主要適用于卷積核較小的情況;定制算子加速器根據算法特性優化體系架構充分挖掘算法并行性,具有很高的性能。這4類卷積神經網絡加速器體現了不同的設計思想,各有優勢,互為補充。整體來看,面向卷積神經網絡的加速器設計還有很大的探索空間,不同的設計理念使設計者采用不同的加速方法。本文采用將卷積計算轉化為通用矩陣乘法的加速方法,在不使用FFT和Winograd等快速卷積算法的情況下,對如何提高矩陣乘法計算性能進行探究。

基于FPGA實現的通用矩陣乘法卷積神經網絡加速器研究的重點和難點一方面在于提高乘累加計算陣列的利用率,以提高性能和資源利用率;另一方面在于增加通用矩陣乘法的靈活性,以擴展加速器的通用性。在卷積計算過程中,卷積的輸出通道數通常不是乘累加計算陣列行數的整數倍,因此產生的余數無法充分利用乘累加計算陣列,導致很大部分的乘累加計算資源處于空閑狀態。本文通過對不同卷積計算特點進行分析,得出可根據卷積輸出通道數除以乘累加計算陣列行數的余數,動態調整將卷積轉化為矩陣乘法的方法,充分提高乘累加計算陣列的利用率。

2 卷積轉化為矩陣乘法

將卷積計算轉化為矩陣乘法是FPGA上一種高效實現。如圖1所示,卷積層權值W的大小為m×c×k×k,輸入特征圖X的大小為c×h×w,W與X進行卷積運算得到輸出特征圖Y,Y的大小為m×h×w。其中,m為卷積層卷積核的輸出通道數,c為輸入特征圖通道數,k為卷積核大小,h為輸入與輸出特征圖高,w為輸入與輸出特征圖寬,卷積運算的矩陣乘法方法將權值W壓縮為權值矩陣,將特征圖X壓縮并重組為特征圖矩陣,將權值矩陣與特征圖矩陣進行矩陣乘法,得到輸出特征圖Y的展開形式即輸出特征圖矩陣,完成卷積運算。為了詳細展示映射過程,如圖1所示,大小為3×3的64×3卷積核被映射到大小為64×(3×3×3)的重排權值矩陣。將屬于同一輸出通道的3個卷積核水平地展開以形成一行權重矩陣。同時,尺寸為32×32的所有3個輸入通道都映射到尺寸為(3×3×3)×(32×32)的重排特征值矩陣。每個通道中由第1卷積窗口覆蓋的所有特征值都在垂直方向上拉伸展開,以形成特征矩陣的第1列。可以通過沿列和行方向在特征上滑動卷積窗口來生成整個特征矩陣。重新排列后,將卷積轉換為通用矩陣乘法。矩陣乘法的結果是尺寸為64×(32×32)的輸出矩陣,這是輸出特征值矩陣。請注意,特征值矩陣中特征值的數量是輸入特征中特征值數量的k×k倍,因為在將卷積窗口跨特征值滑動時,每個特征值都被卷積窗口覆蓋了k×k次,因此復制了k×k次。

Figure 1 Mapping convolutions to matrix multiplication operations圖1 將卷積映射到矩陣乘法運算

將卷積轉化為矩陣乘法計算后,從圖1可以看出,權值矩陣的高為卷積層卷積核的輸出通道數,在乘累加計算陣列充足的情況下,輸出通道數決定了矩陣乘法的并行度。在卷積神經網絡中,不同卷積層輸出通道數變化很大,如典型的AlexNet卷積神經網絡5層卷積層的輸出通道數分別是96,256,384,384,256,VGG16中13層卷積層中輸出通道數分別為64,64,128,128,256,256,256,512,512,512,512,512,512。當為這2種卷積神經網絡設計的乘累加計算陣列行×高為256×32時,由于輸出通道和乘累加計算陣列之間余數的存在,AlexNet和VGG16分別會有3層與4層卷積計算無法充分利用乘累加計算單元陣列。為了解決這個問題,本文將根據卷積計算的特點,提出一種動態余數處理映射模型,以提高乘累加陣列的利用率。

3 動態余數處理映射模型

由于卷積計算輸出通道數和乘累加計算陣列的行數之間余數的存在,往往導致無法充分利用乘累加計算單元陣列,造成了計算資源的浪費。下面將分析卷積計算的特點,充分挖掘滑動窗口的復用性,提出動態余數處理映射模型來提高產生余數情況下矩陣乘法的并行度。

3.1 卷積計算特點

卷積計算是一個包含7層循環和復雜數據復用的過程。數據復用包括特征值復用、滑動窗口數據復用、權值復用和輸出特征值復用,其中滑動窗口復用指的是滑動窗口覆蓋的特征值復用。如圖2所示,指的是一個輸入特征為5×5,卷積核為3×3,步長為1,填充為0的卷積計算過程。圖2a為滑動窗口在第1行的初始狀態,陰影部分為此時滑動窗口覆蓋的特征值;圖2b為滑動窗口滑動到第2行的初始狀態,陰影部分為此時滑動窗口覆蓋的特征值;圖2c為滑動窗口滑動到第3行的初始狀態,陰影部分為此時滑動窗口覆蓋的特征值。從前3個子圖觀察到3個滑動窗口覆蓋的特征值有重疊部分,即在滑動窗口行方向上存在特征值的復用,圖2d表示的是滑動窗口滑完整個輸入特征值時在行方向上的特征值復用。白色方塊部分的復用性為1,表明此行數據在滑動窗口行方向上僅使用1次,灰色方塊部分復用性為2,表明此行數據在滑動窗口行方向上使用2次;黑色方塊部分復用性為3,表明此行數據在滑動窗口行方向上使用3次。滑動窗口行方向的最多復用次數是由卷積核大小決定的,每行的復用次數是由該行在特征值中的位置決定的,比如當圖2中輸入特征值大小為224×224時,第1行與第224行的行復用性為1,第2行與第223行的行復用性為2,剩下的從第3行到第222行的行復用性均為3。

Figure 2 Sliding window reuse in convolution calculation圖2 卷積計算中的滑動窗口復用

3.2 動態余數處理映射模型加速器邏輯設計

在分析完滑動窗口復用性后發現,可以對卷積轉化為矩陣乘法的映射方法進行優化,在輸出通道數和乘累加計算陣列之間產生余數時,利用滑動窗口行方向的復用性,提高矩陣乘法的并行度。為此本文設計了定制的動態余數處理映射模型,圖3為帶有動態余數處理映射模型的加速器邏輯結構。

Figure 3 Accelerator logic structure with dynamic remainder processing mapping model圖3 帶有動態余數處理映射模型加速器邏輯結構

加速器由控制模塊、特征值緩沖、權值緩沖、特征矩陣先入先出FIFO(First Input First Output)緩沖、權值矩陣FIFO緩沖、乘累加計算MAC(Multiply ACcumulate) 陣列、輸出緩沖和特征值映射模型組成。控制模塊根據功能信號的變化控制整個加速器的數據流動;特征值緩沖用于緩存特征值;特征值映射模型用于將特征值緩沖中的特征值映射到特征矩陣FIFO緩沖中;權值映射模型與權值緩沖、權值矩陣FIFO緩沖相連,用于將權值由權值緩沖映射到權值矩陣FIFO緩沖中;權值緩沖用于緩存權值;特征矩陣FIFO緩沖用于緩存經過特征值映射模型處理后的特征值;權值矩陣FIFO緩沖用于緩存從權值緩沖傳輸的權值;乘累加計算陣列用于接收從特征矩陣FIFO緩沖和權值矩陣FIFO緩沖傳來的特征值和權值,完成卷積運算;輸出映射模型與MAC陣列、輸出緩沖相連,用于控制MAC陣列計算的卷積結果映射到輸出緩沖的方式;輸出緩沖用于存儲從乘累加計算陣列輸出的卷積計算結果。圖3中MAC陣列的規模為mr×mc,mr與mc分別為行寬和列高,下標r,c代表行和列方向,對應的特征值緩沖大小為mc+2*pody,2*pody為在列方向的填充數量。

3.3 動態余數處理映射模型提高并行度分析

卷積滑動窗口存在復用性,當輸出通道數和乘累加陣列行數產生余數時,可通過復用卷積滑動窗口行方向的數據復用,提高矩陣乘法的并行度。設卷積核行寬和列高相同時都用k表示,不同時用kx表示行寬,ky表示列高。卷積層輸出通道數和乘累加陣列行數產生的余數為R,通過動態余數處理映射模型可提高矩陣乘法的并行度n,則并行度可由式(1)得出:

(1)

3.4 特征值映射模型

如圖3所示,特征值映射模型與特征值緩沖、特征矩陣FIFO緩沖相連,用于將2*pady+mc個特征值緩沖中的特征值映射到mc個特征矩陣FIFO中。

特征值映射模型根據滑動窗口的復用性,動態生成特征值矩陣,具體步驟如算法1所示。

算法1動態生成特征值矩陣Xm

輸入:X。

輸出:Xm(Xm為X的矩陣形式)。

1.按照〈列-輸入通道-行〉的順序加載特征值,存儲到2*pady+mc個特征值緩沖中;

2.fori<特征值的行數Ix,i++

3.forj<輸入通道數Ic,j++

4.fort< 特征值的列數Iy,t++

5.do分塊存儲到2*pady+mc個特征值緩沖中

6.endfor

7.endfor

8.endfor

9. 將特征值緩中的特征值映射到特征值FIFO中;

10.fori< 卷積核kx+卷積步長s,i++

11.forj< 卷積核ky,j++

12.fort

13.do存儲到第t個FIFO中;

14.endfor

15.endfor

16. 得到特征值矩陣Xm;

17.endfor

18. 特征值按照余數執行并行度進入乘累加計算陣列計算;

19.ifn= = 1

20.并行進入mr行乘累加計算陣列

21.elseifn> 1

22.間隔ky×Ic拍,按照流水方式進入n×R行乘累加計算陣列

23.endif

3.5 權值映射模型

如圖3所示,權值映射模型與權值緩沖、權值矩陣FIFO緩沖相連,用于將權值由權值緩沖映射到權值矩陣FIFO緩沖中。

權值映射模型根據滑動窗口的復用性,動態生成權值矩陣,具體步驟如算法2所示。

算法2動態生成權值矩陣Wm

輸入:W。

輸出:Wm(Wm是W的矩陣形式)。

1.按照〈列-輸入通道-行-輸出通道〉的順序加載權值,存儲到mr個特征值緩沖中;

2.fori< 輸出通道數Oc,i++

3.forj< 卷積核行寬kx,j++

4.fort<輸入通道數Ic,t++

5.forq< 卷積核列寬ky,q++

6.do存儲到第Oc%mr個權值緩沖中

7.endfor

8.endfor

9.endfor

10.endfor

11.將權值緩中的權值映射到權值FIFO中;

12.ifn= = 1

13.fori

14.do存儲到第Oc%mr個權值FIFO中

15.endfor

16.elseifn> 1

17.forj

18.fort

19.do存儲到第(Oc+t)%mr個權值FIFO中

20.endfor

21.endfor

22. 得到權值矩陣Wm;

23.endif

24.權值按照余數執行并行度n進入乘累加計算陣列計算;

25.ifn==1

26.并行進入mr行乘累加計算陣列

27.elseifn> 1

28.間隔ky×Ic拍,按照流水方式進入n×R行乘累加計算陣列

29.endif

3.6 輸出映射模型

如圖3所示,輸出映射模型與乘累加計算陣列、mc個輸出緩沖相連,用于控制乘累加陣列計算的卷積結果映射到輸出緩沖的方式。輸出緩沖采用了Ping-Pong設置,一個緩沖矩陣乘積的同時另外一個緩沖將緩沖的數據寫回到片外存儲。

輸出映射模型根據并行度n決定卷積結果輸出方式,具體步驟如算法3所示。

算法3動態余數輸出映射算法

輸入:Yi,mc列的第i個卷積結果。

輸出:Y。

1.ifn= = 1

2.fori

3.do將第i個Yi并行存入第i個輸出緩沖中;

4.endfor

5.elseifn> 1

6.間隔ky×Ic拍,按照流水方式寫入第i個輸出緩沖中

7.endif

Figure 4 Heterogeneous processor architecture design圖4 異構處理器架構

4 實驗評估

本文在XILINX VC709 FPGA開發板上實現了一個異構處理系統來評估動態余數處理映射模型。VC709芯片具有的資源為3 600個DSP Slice,1 470個BRAM和433 200個LUT。如圖4所示,該異構系統包含一個RISC-V CPU和一個基于動態余數處理映射模型的推理加速器。RISC-V CPU和卷積神經網絡加速器通過指令總線連接。RISC-V CPU面向通用性,主要處理神經網絡中一些非線性激活、調整大小、計算殘差等,加速器主要加速計算復雜度占比高的卷積層。CPU和加速器以串行方式工作,為了在CPU和加速器之間交換數據,內存控制器DDR SDRAM通過分離的數據總線連接CPU和加速器。

實驗設計的加速器乘累加計算陣列大小是128×16,卷積計算的數據格式采用16位浮點數。權值緩沖為128個深度為2 048的片上BRAM,權值矩陣FIFO緩沖也為128個深度為2 048的片上BRAM,特征值緩沖為20個深度為2 048的片上BRAM,特征值矩陣FIFO緩沖為16個深度為2 048的片上BRAM,輸出緩沖采用Ping-Pong機制,為32個深度為512的片上BRAM。片上緩沖大小的設置可根據FPGA提供的片上存儲資源進行調整,為了使加速器能夠支持參數量巨大的網絡模型,本文借鑒了Liu等[9]的卷積層分割策略,在卷積層的輸入通道數過多或者卷積核比較大的情況下,將卷積層的輸入通道分為若干個較小的輸入通道,以滿足權值對存儲空間的需求。在完成所有較小卷積層計算后,通過逐元素累加獲得較大卷積層的結果。雖然卷積層分割后會使加速器的計算性能下降,但是保證了加速器的通用性,能夠更好地適應人工智能算法的變化。

4.1 硬件資源利用率

表1列出了加速器的硬件資源利用率,加速器消耗的DSP Slice數量為2 048,使用了將近57%的可用DSP Slice。加速器使用了542個BRAM,而這些BRAM不到可用BRAM的37%,RISC-V CPU使用了290個BRAM,這是由于RISC-V CPU中采用了大容量數據高速緩存和指令高速緩存,即使如此總共才使用了不到57%的BRAM。結果表明,本文設計的異構結構可以充分利用計算資源,而僅占用了很少的內存資源。

Table 1 Accelerator resource utilization表1 加速器資源利用

4.2 乘累加計算陣列利用率

實驗選擇VGG16卷積神經網絡模型進行測試,VGG16 包含的13層卷積層輸出通道分別為64,64,128,128,256,256,256,512,512,512,512,512,512。實驗將不使用動態余數處理映射模型和采用動態余數處理模型情況下卷積層的結果進行了對比,由于后面11層余數全為0,計算效果一樣,實驗選擇第3層作為代表,對比結果如表2所示。采用動態余數處理映射模型在余數為64的情況下,最大能夠100%利用乘累加陣列,而未采用動態余數處理映射模型時最大僅能使用50%的乘累加計算陣列,在余數為0的情況下,是否采用動態余數處理映射模型乘累加計算陣列最大利用率均為100%。由此可得出采用動態余數處理模型能夠更好地適應不同的卷積計算特點。

Table 2 Multiply-and-accumulate array utilization表2 乘累加計算陣列利用率

4.3 與其他平臺性能對比

表3中列出了VGG16網絡模型在CPU和FPGA上的運行結果對比。從吞吐率性能上看,本文設計的加速器比CPU稍低,比CPU低的主要原因是頻率比較低,另外加速器的數據緩沖容量較小也降低了吞吐量。相對于XILINX VC709[21]中的吞吐量有了4倍多的性能提升,雖然計算資源使用的DSP Slice數量是XILINX VC709[21]中的2倍多,但計算效率還是有很大的提升。主要是更加靈活的矩陣乘法使得乘累加計算陣列的利用率更高了,而且隨著乘累加計算陣列規模的擴大,本文的加速器計算效率優勢會更加明顯。從性能功耗比看,本文中的加速器達到了最優的4.08,分別是CPU和XILINX VC709[21]的5.6倍和3倍。

Table 3 Performance comparison表3 性能對比

5 結束語

本文從體系結構角度出發,通過FPGA實現了一個異構系統為人工智能算法提供高性能計算。加速器采用一種動態余數處理映射模型來處理輸出通道和乘累加計算陣列之間產生的余數問題,并通過實驗驗證了該映射模型的效率。實驗結果表明,該動態映射模型能夠極大地提高產生余數時乘累加資源利用率,達到了更高的吞吐率和能量效率。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 中文国产成人精品久久| 91精品视频网站| 国产精品私拍在线爆乳| 蝌蚪国产精品视频第一页| 久久亚洲高清国产| 亚洲成人精品| 国产成人av大片在线播放| 国产成人久久综合一区| a天堂视频| 亚洲成a∧人片在线观看无码| 国产成人精品一区二区| 亚洲欧美一区在线| 国产亚洲现在一区二区中文| 亚洲AV无码乱码在线观看代蜜桃| 人妻中文字幕无码久久一区| 国产精品青青| 2020极品精品国产| 亚洲国产精品成人久久综合影院| 一级毛片免费观看不卡视频| 激情六月丁香婷婷四房播| 国产一区二区三区在线观看视频 | 思思热精品在线8| 亚洲成A人V欧美综合| 国产成人精品男人的天堂下载| 欧美精品导航| 国产v精品成人免费视频71pao| 国产高清在线丝袜精品一区| 久久性视频| 久久大香伊蕉在人线观看热2| 丰满人妻被猛烈进入无码| 日韩人妻少妇一区二区| 亚州AV秘 一区二区三区| 视频在线观看一区二区| 精品成人一区二区三区电影| 久久精品无码国产一区二区三区| 老色鬼久久亚洲AV综合| 精品剧情v国产在线观看| 免费无码又爽又刺激高| 亚洲精品少妇熟女| 熟女视频91| 精品三级网站| 欧美成人日韩| 色偷偷男人的天堂亚洲av| 日韩高清欧美| 国产激情无码一区二区APP| 熟妇无码人妻| 看你懂的巨臀中文字幕一区二区| 国产精品久久久久久搜索| 成年女人a毛片免费视频| 久久伊人久久亚洲综合| 国产精品久久久久久久久| 亚洲天堂精品在线观看| 亚洲第一视频网| 丁香婷婷综合激情| 日韩视频免费| 色网站在线视频| 男女男精品视频| 精品午夜国产福利观看| 久久精品日日躁夜夜躁欧美| 一本大道视频精品人妻| 99精品伊人久久久大香线蕉| 亚洲日本在线免费观看| 波多野结衣的av一区二区三区| 少妇精品在线| 亚洲一区毛片| 日韩专区欧美| 毛片卡一卡二| 91亚洲精选| 综1合AV在线播放| 天堂成人av| 伊人AV天堂| 成年人国产网站| 亚洲高清免费在线观看| 亚洲成在人线av品善网好看| 国内精品免费| 精品久久高清| 国产尤物jk自慰制服喷水| 91精品国产自产91精品资源| 国产女人在线视频| 国产色伊人| 色爽网免费视频| a色毛片免费视频|