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

基于Winograd算法的高效神經網絡加速器及FPGA實現

2024-01-06 04:34:54王帥帥郭劍博
關鍵詞:模型

王帥帥, 陳 強, 郭劍博, 肖 昊

(合肥工業大學 微電子學院,安徽 合肥 230601)

卷積神經網絡(convolutional neural networks,CNN)具有良好的圖像特征提取功能,廣泛應用于圖像分類[1]、船舶識別檢測[2]和井下視覺識別[3]。 傳統卷積運算包含大量乘累加計算,使神經網絡模型部署至資源有限的現場可編程邏輯門陣列(field programmable gate array,FPGA)設備存在困難。 因此減少卷積計算中乘法次數和降低乘法計算位寬,將CNN高效部署至FPGA成為近年研究熱點。

在算法層面,Winograd[4]和快速傅里葉變換(fast Fourier transform,FFT)卷積算法[5]可減少卷積乘法次數,廣泛應用于CNN加速器設計。 目前網絡模型卷積朝卷積核尺寸小、數量多的方向發展,相比FFT算法,Winograd算法在縮減小尺寸卷積乘法次數方面更加高效[6]。 Winograd算法通過矩陣變換將卷積數據映射至Winograd域,使用加減法代替乘法,其點乘步驟為2個二維矩陣點乘,可高效映射至FPGA加速器的二維運算陣列,進行并行化處理,提升運算速度。

文獻[4]首次將Winograd算法應用于CNN模型,經實驗得小尺寸Winograd卷積算子的誤差更低,但文獻[4]的設計僅適用于步長1的卷積類型;文獻[7]設計適配Winograd算法和傳統卷積算法的數據流,提出統一架構進行FPGA實現,擴展加速器適用范圍,但轉置步驟需線下運算,轉置后數據需進行片上存儲,導致FPGA片內存儲器資源占用率高達90%;為擴展加速器適用范圍的同時減少片上存儲資源占用,文獻[6,8]使用卷積分解方法,使Winograd算法適用于不同類型卷積,且設計線上轉置模塊,減少片上卷積核存儲量。

文獻[9]設計統一計算單元,處理不同類型卷積并使用數據復用策略減少數據搬運次數;文獻[10]提出多模式可重構計算單元,提高計算資源利用率;文獻[11]將Winograd算法應用于航空目標檢測,進一步擴展算法的應用領域。 但上述設計存在量化后定點數據位寬與數字信號處理單元(digital signal processing,DSP)位寬失配的問題,使得FPGA的DSP利用率降低。

針對高效Winograd卷積加速器設計,為降低片上存儲資源占用率,本文采用線上轉置模塊,數據轉置后輸入運算單元處理,實現輸入數據復用且減少內存占用。

針對數據位寬失配問題,本文利用部分積切割方法,運算電路由DSP與查找表(look-up table,LUT)構成,緩解數據位寬失配,提高架構運算單元利用率。

1 CNN優化算法

1.1 CNN量化方法

低比特數據量化方法[10-14]將神經網絡模型浮點數轉為定點數,減少模型參數存儲量。 本文使用TensorFlow Lite[12]量化方法將神經網絡推斷過程浮點數運算轉為定點整數運算,并保證量化前后兩數值的相關性。 此方法為嵌入式設備和FPGA高效部署神經網絡提供便利。

CNN量化基本思路是將卷積浮點數運算轉為定點整數運算。 卷積運算中定點整數q與浮點數r的仿射變換關系為:

r=S(q-Z)

(1)

其中,S、Z為統計得出的常量。S的計算公式為:

S=(rmax-rmin)/(qmax-qmin)

(2)

正值參數S由模型訓練過程浮點數范圍與量化后定點數范圍比值得出,代表數值量化前后的比例,也稱比例因子。Z的計算公式為:

Z=qmax-(rmax/S)

(3)

若Z為定點小數,則四舍五入轉為定點整數。Z為浮點數零值對應量化后數值,也稱零點。 CNN模型每個激活層對應一組量化參數,每個卷積核輸出通道對應一組量化參數。

確定浮點數與定點數量化參數后,將卷積運算過程中運算步驟轉為定點數運算。 浮點數卷積運算為:

(4)

其中:r1為卷積核元素;r2為輸入特征圖元素;r3為卷積輸出特征圖。 將浮點數利用TensorFlow Lite量化方法,仿射變換為定點整數,即

