黃程程,董霄霄,李 釗
(山東理工大學計算機科學與技術(shù)學院,山東淄博255049)
卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、語音識別、目標檢測等應用中取得了重大進展[1-3]。其中5×5卷積相較3×3卷積有更大的感受野,可以提取更多的邊緣特征,在醫(yī)學影像處理等領(lǐng)域效果顯著,且廣泛應用于AlexNet、ZFNet和GoogLeNet等經(jīng)典模型[1]。近期的許多研究就使用包含5×5卷積的架構(gòu)取得了較3×3卷積更高的預測準確率[4-6]。
卷積神經(jīng)網(wǎng)絡(luò)模型規(guī)模龐大,計算復雜度高,需要占用大量硬件資源,因此硬件加速器逐漸被用于加速神經(jīng)網(wǎng)絡(luò)的預測階段。常用的神經(jīng)網(wǎng)絡(luò)加速器包括圖形處理器(Graphic Processing Units,GPU)、專用集成電路(Application Specific Integrated Circuit,ASIC)和現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)。得益于高并行度、低能耗和可重構(gòu)等優(yōu)點,F(xiàn)PGA成為了目前主流的卷積神經(jīng)網(wǎng)絡(luò)硬件加速平臺[7-16]。
目前在FPGA上加速卷積神經(jīng)網(wǎng)絡(luò)面臨的問題有:1)卷積神經(jīng)網(wǎng)絡(luò)的大規(guī)模密集型計算受到FPGA計算能力(片上數(shù)字信號處理器(Digital Signal Processor,DSP)數(shù)目)的限制,如何優(yōu)化算法以降低乘法運算量是提升加速器系統(tǒng)性能的主要問題。2)各類快速算法在降低卷積神經(jīng)網(wǎng)絡(luò)乘法運算量的同時通常以提升內(nèi)存資源占用和存儲器帶寬占用為代價,F(xiàn)PGA片上硬件資源量的限制將影響加速器系統(tǒng)性能。3)卷積神經(jīng)網(wǎng)絡(luò)計算量龐大,高效的數(shù)據(jù)重用能夠降低能耗開銷并減小設(shè)計面積。
在5×5卷積的乘法運算量方面,文獻[7]使用8 bit定點數(shù)據(jù)量化模型,在2個8 bit權(quán)重中插入1個8位的全0數(shù)據(jù),組成一個低8位和高8位分別為權(quán)重數(shù)據(jù)、中8位為全0字段的24位新數(shù)據(jù),使用1個DSP得出2次乘法運算結(jié)果,將傳統(tǒng)卷積算法的乘法運算量降低至50.0%。文獻[8]利用卷積的元素代數(shù)性質(zhì),應用Winograd快速卷積算法,將使用小尺寸卷積的VGGNet(Visual Geometry Group Network)等模型的乘法運算量降低至45.0%,有效提高了硬件加速器的效率。文獻[9]基于二維快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)算法提出了一種靈活的自動化設(shè)計高通量模型加速器,將乘法運算量降低至約31.0%。文獻[10]采用n=6的二維Winograd算法,級聯(lián)3×3卷積構(gòu)建5×5卷積,將乘法運算量降低至約19.4%。然而二維Winograd算法不同于傳統(tǒng)卷積算法,使用級聯(lián)3×3卷積的方法構(gòu)建5×5卷積將增加乘法運算量、系統(tǒng)的存儲器帶寬需求,級聯(lián)的卷積層間也存在計算延遲,同時也會增加設(shè)計空間探索周期。在硬件資源占用方面,文獻[11]和文獻[10]分別提出了基于列或行的二維Winograd卷積算法雙緩沖區(qū)數(shù)據(jù)布局方案,降低了存儲器帶寬需求。然而文獻[10]的研究結(jié)果表明,他們所設(shè)計的加速器存儲器帶寬占用比例略高于片上DSP占用比例,這意味著受制于有限的FPGA硬件資源,部分情況下其設(shè)計無法達到理論的最高性能。在數(shù)據(jù)重用方面,文獻[12]提出了一種基于深流水線體系架構(gòu)的二維/三維Winograd卷積算法加速器設(shè)計,通過層融合和層聚類等方法,顯著提高了數(shù)據(jù)重用性。文獻[11]和文獻[10]通過雙緩沖區(qū)數(shù)據(jù)布局方案重用了二維W inograd算法鄰域間的重疊數(shù)據(jù)。但二維Winograd算法轉(zhuǎn)換過程大量的加法運算中存在可復用的中間結(jié)果,這些可復用結(jié)果的加法運算屬于無效運算,僅會增加加速器系統(tǒng)的能耗開銷和設(shè)計面積,上述文獻并未就此問題進行研究和優(yōu)化。
針對上述方法中計算復雜度高、存儲器帶寬需求高、級聯(lián)的卷積層間存在計算延遲、設(shè)計空間探索周期漫長和加法計算量大等問題,提出了一種基于二維Winograd算法的雙緩沖區(qū)5×5卷積6級流水線方法。首先選用適宜尺寸的二維Winograd卷積算法降低計算復雜度和存儲器帶寬需求,然后通過雙緩沖區(qū)最小塊單元的設(shè)定指導并加快設(shè)計空間探索,增強可移植性,平衡FPGA硬件資源的使用,使設(shè)計不受任何硬件資源限制。最后通過深化二維Winograd卷積算法流水線,復用加法運算過程中的中間計算結(jié)果,來降低加法運算量,減小加速器系統(tǒng)的能耗開銷和設(shè)計面積。
表1對文章中使用的重要符號進行說明。
表1 符號說明Tab.1 Explanation of symbols
Winograd算法于1980年由數(shù)學家Winograd提出[17]。以一維Winograd算法為例,記尺寸為r的卷積核輸出m個計算結(jié)果為F(m,r)。
傳統(tǒng)卷積算法計算F(2,3)需要2×3=6次乘法。Winograd算法計算F(2,3)僅需要4次乘法,輸入輸出如下:
具體過程如下:
其中m1、m2、m3、m4為:
Winograd算法中的常數(shù)乘法可以通過移位操作(如2-1、2-2和2)或由2n或2-n(n∈Z+)的組合后再移位(如5=20+22,1/6≈2-3+2-5+2-6)近似得到,因而計算m1、m2、m3、m4只需要4次乘法運算。
上述乘法過程可表示為矩陣相乘形式:
其中Winograd算法F(22,32)的轉(zhuǎn)換矩陣AT、BT和G表示如下:
F(m2,r2)的二維Winograd算法可以通過嵌套迭代一維Winograd算法得到:
具體運算步驟如下:
記U⊙V結(jié)果為out:
隨著壓縮模型理論的提出和應用,現(xiàn)階段的研究大多使用16位定點數(shù)據(jù)代替浮點數(shù)據(jù),以減小計算資源和存儲資源的開銷。文獻[10]研究結(jié)果表明,由于轉(zhuǎn)換矩陣中的常數(shù)值范圍會隨參數(shù)n的增大而增大,使用16位定點數(shù)據(jù)時,卷積核的精度不能低于2-10,Winograd算法中參數(shù)n(n=m+r-1)不得大于8,否則將影響卷積神經(jīng)網(wǎng)絡(luò)的預測準確率。本文中分別使用多項式插值點(0,1,-1)、(0,1,-1,2,-2)及(0,1,-1,2,-2,1/2,-1/2)計算F(n=3,n=4)、F(n=5,n=6)及F(n=7,n=8)的轉(zhuǎn)換矩陣AT、BT和G。常數(shù)乘法如上所述,通過移位操作或由2n或2-n的組合后再移位實現(xiàn),使這部分運算不占用DSP資源。
相較于傳統(tǒng)卷積算法,二維Winograd卷積算法的輸出結(jié)果不再是輸出特征圖上的單個點,而是多個點組成的輸出特征圖子塊。對一個大小為m2的輸出特征圖子塊,二維Winograd卷積算法需要n2次乘法,而傳統(tǒng)算法需要m2r2次乘法。
由于二維Winograd卷積算法與傳統(tǒng)卷積算法計算原理有差異,這一部分對二維Winograd卷積算法下應用5×5卷積和級聯(lián)3×3卷積的計算復雜度進行了定量分析。
在此項工作的定量分析中默認步長為1,當通過卷積后輸出特征圖大小為C×C時,二維Winograd卷積算法乘法運算量為:(■C/■m×n)2。
由于m,n,r均為已知常數(shù),設(shè)定C滿足C/m為正整數(shù),不考慮填充問題,可定量分析n≤8時二維Winograd算法下級聯(lián)與非級聯(lián)方法的計算復雜度。本文采用參數(shù)相同的常用F(m2,r2)實現(xiàn)級聯(lián)。
使用兩個F(22,32)級聯(lián)時乘法運算次數(shù)為:
使用兩個F(42,32)級聯(lián)時乘法運算次數(shù)為:
使用兩個F(62,32)級聯(lián)時乘法運算次數(shù)為:
F(22,52)的乘法運算次數(shù)為:
F(42,52)的乘法運算次數(shù)為:
其中應用級聯(lián)F(22,32)替代F(22,52)的過程如圖1所示。
圖1 級聯(lián)F(22,32)替代F(22,52)示意圖Fig.1 Schematic diagram of cascading F(22,32)to replace F(22,52)
通過對式(18)~(22)進行對比可以得出:F(42,52)的乘法運算次數(shù)是兩個級聯(lián)F(22,32)的約49.0%,兩個級聯(lián)F(42,32)的約87.1%,兩個級聯(lián)F(62,32)的約111.3%。此外,是傳統(tǒng)卷積算法的約17%。
為高效地利用硬件資源,數(shù)據(jù)傳輸速度必須大于或等于計算速度。存儲器帶寬需求越低,數(shù)據(jù)傳輸速度越快,為系統(tǒng)的準確性和穩(wěn)定性提供保障。文獻[11]采用基于列的雙緩沖區(qū)數(shù)據(jù)布局完成設(shè)計,并未進行設(shè)計空間探索。文獻[10]采用基于行的雙緩沖區(qū)數(shù)據(jù)布局完成設(shè)計,使用參數(shù)組{n,Pm,Pn}指導設(shè)計空間探索。其中,n表示F(m2,r2)的尺寸,Pm表示并行運算的輸入圖像的通道數(shù),Pn表示并行運算的卷積核的數(shù)目。本文設(shè)定參數(shù)對{Pc,Px}指導設(shè)計空間探索,其中與文獻[10]相較,n=8,Pc=2Pm,Px=Pn。
對存儲器帶寬需求進行建模和定量分析。計算輸入的n列數(shù)據(jù)所需時間為:
其中:C為輸入圖像通道數(shù),N為卷積核中濾波器數(shù)目,F(xiàn)req為工作頻率。
m列數(shù)據(jù)并行傳輸所需的時間為:
其中Bandwidth為存儲器帶寬。
由于要滿足Ttransfer≤Tcompute,即傳輸時間小于等于計算時間。因此可得存儲器帶寬需求為:
當不采用雙緩沖區(qū)設(shè)計機制時,n列數(shù)據(jù)并行傳輸所需的時間為:
此時的存儲器帶寬需求為:
通過對比式(25)和式(27)可得,在理想狀況下,雙緩沖區(qū)設(shè)計方法可以縮減(1-m/n)倍的存儲器帶寬需求。這意味參數(shù)m相同時,卷積核尺寸越大存儲器帶寬需求越低。以F(42,52)、F(42,32)和F(62,32)為 例,三 者 分 別 能 夠 縮 減50.0%(1-4/8)、33.3%(1-4/6)和25.0%(1-6/8)的存儲器帶寬需求。因此F(42,32)和F(62,32)的存儲器帶寬需求約為F(42,52)的1.32倍和1.50倍。本文的設(shè)計方法較基于F(42,32)的方法降低了約24.2%的存儲器帶寬需求。而F(62,32)的存儲器帶寬需求最高,無法完成高性能的卷積神經(jīng)網(wǎng)絡(luò)加速器設(shè)計。此外存儲器帶寬需求越高,數(shù)據(jù)重用能力就越差,存儲器訪問也越高,會大幅增加整個硬件加速器系統(tǒng)的能耗。
結(jié)合計算復雜度分析進行綜合評定,基于F(42,52)的二維Winograd算法5×5卷積存儲器帶寬需求最低,計算復雜度也低于傳統(tǒng)卷積算法和基于F(22,32)和F(42,32)的設(shè)計,且不存在級聯(lián)卷積層間的計算延遲。
由于卷積神經(jīng)網(wǎng)絡(luò)規(guī)模龐大,計算過程復雜,且需要保證塊隨機存儲器(Block Random Access Memory,BRAM)使用率和存儲器帶寬使用率均低于或趨近于DSP使用率,使得基于參數(shù)組{n,Pm,Pn}的設(shè)計空間探索求性能最優(yōu)解的過程較為漫長。本文的設(shè)計將n確定為8,Pc=2Pm,極大地減少了可能的參數(shù)組合方式,大幅提高了設(shè)計空間探索速度。由于采用了存儲器帶寬需求最低的設(shè)計方法,因而僅需在探索過程中求解以BRAM資源為約束條件的性能最優(yōu)解。
為快速高效完成設(shè)計空間探索工作,本文提出了一種雙緩沖區(qū)最小塊單元數(shù)據(jù)布局設(shè)計方案,計算和傳輸采用雙緩沖設(shè)計并行完成。最初將輸入特征圖和卷積核等輸入數(shù)據(jù)存儲在外部存儲器中,運算過程中的輸入特征圖和輸出特征圖通過FIFO傳至FPGA平臺。由于片上存儲資源的限制,外部存儲器中存儲的數(shù)據(jù)將根據(jù)運算階段分批次加載到片上存儲器中。之后建立性能評估模型指導設(shè)計空間探索求解,對多種參數(shù)組合方式進行實驗和數(shù)據(jù)對比,最終提出本文的設(shè)計方案。雙緩沖區(qū)最小塊單元設(shè)計如圖2所示。首先存儲三個緊鄰的8×4×2(8行、4列、通道數(shù)為2)的圖像塊,如圖2中A、B、C所示。其中選擇通道維度的深度為2,既降低了設(shè)計空間探索復雜度,也不會對最終性能水平產(chǎn)生影響。每次取相鄰的兩個圖像塊參與二維Winograd算法5×5卷積運算,如AB和BC,每個最小塊單元單個運算周期內(nèi)執(zhí)行128次乘法運算。當對AB進行運算后,A中的數(shù)據(jù)被覆蓋,而后重用B中存儲的數(shù)據(jù),對BC進行運算。當完成最初前8行的運算后將自動翻轉(zhuǎn)至下部分計算的最左端,以此類推向后循環(huán),直至全部運算結(jié)束。
圖2 雙緩沖區(qū)最小塊單元設(shè)計示意圖Fig.2 Schematic diagram ofdouble-buffer minimum block unit design
通過性能評估模型數(shù)據(jù)評估得出的雙緩沖區(qū)最小塊單元設(shè)計,極大地降低了設(shè)計空間探索周期,也增強了可移植性。
如式(7)中所示,二維Winograd卷積算法F(42,52)計算需要逐步完成,首先完成U和V的加法計算,而后進行U⊙V的矩陣點乘運算,最后通過加法計算Out輸出結(jié)果。根據(jù)二維Winograd卷積算法計算過程的這一特性,使用多級流水線設(shè)計可以有效降低各計算階段間的延遲。
之前的二維Winograd卷積算法卷積采用4級流水線結(jié)構(gòu)實現(xiàn)[10]。第1階段并行執(zhí)行U、V的運算,第2階段執(zhí)行U⊙V的運算,第3階段執(zhí)行Out的運算,第4階段將各通道計算結(jié)果進行累加。這種設(shè)計方法在1級流水中完成U、V或Out的計算。在第1階段V的運算過程中,V=BTInB的運算需要等待BTIn全部運算完畢后才能繼續(xù)執(zhí)行下一步與B的運算,使得加法計算過程的延遲可能會大于乘法計算的延遲,導致加速器性能下降。
另一種方法是將In中的元素設(shè)為未知參數(shù),離線執(zhí)行V=BTInB的運算,運算結(jié)果中V的元素全部轉(zhuǎn)換為與In中元素相關(guān)的鏈式加法(如F(22,32)中V的首個元素為(x0-x2-x8+x10)),通過這種方式在1級流水中實現(xiàn)V的計算。但由于矩陣乘法的代數(shù)性質(zhì),該方法需要完成更多次的加法運算。以F(42,52)為例,此方法的加法運算量是逐步運算的近3倍,且部分常數(shù)乘法無法再由2n或2-n的組合進行近似。這些加法運算在FPGA中體現(xiàn)為大量觸發(fā)器(Flip Flop,F(xiàn)F)和查找表(Look-Up-Table,LUT)的使用。
因此本文啟用深流水線設(shè)計,采用逐步運算的6級流水線結(jié)構(gòu),合理分配硬件資源并減小處理轉(zhuǎn)換矩陣中常數(shù)乘法所帶來的誤差。6級流水線設(shè)計結(jié)構(gòu)如圖3所示。對于V,在流水線的第1階段,執(zhí)行V1=BTIn的運算和存儲,計算過程參考式(13),流水線的第2階段,執(zhí)行V=V1B的運算和存儲,計算過程參考式(14)。對于U,有兩種實現(xiàn)方式:第一種與V相同,流水線的第1階段,執(zhí)行U1=GF的運算和存儲,計算過程參考式(11),流水線的第2階段,執(zhí)行U=U1GT的運算和存儲,計算過程參考式(12)。由于U的運算量始終小于V,這種設(shè)計方法不會對流水線的延遲產(chǎn)生影響。第二種是直接離線完成U的運算并加載到FPGA的存儲器中。由于卷積神經(jīng)網(wǎng)絡(luò)預測過程中卷積核權(quán)重不發(fā)生變化,U可以直接在FPGA外部完成計算。當參數(shù)n≤8時,V計算過程中的常數(shù)始終可以通過2n或2-n的組合進行精確表示,而U計算過程中會出現(xiàn)諸如1/6等需要進行近似處理的常數(shù),因此這種方法可以在更高的卷積核精度下進行工作。相應地,離線完成U的運算代價是耗費更多的BRAM資源。為保障系統(tǒng)性能,本文選用第一種方法以節(jié)省片上BRAM資源。在流水線的第3階段,執(zhí)行U⊙V的運算并進行存儲。流水線的第4階段,執(zhí)行Out1=ATout的運算并進行存儲。流水線的第5階段,執(zhí)行Out=Out1A的運算并進行存儲。流水線的第6階段,將各通道的運算結(jié)果進行累加和存儲。
圖3 六級流水線設(shè)計結(jié)構(gòu)示意圖Fig.3 Schematic diagram of 6-stage pipeline design structure
為驗證針對5×5卷積所提出的雙緩沖區(qū)二維Winograd算法6級流水線方法的綜合性能,與現(xiàn)有文獻[7,9-10]的針對5×5卷積的加速器設(shè)計方法就硬件資源使用率(設(shè)計方法所用的各類硬件資源占片上總資源量的比率)、計算性能和DSP效率等方面進行對比。實驗選用AlexNet的第二個卷積層完成算法設(shè)計。為便于比較,采用高速集成電路硬件描述語言(Verilog integrated circuit Hardware Description Language,Verilog HDL)在Xilinx XC7A200T平臺上完成雙緩沖結(jié)構(gòu)設(shè)計、加法器和乘法器的流水線設(shè)計等。利用Vivado simulator仿真工具建立寄存器轉(zhuǎn)換級(Register Transfer Level,RTL)仿真模型,時鐘頻率與之前的多項研究工作保持一致,設(shè)為200 MHz。卷積神經(jīng)網(wǎng)絡(luò)模型預測過程的剩余部分在FPGA外部完成,確保所設(shè)計的算法不影響模型的預測準確率。
采用ILSVRC2012數(shù)據(jù)集對本文所架構(gòu)的AlexNet進行精度損失分析。訓練數(shù)據(jù)集中有1 000個不同的類,每個類包含大約1 300個不同的圖像,驗證數(shù)據(jù)集中有5 000個與訓練數(shù)據(jù)集不同的樣本。本文采用16 bit定點數(shù)據(jù)完成量化,采用二維Winograd算法構(gòu)建AlexNet,并與使用32 bit浮點數(shù)的全精度初始模型進行算法精度對比。
如表2所示,本文AlexNet模型的Top-1精度損失不超過0.5%,Top-5精度損失不超過1%,與文獻[7]方法、文獻[9]方法和文獻[10]方法大致相同。其中文獻[9]方法和文獻[10]方法精度損失均<1%,文獻[7]方法由于使用8 bit數(shù)據(jù)量化因而精度損失略高,約為<3%。
表2 精度損失分析 單位:%Tab.2 Accuracy lossanalysis unit:%
乘法運算量是影響卷積神經(jīng)網(wǎng)絡(luò)FPGA加速器實際計算時間的主要因素。本文統(tǒng)計傳統(tǒng)卷積方法、文獻[7]方法、文獻[9]方法、文獻[10]方法和本文方法的AlexNet第二卷積層乘法運算量,并與傳統(tǒng)卷積方法進行加速倍率比較。
由表3可以看出,本文算法5×5卷積的乘法運算量最低,加速倍率最高,為5.82,是其他方法的1.13~2.91倍。
表3 乘法運算量對比Tab.3 Comparison of multiplication computational cost
在各類卷積神經(jīng)網(wǎng)絡(luò)FPGA加速器中,實際運算時間直觀地反映了架構(gòu)方案的加速水平,是評估加速器性能的重要指標。本文對比并分析了文獻[7]方法、文獻[9]方法、文獻[10]方法和本文方法的AlexNet第二卷積層運算時間,并以文獻[7]方法的計算速度為基線比較了各類方法的加速效果。
由表4可知,得益于最低的乘法運算量、深流水線架構(gòu)和不存在級聯(lián)卷積的層間計算延遲等優(yōu)勢,本文的方法運算時間最短,對5×5卷積的加速效果最佳。
表4 運算時間對比Tab.4 Comparison of computing time
根據(jù)文獻[7,9-10]的設(shè)計思想,使用本文的FPGA平臺實現(xiàn)其相應算法對AlexNet第二個卷積層的設(shè)計,就DSP、LUT和BRAM的資源使用率進行比較。硬件資源使用率對比如圖4所示。
圖4 硬件資源使用率對比Fig.4 Hardware resource utilization comparison
如圖4(a)所示,本文的DSP資源使用率與文獻[7]方法、文獻[9]方法和文獻[10]方法相近,均在80%以上,均能保證卷積神經(jīng)網(wǎng)絡(luò)硬件加速器擁有較高的工作效率。
如圖4(b)所示,本文的LUT資源使用率比文獻[7]方法高24%,比文獻[9]方法高28%,比文獻[10]方法高8%,但遠低于DSP資源使用率。由于二維Winograd卷積算法通過完成大量加法運算來降低乘法運算量,因此采用Winograd算法的本文和文獻[10]需要更多的LUT資源完成加法運算。
此外在Winograd算法U、V及Out的加法計算過程中,存在一些可復用的中間計算結(jié)果,例如F(22,32)算法運算過程中式(12)運算結(jié)果U的第2、3個元素中均有(u0/2+u2/2)的運算,其中u0、u2為式(11)運算結(jié)果U1的第1、3個元素。為降低部分LUT開銷,本文通過字符串精確匹配搜索U、V及Out加法運算中可復用的中間計算結(jié)果來指導設(shè)計,在二維Winograd卷積算法的加法設(shè)計中探索并實現(xiàn)最優(yōu)的數(shù)據(jù)重用方式,降低了約8%的加法計算量,以降低LUT資源使用率。這種加法運算中間結(jié)果重用方法避免了部分無效計算,減小了設(shè)計面積且降低了系統(tǒng)能耗。
如圖4(c)所示,本文的BRAM資源使用率比文獻[7]方法低15%,比文獻[9]方法高30%,比文獻[10]方法低1%。與文獻[7]和文獻[9]的方法相較,本文和文獻[10]的方法相對乘法運算量更低,這意味著在使用相同數(shù)目的DSP時,二維W inograd卷積算法可對更多的輸入數(shù)據(jù)完成卷積運算,因此采用此類方法的本文和文獻[10]在實現(xiàn)過程中需要占用更多的BRAM資源。本文通過設(shè)計快速設(shè)計空間探索性能分析模型來保證BRAM資源使用率低于DSP使用率,以確保加速器性能不受硬件資源數(shù)量限制。
綜合整體硬件資源進行分析,本文的設(shè)計與之前研究工作相較各項硬件資源使用率相近,通過數(shù)據(jù)重用、優(yōu)化架構(gòu)和優(yōu)化加速算法等方式取得了更高的計算性能,提高了硬件加速器的加速效率。
由于卷積神經(jīng)網(wǎng)絡(luò)FPGA加速器的吞吐量、功率和能量效率等性能指標均會受FPGA平臺影響,同一設(shè)計方法在不同平臺上會有不同的性能表現(xiàn)。因此本文將DSP效率,即吞吐量/片上DSP數(shù)量作為主要指標以客觀分析加速器性能水平。由于本文在同一FPGA平臺上實現(xiàn)相關(guān)設(shè)計因此各加速方法具有相同的工作頻率和可用DSP總量。
由表5可知,本文的設(shè)計在5×5卷積的相關(guān)層達到了較高的DSP效率,DSP效率為0.529,高于文獻[7]方法和文獻[9]方法,由于復用了部分加法運算結(jié)果降低了吞吐量而略低于文獻[10]方法的0.557。但因本文架構(gòu)方法有著更低的乘法運算量和存儲器帶寬需求,因此相較文獻[10]方法,本文的加速器系統(tǒng)架構(gòu)方法速度更快、能耗更低、性能更優(yōu)。
表5 DSP效率對比Tab.5 Comparison of DSPefficiency
本文對基于二維Winograd算法5×5卷積的架構(gòu)問題進行了研究,深化二維Winograd卷積算法流水線并利用雙緩沖區(qū)和復用中間運算結(jié)果實現(xiàn)數(shù)據(jù)重用,提出了一種針對二維Winograd算法5×5卷積的雙緩沖區(qū)最小塊單元6級流水線方法,并與現(xiàn)有構(gòu)建5×5卷積的方法進行實驗對比。實驗結(jié)果表明,本文提出的深流水線方法在基本不影響神經(jīng)網(wǎng)絡(luò)預測準確率的前提下,具有更低的計算復雜度和存儲器帶寬需求,縮短了計算時間,降低了能耗,為FPGA上5×5快速卷積的架構(gòu)提供了解決方案,有效地提高了二維W inograd算法5×5卷積在FPGA平臺上的計算效率。