亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        混合精度頻域卷積神經(jīng)網(wǎng)絡FPGA 加速器設計

        2023-12-16 10:28:52劉博生徐永祺武繼剛
        計算機工程 2023年12期
        關鍵詞:加速器寄存器頻域

        陳 逸,劉博生,徐永祺,武繼剛

        (廣東工業(yè)大學 計算機學院,廣州 510006)

        0 概述

        卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)應用廣泛,在語音識別、計算機視覺和生物信息處理[1-3]等領域都有著出色的表現(xiàn)。針對卷積神經(jīng)網(wǎng)絡的硬件加速器設計是一個重要的研究方向,現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)因其在性能、實時性、價格等方面的優(yōu)勢[4],成為硬件加速器設計中的一個較好選擇。

        然而,目前應用廣泛的CNN 模型(如VGG、ResNet)普遍存在模型大、計算復雜度高的特點,為硬件部署帶來困難。文獻[5-7]提出應用低精度卷積神經(jīng)網(wǎng)絡(如8 bit CNN)有效降低模型大小,進而降低硬件上的內(nèi)存占用和帶寬需求。然而,低精度卷積神經(jīng)網(wǎng)絡存在數(shù)據(jù)表征能力弱的問題,會造成CNN 模型準確率下降。針對這一問題,文獻[8-10]提出了混合精度卷積神經(jīng)網(wǎng)絡,在模型準確率和模型大小之間做出了有效權衡。

        低精度和混合精度卷積神經(jīng)網(wǎng)絡可以顯著降低模型大小,但仍無法有效減少模型的計算量。對此,文獻[11-13]提出應用快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)快速算法,該算法可以將傳統(tǒng)的空間域卷積神經(jīng)網(wǎng)絡變換為頻域卷積神經(jīng)網(wǎng)絡,進而利用簡單的EWMM(Element-Wise Multiplication)操作替代傳統(tǒng)的滑動窗口卷積,有效降低計算復雜度。其中:文獻[11]采用16 bit fixed 數(shù)據(jù)類型并基于overlap-saved 頻域卷積方法實現(xiàn)了FPGA 加速器,取得了不錯的性能,但其模型仍存在內(nèi)存占用較大的問題;文獻[13]提出了一種頻域卷積神經(jīng)網(wǎng)絡的量化方案,包括8 bit 定點數(shù)據(jù)類型量化,并基于FPGA設計加速器進行了性能評估,但其量化后的精度類型位寬較少并且較為單一,對精度帶來較大影響。

        本文基于FPGA 設計8 bit 和16 bit 的混合精度頻域卷積神經(jīng)網(wǎng)絡加速器(稱為FHA),在兼顧模型準確率的同時,有效降低模型大小和計算復雜度。該加速器支持8 bit 和16 bit 頻域卷積運算的動態(tài)配置。此外,該加速器可在8 bit 頻域卷積運算中對一對頻域復數(shù)乘法進行打包以充分利用DSP,提升計算性能。本文首先設計一個基于DSP 的頻域計算單元,其支持8 bit 和16 bit 兩種頻域卷積運算,同時可打包一對8 bit 頻域乘法至DSP 以提升運算速度;然后,提出一個映射數(shù)據(jù)流,該數(shù)據(jù)流包含8 bit 和16 bit 兩種形式,可通過數(shù)據(jù)重用方式最大化減少冗余的數(shù)據(jù)處理和數(shù)據(jù)搬運操作。

        1 研究背景與動機

        1.1 頻域卷積基礎

        圖1 展示了基于overlap-saved 頻域卷積的主要過程。其中,i、o和w分別代表空間域的輸入激活值、輸出激活值和權重;ifft、offt和wfft分別代表頻域的輸入激活值、輸出激活值和權重。如圖1 所示,空間域中的輸入激活值和權重經(jīng)FFT 操作變換至頻域。在進行FFT 變換前,需要先在空間域的輸入特征圖上進行切片,即將該輸入特征圖分割為多個相互重疊的小塊,這些小塊將分別進行FFT 操作,并與頻域中的權重進行EWMM 操作,最終得到頻域輸出激活值offt。最后經(jīng)過快速傅里葉反變換(Inverse Fast Fourier Transform,IFFT)操作,可將頻域輸出offt恢復為空間域輸出o。在頻域卷積中,EWMM 操作所執(zhí)行的是復數(shù)乘法,如式(1)所示:

        圖1 頻域卷積過程Fig.1 Frequency-domain convolution process

        其中:wfft=wr+wi?j,wr和wi分別代表實部和虛部;同理,ifft=ir+ii?j;x、y和z是中間參數(shù),代表該復數(shù)乘法所包含的3 個實數(shù)乘法。

        1.2 DSP 內(nèi)部架構(gòu)

        圖2 展示了Xilinx FPGA Ultrascale 系列中DSP內(nèi)部的簡化架構(gòu)。具體來說,該DSP 主要包含一個預加法器(圖中以“+/-”表示,可執(zhí)行加法或減法操作)、一個乘法器(圖中以“×”表示)以及一個后加法器(圖中以“+”表示)。DSP 可通過控制信號來選擇執(zhí)行模式,如inmode 信號可控制預加法器執(zhí)行加法或減法操作;opmode 信號可控制后加法器的輸入,即選擇0 或輸入寄存器C[47:0]。

        圖2 DSP 內(nèi)部架構(gòu)Fig.2 Internal architecture of DSP

        1.3 研究動機

        本文設計的加速器同時支持8 bit 和16 bit 頻域卷積運算。在計算8 bit 頻域乘法時,輸入數(shù)據(jù)(8 bit)與DSP 固有的輸入帶寬(27 bit)相差較大,若不考慮優(yōu)化,DSP 一次執(zhí)行一個8 bit 頻域乘法運算,無疑會造成DSP 輸入帶寬的嚴重浪費(尚有70%的輸入帶寬未使用)。為充分利用DSP 的輸入帶寬,本文借鑒空間域中已有的數(shù)據(jù)打包策略[14-16],使一個DSP 可同時計算一對8 bit 頻域乘法。然而,空間域的打包策略僅適用空間域卷積計算模式,無法用于頻域卷積。因此,如何針對頻域卷積模式設計一種DSP 數(shù)據(jù)打包策略成為本文面臨的第1 個挑戰(zhàn)。其次,在設計過程中觀察到頻域卷積運算存在大量的可重用數(shù)據(jù),如何利用該特點減少冗余的數(shù)據(jù)處理和數(shù)據(jù)搬運操作為本文面臨的第2 個挑戰(zhàn)。

        為解決第1 個挑戰(zhàn),本文設計了基于DSP 的頻域計算單元,當加速器計算8 bit 頻域卷積時,該單元可打包一對頻域乘法至DSP 以提升吞吐率。需要注意的是,位于打包結(jié)果較低比特位的有符號數(shù)在DSP 運算過程中會被識別為無符號數(shù),導致輸出結(jié)果不正確。本文通過在DSP 的輸入寄存器C[47:0]中放置偏移值,以此修正最后的運算結(jié)果,并提供了生成寄存器C 中偏移值的算法。當計算16 bit 頻域卷積時,頻域計算單元不執(zhí)行打包操作,可直接執(zhí)行頻域乘法運算。

        為解決第2 個挑戰(zhàn),本文充分利用頻域卷積中的數(shù)據(jù)重用特性?;趫D1 和式(1),本文發(fā)現(xiàn)3 種頻域輸入數(shù)據(jù)可重用形式:1)圖1 中不同輸出通道的權重wfft可重用同一個切片上的輸入激活值ifft;2)圖1 中不同切片(如T1和T2)的輸入激活值ifft可重用同一輸出通道的權重wfft;3)式(1)中存在可重用數(shù)據(jù),如y和z的計算中,ir和ii是重復出現(xiàn)的?;谝陨? 種形式,本文設計一個能夠充分利用數(shù)據(jù)重用特性的映射數(shù)據(jù)流,以此減少冗余的數(shù)據(jù)處理和數(shù)據(jù)搬運操作。

        2 加速器設計

        本節(jié)闡述所提出的8 bit 和16 bit 混合精度頻域卷積神經(jīng)網(wǎng)絡加速器FHA,同時介紹加速器內(nèi)部相關模塊的設計以及所提出的映射數(shù)據(jù)流。

        2.1 FHA 架構(gòu)

        圖3 為所提出的FHA 加速器架構(gòu)。FHA 主要包含4 個模塊:片上緩存模塊,快速傅里葉(反)變換(FFT/IFFT)模塊,控制(Ctroller,Ctrl)模塊,頻域處理單 元(Frequency-domain Processing Element,F(xiàn)PE)模塊。

        圖3 FHA 加速器架構(gòu)Fig.3 FHA accelerator architecture

        在圖3 中,片上緩存模塊包括全局激活值緩存(Global Activiation Buffer,GAB)、全局權重緩存(Global Weight Buffer,GWB)和局部緩存(Local Buffer,LB)。GAB 存儲來自外部存儲器(Memmory,Mem)的輸入激活值和經(jīng)IFFT 模塊變換后的輸出激活值。GWB 存儲來自外部存儲器的復數(shù)權重。LB暫存經(jīng)FFT 模塊變換后的復數(shù)輸入激活值。FFT/IFFT 模塊將激活值在空間域和頻域之間進行轉(zhuǎn)換。FPE 模塊是一個頻域計算單元,可完成8 bit和16 bit的頻域乘法運算。FPE模塊由4個部分組成,分別為數(shù)據(jù)處理(Data Process,DP)模塊、DSP、累加(Accumulator,Acc)模塊和數(shù)據(jù)恢復(Recover,Rec)模塊。DP 模塊可以根據(jù)頻域卷積模式(8 bit 或16 bit),將數(shù)據(jù)填充至DSP 的輸入寄存器。特別地,對于8 bit 頻域卷積,DP 模塊可將一對頻域乘法打包至一個DSP 中進行運算。DSP 用于執(zhí)行頻域復數(shù)乘法。Rec模塊用于恢復復數(shù)輸出激活值的實部和虛部。緩存映射網(wǎng)絡(Buffer Mapping Net,BMN)模塊主要用于輸入數(shù)據(jù)到局部緩存LB 的有序映射。Ctrl模塊為中央控制器,用于控制所有模塊正確有序工作。

        為進一步說明每個模塊的作用,圖4 展示了加速器FHA 的運轉(zhuǎn)過程。第①步,從片外存儲器Mem分別將權重和輸入激活值搬運至GWB 和GAB 模塊。需要注意的是,權重已在片外完成離線FFT 變換,因此存儲于GWB 模塊的是頻域權重;而GAB 模塊存儲的是未經(jīng)變換的空間域激活值。第②步,GAB 模塊中的空間域激活值進入FFT/IFFT 模塊執(zhí)行FFT 變換,得到頻域激活值。第③步,GWB 模塊中存儲的頻域權重和經(jīng)FFT 變換后的頻域激活值一同進入FPE 中的BMN、LB 和DP 模塊,分別完成數(shù)據(jù)路由、數(shù)據(jù)暫存和數(shù)據(jù)打包操作,打包結(jié)果將被送至FPE 進行計算。第④步,F(xiàn)PE 中的DSP 和Acc 模塊執(zhí)行頻域乘法和通道累加操作。第⑤步,Acc 模塊輸出的數(shù)據(jù)進入Rec 模塊,恢復頻域輸出激活值。第⑥步,頻域輸出激活值進入FFT/IFFT 模塊并執(zhí)行IFFT 變換。第⑦步,F(xiàn)FT/IFFT 模塊輸出空間域激活值至GAB 模塊。第⑧步,GAB 模塊將空間域輸出激活值存至片外存儲器Mem 中。以上每一步驟均接受來自Ctrl 模塊的控制和調(diào)度。至此,加速器FHA完成基于打包輸入的復數(shù)乘加計算流程。

        圖4 FHA 加速器運轉(zhuǎn)過程Fig.4 FHA accelerator operation process

        圖5 描述BMN 模塊和FPE 中的DP 模塊。在圖5 中,BMN 模塊可將輸入數(shù)據(jù)路由至局部緩存LB的有序位置,從而使DP 模塊在8 bit 和16 bit 模式下對LB 的訪存方式統(tǒng)一。如圖5(a)所示:對于8 bit 頻域卷積,輸入數(shù)據(jù)ir1、ii1、ir2、ii2經(jīng)過BMN 模塊后,將在局部緩存中以圖示1~4 的位置按序存放。如圖5(b)所示:對于16 bit 頻域卷積,輸入數(shù)據(jù)ir1的高有效字節(jié)ir1[15:8]存放在位置1,低有效字節(jié)ir1[7:0]存放在位置3;輸入數(shù)據(jù)ii1的高有效字節(jié)ii1[15:8]存放在位置2,低有效字節(jié)ii1[7:0]存放在位置4。之后在DP模塊中,無論8 bit 或16 bit 頻域卷積模式,寄存器A均從位置1 和3 處取值,寄存器D 均從位置2 和4 處取值,從而實現(xiàn)訪存方式統(tǒng)一。DP 模塊用于將輸入數(shù)據(jù)填充至DSP 的輸入寄存器A 和D 中,在8 bit 和16 bit 兩種模式下有不同的填充方式,如圖5(a)和圖5(b)所示。

        圖5 BMN 模塊與DP 模塊Fig.5 BMN module and DP module

        2.2 FPE 數(shù)據(jù)路徑

        如圖6 所示,基于式(1)所示的復數(shù)乘法,以wi1?(ir1+ii1)和wi1?(ir2+ii2)為例,描述了FPE 的數(shù)據(jù)路徑。由于FPE 可計算8 bit 和16 bit 兩種模式的頻域乘法,因此圖6 所展示的數(shù)據(jù)路徑有兩個。對于每種計算模式,F(xiàn)PE 均需完成6 個階段(j~j+5)的操作。階段j為DSP 輸入數(shù)據(jù)的準備階段,對于8 bit 頻域卷積,兩個8 bit 數(shù)據(jù)將打包在寄存器A 或D 中,ir1和ir2打包于寄存器A,ii1和ii2打包于寄存器D;對于16 bit 計算模式,單個16 bit 數(shù)據(jù)直接放置于寄存器A 或D 中,如ir1置于寄存器A,ii1置于寄存器D。在階段j+1 和j+2 中,依次執(zhí)行加/減法操作和乘法操作。對于8 bit頻域卷積,DSP 中可同時計算一對頻域乘法。由于在8 bit 頻域乘法運算中,位于寄存器A 和D 較低字節(jié)的有符號數(shù)ir2和ii2會被DSP 識別為無符號數(shù),因此可能造成后續(xù)結(jié)果不正確。為解決這一問題,本文在階段j+3 中通過加上偏移值以修正乘法結(jié)果,該偏移值存儲在DSP 的輸入寄存器C 中。寄存器C 中偏移值的計算將在2.3 節(jié)具體闡述。對于16 bit 頻域卷積,寄存器C 不必使用,在階段j+3 中始終加零。在階段j+4 和j+5,F(xiàn)PE 能夠在輸入通道方向累加乘法結(jié)果,最后在Rec 模塊中恢復出最終的復數(shù)輸出激活值。Rec 模塊的具體細節(jié)如圖6 最右側(cè)所示,x、y、z為式(1)中的中間參數(shù),復數(shù)輸出的實部可由x+y得出,虛部可由x+z得出。

        圖6 FPE 數(shù)據(jù)路徑Fig.6 Data path of FPE

        2.3 乘法結(jié)果修正

        算法1 描述了如何生成寄存器C 中的偏移值以修正乘法結(jié)果的低位項,本節(jié)結(jié)合理論分析,具體闡述該算法。

        算法1DSP 中寄存器C 的數(shù)值生成

        輸入Al,Dl,B,inmode//Al和Dl分別為DSP 中寄存器A和D 打包后的較低字節(jié),B為DSP 中寄存器B 的值,inmode 為DSP 預加法器的控制信號

        設Al和Dl分別為DSP 中寄存 器A 和D 打包后的較低字節(jié),B為DSP 中寄存器B 的值。C為寄存器C中存儲的偏移值。inmode 為DSP 中預加法器的控制信號,可控制寄存器A 和D 執(zhí)行加法或減法運算。由于Al和Dl為8 bit有符號整數(shù),因此其值可表示為:

        其中:a7和d7分別為Al和Dl的 符號位分別為Al和Dl數(shù)值位部分的值。則(Al±Dl)?B可表示為:

        由于Al和Dl分別位于寄存器A 和D 的較低字節(jié),在進行(Al±Dl)?B運算時被解讀為無符號數(shù),不妨設Al和Dl所對應的無符號數(shù)分別為的值可表示為:

        由式(2)和式(4)可知,實際結(jié)果與正確結(jié)果間存在偏移值C,即:

        當inmode為“+”時(表示Al和Dl之間執(zhí)行加法操作),C=-(a7+d7)?B?28存在3種取值情況:1)當Al和Dl均為負時(a7=1,d7=1),C=-B?29;2)當Al和Dl一個為負而另一個非負時(a7=1,d7=0 或a7=0,d7=1),C=-B?28;3)當Al和Dl均非負時(a7=0,d7=0),乘法結(jié)果無需修正,C=0。如算法1 第1~7 行所示。

        當inmode為“-”時(表示Al和Dl之間執(zhí)行減法操作),C=-(a7-d7)?B?28也存在3 種取值情況:1)當Al為負而Dl非負時(a7=1,d7=0),C=-B?28;2)當Al非負而Dl為負時(a7=0,d7=1),C=B?28;3)當Al和Dl同號時(a7=0,d7=0 或a7=1,d7=1),乘法結(jié)果無需修正,C=0。如算法1 第8~14 行所示。

        2.4 映射數(shù)據(jù)流

        圖7 基于FPE 描述本文所提加速器FHA 的映射數(shù)據(jù)流。

        圖7 映射數(shù)據(jù)流Fig.7 Mapping dataflow

        圖7(a)和圖7(b)給出了頻域卷積的一個實例。在該實例中,輸出通道M=2,輸入通道c=2,ifft和offt分別為頻域中的輸入激活值和輸出激活值,ifft的尺寸為3(H=W=3),wfft的尺寸為2(H'=W'=2)。A1、A2、W1和W2均為復數(shù),在本例中,分別代表了W1的實部和虛部。圖7(b)展示了頻域卷積過程中所需的一組復數(shù)乘法運算,其中序號次序代表乘法的計算順序。需要注意的是,對于8 bit 頻域卷積運算,具有相同序號的一對頻域乘法將打包至一個DSP 中進行計算。

        圖7(c)描述了8 bit 頻域卷積模式的映射數(shù)據(jù)流。在圖7(b)所示的一組頻域乘法中,出現(xiàn)頻率最高,因此將與之相關的乘法式按順序執(zhí)行(即①~④)以最大化數(shù)據(jù)重用。例如,在cycle 0,首先打包{ir1,ir2}至寄存器A,打包{ii1,ii2}至寄存器D,而在接下來的cycle 1~3,DSP 可重用cycle 0 中的打包數(shù)據(jù)。觀察DSP 的第一個加減法器,其在cycle 0 和cycle 1 生成相同的加法結(jié)果,在cycle 2 和cycle 3 生成相同的減法結(jié)果,因此該加減法器可跳過cycle 1 和cycle 3 的執(zhí)行周期,以重用上一周期得到的運算結(jié)果。同理,對于第⑤對和第⑥對頻域乘法式,可進行相同的數(shù)據(jù)重用操作,即cycle 4中的打包結(jié)果{wr1,wr2}和{wi1,wi2}可在cycle 5 中被重用,并且在cycle 6 中加減法器可跳過執(zhí)行以重用cycle 5 的減法運算結(jié)果。

        圖7(d)描述了16 bit 頻域卷積模式的映射數(shù)據(jù)流。由于DSP 寄存器的位寬限制,16 bit 的輸入數(shù)據(jù)沒有采用打包策略,DSP 在每一個周期中僅計算一個頻域乘法。值得一提的是,數(shù)據(jù)重用特征在16 bit 映射數(shù)據(jù)流中仍存在。例如,cycle 1~3 中的計算可重用cycle 0 的輸入數(shù)據(jù)ir1和ii1。FPE 中加減法器產(chǎn)生的中間結(jié)果同樣可以被重用,如在cycle 1 和cycle 3,加減法器均可重用上一周期的執(zhí)行結(jié)果,從而跳過該執(zhí)行周期。

        從上文對于映射數(shù)據(jù)流的描述可知,數(shù)據(jù)重用源于兩個方面:

        1)來自不同切片(如T1和T2)的輸入激活值ifft可被不同輸出通道的復數(shù)權重所重用。例如,對于8 bit 頻域卷積,在cycle 0 中打包好的復數(shù)輸入激活值{ir1,ir2}和{ii1,ii2}可以在cycle 1 中被另一權重W2的虛部wi2所重用;此外,通過配置DSP 加減法器的控制信號inmode,該打包數(shù)據(jù)同樣可以在cycle 2 為權重W1的實部wr1所重用。對于16 bit 頻域卷積也存在相同的情況,如圖7(d)所示,cycle 0 中復數(shù)輸入激活值A1的實部ir1和虛部ii1可以在cycle 1~3 中分別被wi2、wr1、wr2所重用。

        2)來自不同輸出通道的復數(shù)權重wfft可以被不同切片的復數(shù)輸入激活值所重用。例如,對于8 bit頻域卷積,在cycle 4 中打包好的復數(shù)權重{wr1,wr2}和{wi1,wi2}可以在cycle 5 中被另一輸入激活值A2的虛部ii2所重用。除上述情形外,F(xiàn)PE 第二個階段(stagej+1)生成的中間結(jié)果也可以被重用,從而減少能耗開銷。

        圖8 展示了映射數(shù)據(jù)流數(shù)據(jù)重用的效果,分別從訪存量和能耗兩個方面進行評估。在圖8 中,折線展示了歸一化的訪存量。可以發(fā)現(xiàn),對于ResNet-18和VGG16 模型,數(shù)據(jù)重用相比無數(shù)據(jù)重用分別減少了33%和36%的訪存量。柱狀圖展示了在數(shù)據(jù)重用和無數(shù)據(jù)重用情形下加速器的能耗。可以發(fā)現(xiàn),數(shù)據(jù)重用相比無數(shù)據(jù)重用具備更低的能耗,如在ResNet-18 中利用數(shù)據(jù)重用相比無數(shù)據(jù)重用情形可以降低10%的能耗。因此,考慮了數(shù)據(jù)重用的映射數(shù)據(jù)流能夠降低訪存量和加速器能耗。

        圖8 映射數(shù)據(jù)流數(shù)據(jù)重用效果Fig.8 Data reuse effects of mapping dataflow

        3 實驗

        3.1 實驗設置

        本文基于Xilinx Ultra96-V2 FPGA[17]進 行評估。Ultra96-V2 的數(shù)字信號處理塊為DSP48E2,由一個27 位預加法器、27×18 位乘法器、48 位算術邏輯單元(ALU)和48 位累加器所組成。本文基于ImageNet 數(shù)據(jù)集[18-19]和兩個具有代表性的CNN 模型(ResNet-18[20]和VGG16[21])對所提FPGA 加速器進行評估。其中,ImageNet 數(shù)據(jù)集為當前最經(jīng)典和分類齊全的數(shù)據(jù)庫之一,廣泛應用于CNN 加速器設計領域(包括本文所對比的相關加速器)。ResNet-18 和VGG16 均為當前流行的CNN 模型,本文將它們作為所設計加速器的測試基準。文獻[22-23]表明CNN 模型的第一層和最后一層卷積層對模型的影響最大,因此本文對這兩個卷積層設置為16 bit fixed,其他卷積層則設置為8 bit fixed,如表1 中的方案5 所示。為進一步探索卷積層數(shù)據(jù)精度變化對CNN 模型算法性能的影響,本文給出了其他4 種方案的精度配置,如表1 中的方案1~4 所示。其中,方案1 為各卷積層均設置為8 bit fixed,方案2 為各卷積層均設置為16 bit fixed,方案3 和4 為第一層或最后一層卷積層為16 bit fixed 且其他卷積層為8 bit fixed。本文在下文對表1 中5 種方案的模型準確率進行了比較,深入分析卷積層數(shù)據(jù)精度變化對CNN 模型準確率的影響,并進一步驗證方案5 的合理性。本文的設計平臺為Xilinx Vivado v2018.3 套件,首先基于Vivado HLS 對ResNet-18 和VGG16 進行模型實現(xiàn)和硬件優(yōu)化,并基于Vivado 完成所設計加速器的硬件綜合實現(xiàn)。表2 為本文加速器的硬件配置。

        表1 各卷積層的數(shù)據(jù)精度配置Table 1 Data precision configuration for each convolutional layer

        表2 FHA 的硬件配置Table 2 Hardware configuration of FHA

        本文從3 個角度出發(fā)評估所提出的加速器:

        1)本文與當前最先進的基于FPGA 的8 bit 空間域卷積神經(jīng)網(wǎng)絡加速器[14]進行了比較。文獻[14]將空間域中兩個8 bit 的乘累加操作打包在一個DSP 塊中以提高吞吐量。

        2)由于目前還未出現(xiàn)基于FPGA 的混合精度頻域卷積神經(jīng)網(wǎng)絡加速器,本文通過與當前最具代表性的基于FPGA 的頻域卷積神經(jīng)網(wǎng)絡加速器[11,24-25]進行比較,以此來評估本文所提出的加速器架構(gòu)FHA。其中:文獻[11]基于overlap-saved 方法實現(xiàn)頻域FPGA 加速器并取得了不錯的性能;文獻[24]利用高度的數(shù)據(jù)并行和任務并行來提升頻域卷積計算的吞吐率;文獻[25]在3 種硬件平臺上實現(xiàn)了基于overlap-add 方法的頻域加速器。

        3)為了進行更全面的評估,本文對所提加速器以3 種形態(tài)進行實現(xiàn),并比較不同形態(tài)間的性能差異:(1)本文所提加速器中的FPE 模塊以LUT 資源進行實現(xiàn),此時對于8 bit 頻域卷積而言沒有數(shù)據(jù)打包操作,用FHA-lut 表示;(2)FPE 模塊以DSP 資源進行實現(xiàn),但是在8 bit 頻域卷積中不對輸入數(shù)據(jù)進行打包,用FHA-dsp-basis 表示;(3)FPE 模塊以DSP 資源進行實現(xiàn),且在8 bit 頻域卷積中將一對頻域乘法進行打包以提高吞吐能力,用FHA 表示。

        3.2 結(jié)果分析

        表3 將FHA 與具有代表性的基于FPGA 的空間域和頻域卷積神經(jīng)網(wǎng)絡加速器進行了比較,其中,性能指標為GOP,能效比為GOP 與能耗的比值,資源效率為GOP 與乘法數(shù)的比值。

        表3 加速性能比較Table 3 Comparison of acceleration performance

        與文獻[14]的空間域加速器方案對比,本文加速器的性能僅為其10%,但所用到的乘法數(shù)相比其卻有大幅減少,這表明本文的加速器能夠達到更高的資源效率(1.9 倍)。FHA 較高的資源效率來自于頻域計算復雜度的降低。

        與文獻[11,24-25]的頻域加速器方法相比,F(xiàn)HA 的能效比是它們的1.2~6.0 倍。能效比的提升來自于3 個方面:1)FHA 中的FPE 模塊能夠打包8 bit 頻域乘法以提高吞吐量,同時能夠節(jié)省內(nèi)存訪問和計算開銷;2)FHA 可以重用DSP 輸入寄存器中的數(shù)據(jù)以節(jié)省能耗開銷;3)FHA 可以重用中間計算結(jié)果,從而減少DSP 加減法器部件的能耗。

        表4 展示了本文所提加速器3 種不同形態(tài)的性能比較??梢园l(fā)現(xiàn):

        表4 3 種不同形態(tài)加速器的比較Table 4 Comparison of three different forms of accelerators

        1)8 bit 頻域卷積中的DSP 打包操作可提高能效比,能效比的提高來自于更高的吞吐量和更低的功耗。例如,與FHA-lut 相比,F(xiàn)HA 在ResNet-18 和VGG16 模型的推斷上分別達到了原來能效比的1.8和2.2倍。

        2)與FHA-dsp-basis 相比,F(xiàn)HA 的LUT 資源使用率有所增加,在ResNet-18 和VGG16 上分別增加了10.45 和12.52 個百分點,這主要來源于FHA 中的數(shù)據(jù)處理操作,如對8 bit 頻域乘法的打包。然而多余的資源開銷帶來的效果是顯著的,如與FHA-dspbasis 相比,F(xiàn)HA 在ResNet-18 和VGG16 模型的推斷上可分別達到1.6 和1.9 倍的性能提升。同時多余的LUT 資源開銷可平衡FPGA 的資源使用。

        3)面對相同的計算規(guī)模,DSP 資源比LUT 資源具有更低的功耗。例如,與FHA-lut相比,F(xiàn)HA-dsp-basis具有更低的功耗,在ResNet-18 和VGG16 上分別降低0.479 和0.552 W。

        圖9 展示了3 種不同形態(tài)加速器的功耗分解??梢园l(fā)現(xiàn)對片外存儲器的訪問占據(jù)總功耗的較大部分,在FHA-lut、FHA-dsp-basis 和FHA 中分別占據(jù)了45.4%、54.4%和53.5%。因此,利用8 bit 和16 bit 混合精度頻域卷積來減少內(nèi)存占用,進而降低加速器的能耗開銷是很有必要的。

        圖9 3 種不同形態(tài)加速器的功耗分解Fig.9 Power breakdown of three different forms of accelerators

        由于在8 bit 和16 bit 混合精度頻域卷積中,低精度卷積運算部分會導致CNN 模型的準確率下降,因此本文進一步評估了模型的準確率性能,如圖10 所示,其中展示了ResNet-18 和VGG16 模型準確率隨訓練迭代數(shù)變化的曲線??梢园l(fā)現(xiàn),與全精度的空間域CNN 模型和頻域CNN 模型相比,混合精度頻域CNN 模型可以在訓練中實現(xiàn)相似的準確率變化趨勢。與傳統(tǒng)空間域的CNN 模型相比,混合精度頻域CNN 模型能夠達到可觀的準確率。例如:在ResNet-18 的訓練中,混合精度頻域CNN 模型能夠達到與全精度空間域CNN 模型相同的準確率;在VGG16 的訓練中,混合精度頻域CNN 模型相比全精度空間域CNN 模型僅有1.7%的精度損失。微小的準確率下降主要來自低精度數(shù)據(jù)表征能力的減弱,但低精度數(shù)據(jù)位寬的減少也降低了硬件的內(nèi)存需求和計算資源開銷。

        圖10 模型準確率隨訓練迭代的變化趨勢Fig.10 Change trend of model accuracy with training iterations

        在表5 中,列出了ResNet-18 和VGG16 模型在表1 中5 種不同數(shù)據(jù)精度配置方案下的準確率。對于ResNet-18 模型,方案5 的準確率與方案2 相同,這得益于ResNet-18 的殘差網(wǎng)絡結(jié)構(gòu)和較少的網(wǎng)絡層數(shù);且方案5 的準確率相比方案1 有1.3 倍的提升,相比方案3、4 分別有1.03 和0.83 倍的提升。對于VGG16 模型,方案5 的準確率相比方案2 有1.2%的下降,相比方案1 有1.3 倍的提升,相比方案3 和4 分別有1.03 和0.83 倍的提升。雖然VGG16 模型在方案5 的準確率相比方案2 有微小下降,但由于方案5 只有第一層和最后一層卷積層的精度為16 bit fixed,因此能夠有效降低模型大小,同時8 bit頻域卷積可在DSP 中進行數(shù)據(jù)打包,進一步加快了模型推理速度。對于ResNet-18和VGG16 模型,方案5 相比于方案1、3、4 有更高的準確率,進一步驗證了本文依據(jù)文獻[22-23]將第一層和最后一層卷積層設置為16 bit fixed 的合理性。

        表5 不同數(shù)據(jù)精度配置方案下的模型準確率Table 5 Models accuracy under different data precision configuration schemes %

        4 結(jié)束語

        本文設計了基于FPGA 的8 bit 和16 bit 混合精度頻域卷積神經(jīng)網(wǎng)絡硬件加速器,該加速器能夠動態(tài)配置8 bit 和16 bit 的頻域卷積模式,同時能夠打包8 bit 頻域乘法至DSP 以提高吞吐量。本文利用頻域數(shù)據(jù)重用的特點最大限度減少冗余操作,進而減少數(shù)據(jù)移動和計算開銷。下一步將探索本文設計對更多混合精度組合的支持,進一步優(yōu)化內(nèi)存占用和資源開銷,提升加速器性能。

        猜你喜歡
        加速器寄存器頻域
        輪滑加速器
        化學工業(yè)的“加速器”
        全民小康路上的“加速器”
        少先隊活動(2021年6期)2021-07-22 08:44:24
        Lite寄存器模型的設計與實現(xiàn)
        計算機應用(2020年5期)2020-06-07 07:06:44
        頻域稀疏毫米波人體安檢成像處理和快速成像稀疏陣列設計
        雷達學報(2018年3期)2018-07-18 02:41:34
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        等待“加速器”
        基于改進Radon-Wigner變換的目標和拖曳式誘餌頻域分離
        一種基于頻域的QPSK窄帶干擾抑制算法
        基于頻域伸縮的改進DFT算法
        電測與儀表(2015年3期)2015-04-09 11:37:24
        久久精品国产亚洲AV高清wy | 久久久www成人免费精品| 色偷偷一区二区无码视频| 朝鲜女人大白屁股ass| 天天av天天爽无码中文| 中国人妻沙发上喷白将av| 日韩精品久久午夜夜伦鲁鲁| 国内免费高清在线观看| 国产精品人妻一区夜夜爱| 欧美破处在线观看| 亚洲综合在不卡在线国产另类| 人妻洗澡被强公日日澡电影| 亚洲av日韩av不卡在线观看| 精品久久久久88久久久| 日本一区二区三区爱爱视频| 亚洲精品天天影视综合网| 色综合无码av网站| 亚洲男人在线无码视频| 国产午夜免费一区二区三区视频| 亚洲人成无码区在线观看| 亚洲饱满人妻视频| 亚洲一区二区三区在线| 日本人妖熟女另类二区| 真多人做人爱视频高清免费| 中文亚洲爆乳av无码专区| 蜜桃视频永久免费在线观看| 无码中文字幕人妻在线一区| 日本免费人成视频播放| 国产精品香蕉网页在线播放| 亚洲一区二区三区国产| 欧洲熟妇色 欧美| 亚洲电影一区二区三区| 亚洲综合小综合中文字幕| 深夜福利啪啪片| 射精情感曰妓女色视频| 天天狠天天透天干天天| 在线视频免费自拍亚洲| 狠狠色丁香婷婷久久综合| 久精品国产欧美亚洲色aⅴ大片| 久久亚洲AV无码精品色午夜| 91久久大香伊蕉在人线国产|