(5)

M=S1S2/S3

(6)

由式(6)可得,除M外其余為定點整數。 將M統一為式(7),使CNN推理過程為整數運算,即

M=2- nM0

(7)

其中,n為量化后定點整數位寬。 硬件實現時,式(5)中定點小數由左移n位以及與定點整數M0相乘2個步驟運算。

CNN模型訓練結束后,統計得出卷積激活層和卷積核浮點數值范圍。 量化參數線下計算,神經網絡部署過程中量化參數由存儲器存儲。 CNN推斷過程為定點整數運算,簡化CNN模型卷積計算過程,利于嵌入式和FPGA設備部署工作。

TensorFlow Lite[12]方法量化后模型識別準確率符合網絡模型精度要求,見表1所列,將VGG16、MobileNetV1、MobileNetV2網絡模型量化[15]為8 bit定點整數后,模型精度僅下降3%。

1.2 Winograd算法基本原理

CNN應用Winograd算法中二維卷積算子,二維算子由一維算子嵌套得出[4]。 本文采用二維Winograd卷積算子,即

U=GFGT
V=BTIinB
Oout=AT[U⊙V]A

(8)

其中:F、Iin分別為神經網絡卷積核與輸入特征圖;B、A、G分別為Winograd算法輸入轉置矩陣、輸出轉置矩陣、卷積核轉置矩陣。 輸出特征矩陣由中間結果矩陣U、V點乘并轉置得出。

轉置過程會產生誤差,本文選擇轉置矩陣由0、1、-1、1/2、-1/2構成的算子,文獻[4]實驗表明此類算子誤差數量級在10-5內,符合神經網絡識別精度要求。 本文選取3×3卷積核、4×4輸入塊及2×2輸出規模的Winograd卷積算子適配VGG16網絡模型,記為F(2×2,3×3),其轉置矩陣為:

(9)

F(2×2,3×3)卷積算子可用移位和加法操作實現,簡化硬件實現復雜度。 CNN輸入特征圖是大規模特征矩陣,Winograd卷積算子無法直接匹配運算。 因此采用切片方式[7,16]將輸入特征圖(input feature map,IFMAP)劃分為適配Winograd卷積算子的矩陣劃塊,最終將部分結果組合為輸出特征圖(output feature map,OFMAP),此結果與傳統卷積輸出等價。 卷積算子數據流如圖1所示。

圖1 Winograd卷積算子數據流

1) 本文采用F(2×2,3×3)卷積算子,輸入劃塊大小為4×4。 VGG16模型卷積步長為1且卷積核尺寸為3×3,3×3卷積窗口在4×4輸入劃塊進行2次水平滑動和2次垂直滑動,F(2×2,3×3)卷積算子每次輸出4個傳統卷積等價結果。 卷積核滑動步長為1,2個輸入劃塊間存在重疊部分,重疊長度為卷積核長度與滑動步長差值,本文設計為2。 按上述規則取輸入塊,先橫向提取首個輸入通道IC,再縱向提取。 劃塊占滿總寬度W和高度H,第1個輸入通道劃塊提取完成,其余通道按相同規則劃塊。

2) 單通道卷積核K尺寸為3×3,卷積核通道總量與對應特征圖輸入通道數相等,卷積核個數與輸出通道OC數量相同。 卷積核大小可適配本文所選F(2×2,3×3)卷積算子,無需預處理操作,與輸入特征圖劃塊匹配傳入Winograd卷積算子運算。

3) 輸入特征圖劃塊和卷積核進行輸入轉置、卷積核轉置、點乘和輸出轉置步驟。

4) 輸入特征圖與對應卷積核運算結果累加得到首個輸出通道特征圖。 每個輸出通道特征圖由F(2×2,3×3)卷積算子輸出的2×2特征矩陣構成,數量為(W/2)2。 輸出通道數量與卷積核個數相等。 卷積核與對應輸入特征圖運算結果聚集為輸出特征圖矩陣(如圖1)。 VGG16模型卷積步長為1,卷積核為3×3,單個傳統卷積計算需9次乘法,F(2×2,3×3)卷積算子運算包含4次傳統卷積,乘法總量為36。 使用Winograd算法計算F(2×2,3×3)卷積算子時,4×4輸入和3×3卷積核轉置后都為尺寸4×4的矩陣,然后兩矩陣對應點乘,需16次乘法計算,最后經輸出轉置過程得到與傳統卷積等價的2×2輸出。 本文使用Winograd算法運算F(2×2,3×3)卷積算子需16次乘法,相比傳統卷積的36次乘法,節約率達55.56%。

