• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

    (廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510006)

    0 概述

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

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

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

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

    1 研究背景與動(dòng)機(jī)

    1.1 頻域卷積基礎(chǔ)

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

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

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

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

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

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

    1.3 研究動(dòng)機(jī)

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

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

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

    2 加速器設(shè)計(jì)

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

    2.1 FHA 架構(gòu)

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

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

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

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

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

    2.3 乘法結(jié)果修正

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

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

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

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

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

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

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

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

    當(dāng)inmode為“-”時(shí)(表示Al和Dl之間執(zhí)行減法操作),C=-(a7-d7)?B?28也存在3 種取值情況:1)當(dāng)Al為負(fù)而Dl非負(fù)時(shí)(a7=1,d7=0),C=-B?28;2)當(dāng)Al非負(fù)而Dl為負(fù)時(shí)(a7=0,d7=1),C=B?28;3)當(dāng)Al和Dl同號(hào)時(shí)(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)給出了頻域卷積的一個(gè)實(shí)例。在該實(shí)例中,輸出通道M=2,輸入通道c=2,ifft和offt分別為頻域中的輸入激活值和輸出激活值,ifft的尺寸為3(H=W=3),wfft的尺寸為2(H'=W'=2)。A1、A2、W1和W2均為復(fù)數(shù),在本例中,分別代表了W1的實(shí)部和虛部。圖7(b)展示了頻域卷積過程中所需的一組復(fù)數(shù)乘法運(yùn)算,其中序號(hào)次序代表乘法的計(jì)算順序。需要注意的是,對(duì)于8 bit 頻域卷積運(yùn)算,具有相同序號(hào)的一對(duì)頻域乘法將打包至一個(gè)DSP 中進(jìn)行計(jì)算。

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

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

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

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

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

    圖8 展示了映射數(shù)據(jù)流數(shù)據(jù)重用的效果,分別從訪存量和能耗兩個(gè)方面進(jìn)行評(píng)估。在圖8 中,折線展示了歸一化的訪存量??梢园l(fā)現(xiàn),對(duì)于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 實(shí)驗(yàn)

    3.1 實(shí)驗(yàn)設(shè)置

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

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

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

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

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

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

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

    3.2 結(jié)果分析

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

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

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

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

    表4 展示了本文所提加速器3 種不同形態(tài)的性能比較。可以發(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 模型的推斷上分別達(dá)到了原來能效比的1.8和2.2倍。

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

    3)面對(duì)相同的計(jì)算規(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)對(duì)片外存儲(chǔ)器的訪問占據(jù)總功耗的較大部分,在FHA-lut、FHA-dsp-basis 和FHA 中分別占據(jù)了45.4%、54.4%和53.5%。因此,利用8 bit 和16 bit 混合精度頻域卷積來減少內(nèi)存占用,進(jìn)而降低加速器的能耗開銷是很有必要的。

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

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

    圖10 模型準(zhǔn)確率隨訓(xùn)練迭代的變化趨勢(shì)Fig.10 Change trend of model accuracy with training iterations

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

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

    4 結(jié)束語

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

    猜你喜歡
    加速器寄存器頻域
    輪滑加速器
    化學(xué)工業(yè)的“加速器”
    全民小康路上的“加速器”
    Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
    頻域稀疏毫米波人體安檢成像處理和快速成像稀疏陣列設(shè)計(jì)
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    等待“加速器”
    基于改進(jìn)Radon-Wigner變換的目標(biāo)和拖曳式誘餌頻域分離
    一種基于頻域的QPSK窄帶干擾抑制算法
    基于頻域伸縮的改進(jìn)DFT算法
    岳阳县| 兴和县| 曲靖市| 潮州市| 福泉市| 化德县| 长兴县| 枣阳市| 藁城市| 河北省| 册亨县| 三原县| 开原市| 普格县| 昌江| 梁平县| 富平县| 满城县| 宁德市| 常州市| 肥西县| 原平市| 榆社县| 民权县| 化德县| 沧州市| 华安县| 罗定市| 呼和浩特市| 逊克县| 诏安县| 什邡市| 平谷区| 泰安市| 光泽县| 武穴市| 天柱县| 安吉县| 灵川县| 高平市| 平阴县|