2 CNN加速器設計

2.1 CNN加速器系統架構

基于Winograd算法的神經網絡加速器系統架構如圖2所示,CNN模型處理部分由FPGA片上完成,數據存儲至片外動態隨機存取內存(dynamic random access memory,DRAM),兩者通過高級可擴展接口協議(advanced extensible interface,AXI)通信。 加速器由系統控制模塊、輸入緩存模塊、權重緩存模塊、維度轉換模塊、輸入轉置模塊、權重轉置模塊、運算處理單元(process element,PE)、輸出轉置模塊、最大池化模塊、量化模塊和輸出緩存模塊構成。 開發板上電啟動時,模型參數和圖片數據從安全數碼卡加載至DRAM中,數據準備完成后,CNN加速器開始工作。 每輪計算將部分輸入特征圖和權重數據通過AXI4總線接口傳入片上緩存單元,加速器循環處理剩余數據。

圖2 CNN加速器整體架構

硬件加速器工作步驟如下:

1) 輸入特征圖緩存用雙緩沖區策略[17],部分行數據預存至輸入緩存模塊,經維度轉換模塊后,二維輸入數據塊傳入轉置模塊線上轉置,輸入轉置模塊由加法器和移位寄存器構成,所用系數與輸入轉置矩陣中元素一致。

2) 權重緩存由256個片上隨機存儲器塊(block random access memory,BRAM)構成。 每周期提供256組輸入通道權重,每個運行周期可處理16個卷積輸入通道和16個輸出通道,與處理單元陣列規模對應,存儲塊可提供處理單元每個周期計算所需權重參數。

3) 輸入轉置模塊和權重轉置模塊將數據轉置,廣播至處理單元進行點乘運算。 每個處理單元由16個DSP與LUTs組成的乘法器組成,與本文 Winograd卷積算子所需16個乘法操作匹配。 本文二維處理單元每個運算周期執行一組點乘運算,相比一維計算單元縮短了等待周期,提高了加速器運行吞吐率。

4) 處理單元運算結果以二維形式廣播至輸出轉置模塊,進行輸出轉置,該模塊轉置矩陣如式(9)所示。 轉置后結果經通道累加后緩存,直至所有輸入通道卷積循環運算完成,得出最終累加結果。 輸出結果即為傳統卷積等價結果。 后經最大池化、量化模塊處理,通過AXI4總線接口傳至外部DRAM緩存,作為后續卷積層輸入特征圖數據。

2.2 輸入緩存與線上維度轉換模塊

卷積核參數經Winograd算法轉置過程,存儲容量增加。 為減少片上存儲資源開銷,本文采取線上轉置模塊[8]。 因為轉置過程需二維計算,所以將緩存一維數據轉為二維數據運算。

本文設計維度轉換模塊和雙緩沖區緩存模塊實現上述功能,維度轉換模塊由移位寄存器構成,如圖3a所示。F(2×2,3×3)卷積算子輸入劃塊為4×4且兩劃塊間重疊長度為2,輸入緩存模塊用行緩存且2組相鄰行緩存間共用2個緩存單元,此模塊可同時輸出4行數據對應劃塊縱向維度4,同時實現Winograd輸入劃塊的數據復用,如圖3b、圖3c所示。

圖3 移位寄存器數據流

移位寄存器完成輸入劃塊橫向維度4,以2個相鄰輸入塊為例,移位寄存器每周期接收2個輸入緩存的特征像素,并左移2位。 按此運行規則,2個等待周期后移位寄存器高4位,每周期輸出一組有效特征塊,與后續模塊組合完成全流水線運算。 一組移位寄存器輸出4列數據,4組相同移位寄存器輸出4行劃塊,共同輸出二維4×4特征劃塊。 根據F(2×2,3×3)卷積算子輸入特征塊重疊規律,設計輸入緩存模塊對數據進行垂直維度復用,維度轉換模塊實現水平維度復用數據。 片上內存占用率減少至58%。

2.3 部分積切割方法

經F(2×2,3×3)卷積算子轉置后,輸入特征圖和權重8 bit數據增加至10 bit,即乘數為10 bit定點整數。 DSP乘法器位寬為27×18,若直接用此乘法器,則造成乘法器與數據位寬失配,導致硬件資源乘法器利用率降低。

為解決定點數位寬與DSP乘法器失配問題,本文設計部分積切割方法,硬件由DSP和LUTs組合電路實現,最大化利用乘法器位寬,提升乘法器資源利用率。

數字信號處理器支持單周期操作,計算2個8 bit定點整數乘法[18],但8 bit輸入和權重數據經轉置過程后,位寬增加至10 bit,單個DSP無法計算2次乘法。 本文利用部分積切割方法,電路由LUTs擴展模塊與DSP構成,運算單元單周期可同時計算2次乘法,實現單周期多輸出功能。 DSP部分積劃分如圖4a所示,LUTs部分積劃分如圖4b所示,完成的乘法運算為:

圖4 部分積切割映射關系

MMult0=IW0=MMult0_P1+MMult0_P2+MMult0_P3,MMult1=IW1=MMult1_P1+MMult1_P2+MMult1_P3

(10)

其中:I、W兩乘數為10 bit;式(10)結果為20 bit。 本設計將10 bit權重劃分為8、2 bit 2個部分,2個8 bit權重部分與10 bit輸入乘法由DSP完成,2個2 bit權重部分與10 bit輸入乘法由LUTs組成擴展部分完成,乘法結果由部分積相加得出。

DSP與LUTs組合電路結構如圖5所示。 2 bit權重與10 bit輸入乘法由LUTs組成擴展單元計算,擴展單元的部分積運算由與門和寄存器實現。

圖5 DSP與LUTs組合電路結構

從圖5a可以看出,第1個擴展單元輸入卷積核0低2 bit,輸出相乘的2個部分積WW0-E0和WW0-E1。 從圖5b可以看出,第2個擴展單元輸出卷積核1低2 bit,輸出相乘的2個部分積WW1_E0和WW1_E1。 卷積核0乘法結果為W0對應的3個部分積之和,卷積核1乘法結果為W1對應的3個部分積之和。

從圖5c可以看出,DSP中乘法器和預加器組合計算2個乘法,2個乘數分別為8 bit權重與10 bit輸入。 將2個8 bit權重通過預加器拼接至乘法器27 bit輸入端,10 bit輸入低位補0后傳至乘法器18 bit輸入端,結果按輸出端口P所示規則截取,DSP輸出端口第8~25位為卷積核0的高8位與輸入相乘結果,DSP輸出端口第27~44位與第26位之和為卷積核1的高8位與輸入相乘結果。

此外,本文設計部分和加法器采用華萊士樹加法器,Compress 3-2使用全加器將3個部分積壓縮為2個部分進行加法,有助于縮短關鍵路徑延遲,減小電路建立時間違例概率,使系統運行穩定。

3 性能評估

3.1 軟硬件平臺速度對比

本文神經網絡加速器與中央處理器(central processing unit,CPU)和圖形處理器(graphics processing unit,GPU)平臺速度對比見表2所列。

表2 不同平臺速度對比

CPU和GPU平臺的軟件語言使用Python 3.7,機器學習庫為Pytorch 1.12,指令集架構為CUDA 11.7。 本文所用中央處理器和圖形處理器運行VGG16模型推理速度分別為640.11、65.87 ms。 本設計使用XCKU060 FPGA部署VGG16模型,工作頻率達180 MHz,推理階段卷積計算花費時間為19.12 ms。 相比Intel i5-4590 CPU和Nvidia GTX 1070 Ti GPU,本文硬件加速器卷積運算速度分別提升33.47、3.43倍。

3.2 硬件平臺性能評估

本文將VGG16網絡模型部署至XCKU060開發板,并評估加速器性能。 仿真驗證和硬件實現EDA軟件為Vivado 2021.1。 構建開發板評估環境,測試數據和網絡模型權重數據預存至SD卡,開發板上電后控制器初始化系統,將測試數據和模型參數搬運至DDR。 其輸入數據與權重參數為量化后8 bit定點整數。 開發板片上資源利用率見表3所列。

表3 FPGA片上資源利用率

本文設計與近年來相關工作性能的對比見表4所列。

表4 VGG16模型加速器性能對比

文獻[6]使用大規模處理單元陣列提升硬件加速器吞吐量,使用DSP數量超出本文1倍,但Winograd卷積加速器[6]的性能僅比本文設計高0.11倍。 文獻[7]將Winograd算法數據流調整與傳統卷積數據流匹配,擴展加速器應用范圍,但文獻[7]計算數據位寬與硬件匹配度低,造成乘法器資源的效率僅為0.28。

文獻[9]利用卷積核尺寸為3×3的算子,使用統一轉置矩陣節約片上硬件資源。 但CNN加速器[9]選取8 bit定點數據,而設計中DSP無法高效利用低比特數據優勢。

文獻[11]使用乒乓操作提升DSP利用率,但是運算單元乘法器[11]輸入端的位寬為27 bit,其位寬占用率僅為59%。 本文通過輸入緩存模塊和維度轉換模塊對數據復用,減少數據搬移,使加速器處理卷積層的平均吞吐率達2.358×1012OPs。 此外,采用部分積切割方法,充分利用DSP輸入端的位寬,使CNN加速器每個DSP運算效率達109OPs,相比文獻[9]、文獻[11]分別提升了54%、29%。

4 結 論

本文面向FPGA硬件部署神經網絡模型,提出一種基于Winograd算法高效部署CNN模型的加速器架構。 利用Winograd卷積算法代替VGG16模型中傳統卷積算法,減少55.5%的乘法運算量。 通過將FPGA片上DSP與LUTs資源結合構成處理單元運算電路,實現部分積切割方法,具備單周期多輸出特點,解決數據位寬與乘法器失配問題,提高乘法器利用率和處理單元運行效率。 實驗結果表明,加速器運行VGG16模型卷積層的平均吞吐率和每個DSP運算效率分別為2.358×1012OPs和1.15×109OPs。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 精品国产毛片| lhav亚洲精品| 久久综合亚洲色一区二区三区| 全色黄大色大片免费久久老太| 老司机午夜精品视频你懂的| 亚洲香蕉久久| 欧美一级黄片一区2区| 久久中文字幕av不卡一区二区| 欧美日韩国产成人高清视频 | 色婷婷综合在线| 亚洲视频一区在线| 国产精品亚洲欧美日韩久久| 一本大道视频精品人妻| 日韩无码真实干出血视频| 国产91精选在线观看| 亚洲激情99| 亚洲丝袜第一页| 制服丝袜一区| 全午夜免费一级毛片| 亚洲第一网站男人都懂| 精品一区二区三区中文字幕| 国产免费a级片| 欧美亚洲第一页| 欧美色香蕉| 国产婬乱a一级毛片多女| 亚洲美女高潮久久久久久久| 亚洲欧美日韩综合二区三区| 亚洲黄色视频在线观看一区| 国产91丝袜在线播放动漫 | 亚洲精品国产精品乱码不卞| 精品久久久久久久久久久| 国产日韩欧美视频| 四虎永久在线精品影院| 狠狠色香婷婷久久亚洲精品| 欧美精品二区| 亚洲精品中文字幕午夜| 九色视频一区| 国产成人免费手机在线观看视频| 91麻豆国产视频| 园内精品自拍视频在线播放| 性网站在线观看| 亚洲熟妇AV日韩熟妇在线| 亚洲精品爱草草视频在线| 国产va在线观看| 久久久久无码国产精品不卡| 成年网址网站在线观看| 国产精品一老牛影视频| 久久天天躁狠狠躁夜夜躁| 亚洲第一香蕉视频| 精品视频91| 日韩a级毛片| 在线日韩日本国产亚洲| 国产精品流白浆在线观看| 久久人人妻人人爽人人卡片av| 亚洲日韩久久综合中文字幕| 亚洲第一色视频| 在线精品自拍| 欧美精品黑人粗大| 欧美午夜在线视频| 色综合综合网| 久久久波多野结衣av一区二区| 老色鬼欧美精品| 国产精品亚洲专区一区| 久久人搡人人玩人妻精品| 日本免费一区视频| 欧美色伊人| 国产精品亚欧美一区二区| 99精品视频在线观看免费播放 | 国产精品无码在线看| 丝袜国产一区| 九色视频最新网址| 国产在线精品网址你懂的| 久久久四虎成人永久免费网站| 精品国产一区91在线| 国产三级毛片| 91精品国产丝袜| 丰满少妇αⅴ无码区| 亚洲网综合| 色综合天天操| 亚洲成A人V欧美综合| 国产精品第页| 日本伊人色综合网|