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

        ?

        FPGA 實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)加速器①

        2023-11-20 08:36:56張立國黃文漢
        高技術(shù)通訊 2023年10期
        關(guān)鍵詞:浮點單通道池化

        張立國 黃文漢 金 梅

        (燕山大學(xué)電氣工程學(xué)院 秦皇島 066004)

        0 引言

        近年來,深度學(xué)習(xí)[1]被廣泛應(yīng)用于安全防護[2]、醫(yī)療康養(yǎng)[3-5]、自動駕駛[6-8]等領(lǐng)域。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)是深度學(xué)習(xí)中的一種重要架構(gòu)。目前,實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)加速器的平臺以中央處理器(central processing unit,CPU)、圖形處理器(graphics processing unit,GPU)、專用集成電路(application specific integrated circuit,ASIC)和現(xiàn)場可編程門陣列(field programmable gate array,FPGA)為主[9]。其中,CPU 受限于內(nèi)存帶寬,計算CNN 的大量數(shù)據(jù)時效率較低;GPU 擁有大量計算核心和高速內(nèi)存帶寬,主要用于加速圖像數(shù)據(jù)的運算,在深度學(xué)習(xí)訓(xùn)練階段的優(yōu)勢明顯;ASIC[10-12]是可以實現(xiàn)特定算法的加速器,在計算效率、功耗和面積上表現(xiàn)最好;但是,ASIC 只能為既定的算法加速,昂貴的開發(fā)成本不能適應(yīng)愈發(fā)復(fù)雜和深層次的網(wǎng)絡(luò)結(jié)構(gòu)。相比之下,FPGA 具有高并行度、低功耗、靈活編程和短開發(fā)周期等特點,這些綜合優(yōu)勢使FPGA 相較于其他3 個平臺更適合深度學(xué)習(xí)的前向推理過程。

        本文設(shè)計基于FPGA 的卷積神經(jīng)網(wǎng)絡(luò)加速器,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為LeNet-5[13],使用Verilog 硬件描述語言,數(shù)據(jù)格式為IEEE 754 標準的16 bits 浮點類型。

        近年來,已有許多對FPGA 實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的相關(guān)研究。

        文獻[14]使用異構(gòu)計算架構(gòu)成功實現(xiàn)了目標檢測卷積神經(jīng)網(wǎng)絡(luò)的硬件加速。方案選擇軟核CPU 實例化在FPGA 上,并通過CPU 控制數(shù)據(jù)調(diào)度,使FPGA 能夠?qū)崿F(xiàn)卷積、ReLU 非線性激活、最大值池化等算法的硬件加速。通過按照特定方式排列輸入數(shù)據(jù),實現(xiàn)了將多維卷積運算轉(zhuǎn)化成一維卷積運算,從而提高了數(shù)據(jù)并行度。盡管該方案只能為特定神經(jīng)網(wǎng)絡(luò)進行加速,但其成功地為硬件加速提供了一種可行的方案。值得注意的是,一旦神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生改變,則需要重新搭建加速系統(tǒng),無法應(yīng)對復(fù)雜多變的神經(jīng)網(wǎng)絡(luò)。

        文獻[15]提出的卷積硬件計算單元設(shè)計具有可擴展性,可以在資源有限的情況下復(fù)用卷積計算模塊,同時采用對應(yīng)數(shù)據(jù)分割的形式提高并行度,從而顯著提高了第1 層卷積的計算速度。然而,該方案在卷積復(fù)用的同時會犧牲速度,因此在要求實時性的應(yīng)用場景中可能缺乏優(yōu)勢。

        文獻[16]設(shè)計了一個2D 卷積算法,該算法采用較少的寄存器、乘法器、加法器和控制模塊,從而節(jié)省了大量的硬件開銷。該算法使用塊浮點(block-floating-point,BFP)算法進行數(shù)據(jù)處理,數(shù)據(jù)位寬選擇16 位和8 位,相比傳統(tǒng)的32 位數(shù)據(jù)位寬,可以至少降低50%的資源開銷。但是,這種算法采用較低精度的數(shù)據(jù)運算方式,因此不可避免地導(dǎo)致識別精度下降。

        1 關(guān)鍵技術(shù)設(shè)計

        1.1 浮點運算單元設(shè)計

        在大多數(shù)對卷積神經(jīng)網(wǎng)絡(luò)加速器的硬件設(shè)計中,采用量化后的16 位[17]甚至8 位[18]定點數(shù)作為參數(shù)。這樣的設(shè)計雖然可以減少數(shù)據(jù)存儲以及計算量,但是不可避免地損失了精度。于是,本文設(shè)計浮點運算單元(processing element,PE),它由浮點加法器和浮點乘法器構(gòu)成。

        浮點運算單元相對于定點運算單元的優(yōu)勢有:

        (1)可以表示非常大或非常小的數(shù)值,以及小數(shù)和分數(shù)。

        (2)可以提供高精度的計算和表示,因為指數(shù)位和尾數(shù)位的可變性。

        (3)通過硬件的優(yōu)化,在消耗一定資源的同時,可以減少延時,且達到幾乎等同于神經(jīng)網(wǎng)絡(luò)最優(yōu)的精度效果。

        在浮點數(shù)加法器硬件電路設(shè)計中,為了減少資源開銷,設(shè)計預(yù)移位(pre-shifting)功能:如果2 個操作數(shù)指數(shù)不相等時,將較小的數(shù)值通過右移操作使指數(shù)相等。

        在浮點乘法器的設(shè)計中,有效數(shù)字的乘法運算占運算時間的比重最大,因此,將指數(shù)計算與有效數(shù)字計算并行,消去了指數(shù)計算時間,提高了計算效率。

        將浮點加法器串聯(lián)在浮點乘法器后組成浮點運算單元,并且加入3 個寄存器用以寄存輸入和輸出。

        1.2 并行度優(yōu)化設(shè)計

        卷積神經(jīng)網(wǎng)絡(luò)中的三維圖像卷積運算是卷積神經(jīng)網(wǎng)絡(luò)中的重點。圖像的三維卷積運算可以按不同維度進行拆解,從而達到不同程度的并行度。圖1所示為卷積層多層嵌套循環(huán)模型圖。

        圖1 卷積層多層嵌套循環(huán)模型圖

        將圖像卷積運算按照不同維度展開可以得到不同的并行度。

        (1)卷積核內(nèi)的并行

        卷積核內(nèi)的并行是指在卷積運算中,對于每一個卷積核內(nèi)的元素,都可以獨立地進行計算,從而加速卷積運算。具體來說,假設(shè)卷積核的大小為K×K,那么在卷積運算的過程中,可以同時計算卷積核內(nèi)的所有元素,而不需要逐個進行計算。這種并行計算的方式可以有效地提高卷積運算的速度。

        (2)特征圖內(nèi)的并行

        特征圖內(nèi)的并行是指在卷積神經(jīng)網(wǎng)絡(luò)中,一個特征圖與一個卷積核的卷積操作相當于將卷積核在特征圖上滑動計算卷積,同時參與計算的滑動窗口的個數(shù)稱為特征圖內(nèi)的并行度。

        (3)輸出通道間的并行

        特征圖與一個卷積核進行卷積運算后輸出一張二維的特征圖作為輸出特征圖的一個通道。同時參與卷積計算的卷積核個數(shù)即為輸出通道間的并行度。

        設(shè)計卷積核內(nèi)全并行,特征圖內(nèi)的并行度根據(jù)例化卷積運算單元調(diào)節(jié),輸出通道間的并行度通過例化單通道卷積模塊個數(shù)調(diào)節(jié)。因此,本文設(shè)計的加速器在卷積運算部分可以在各維度進行并行度調(diào)節(jié),適應(yīng)不同網(wǎng)絡(luò)結(jié)構(gòu),可重構(gòu)性強。

        2 系統(tǒng)架構(gòu)設(shè)計及具體實現(xiàn)

        2.1 加速器系統(tǒng)總架構(gòu)

        本文設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)硬件加速系統(tǒng)架構(gòu)如圖2 所示,系統(tǒng)主要由寄存器傳輸級(register transfer level,RTL)描述的卷積神經(jīng)網(wǎng)絡(luò)加速器、直接內(nèi)存訪問模塊與處理器組成。卷積神經(jīng)網(wǎng)絡(luò)加速器主要負責卷積層、激活函數(shù)層、池化層、全連接層和SoftMax 層的計算。直接內(nèi)存訪問模塊承擔數(shù)據(jù)的傳輸。處理器的功能是通過配置總線為整個系統(tǒng)的任務(wù)進行調(diào)度以及加速器中寄存器的配置。存儲器用于存儲輸入圖像數(shù)據(jù)、特征圖緩存數(shù)據(jù)和輸出結(jié)果數(shù)據(jù)。

        圖2 卷積神經(jīng)網(wǎng)絡(luò)加速系統(tǒng)架構(gòu)

        實驗實現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為LeNet-5,該卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的卷積核大小均為5 ×5,步長為1,池化方式采用平均池化,激活函數(shù)為ReLU 函數(shù)。輸入圖像尺寸固定為32 ×32。

        2.2 可調(diào)并行度的浮點基本運算模塊設(shè)計

        LeNet-5 網(wǎng)絡(luò)共有3 層卷積層,每層卷積層的卷積核種類分別為6、16、120。

        圖3 是浮點加法器結(jié)構(gòu)圖,運算數(shù)據(jù)為IEEE 754 標準格式的16 bits 浮點數(shù),2 個輸入記為操作數(shù)1 和操作數(shù)2,輸出為記為和。按照IEEE 754 標準格式將2 個輸入操作數(shù)拆包為符號位、指數(shù)位和尾數(shù)位。在操作數(shù)1 或操作數(shù)2 的特殊情況下,和分別為操作數(shù)2 或操作數(shù)1。一般情況下,首先比較2 個操作數(shù)的指數(shù)部分,以指數(shù)大的數(shù)為標準,另一個輸入操作數(shù)通過右移指數(shù)差值個位數(shù)使指數(shù)相等。其次判斷兩輸入的符號位,若符號位相同,則小數(shù)部分直接相加;若符號位不同,則用正數(shù)減負數(shù)。最后結(jié)果打包為IEEE 754 標準格式輸出。

        圖3 浮點加法器結(jié)構(gòu)圖

        圖4 是浮點乘法器結(jié)構(gòu)圖,2 個輸入操作數(shù)分別記為操作數(shù)1 和操作數(shù)2,輸出記為乘積。特殊情況下,其中一個輸入為0 時,乘積為0。一般情況下,首先用異或判斷符號位是否相同,若相同則乘積符號為正;若不同則符號位為負。根據(jù)IEEE 754 標準,乘積的指數(shù)為操作數(shù)1 的指數(shù)與操作數(shù)2 的指數(shù)的和,小數(shù)部分直接用一個乘法器相乘,乘積規(guī)則化的同時調(diào)節(jié)指數(shù)位。

        圖4 浮點乘法器結(jié)構(gòu)圖

        本文設(shè)計的浮點乘法器與浮點加法器組合成浮點基本運算單元,如圖5 所示。浮點乘法器輸入2個16 bits 的數(shù)據(jù),浮點加法器把浮點乘法器的結(jié)果與上一次累加的結(jié)果相加。

        設(shè)計的卷積運算單元如圖6 所示,其中例化浮點基本運算單元,每個浮點基本運算單元運算需要一個周期,根據(jù)卷積核的尺寸可以求出卷積運算單元需要的周期數(shù)。

        圖6 卷積運算單元

        設(shè)計的單通道卷積模塊并行結(jié)構(gòu)如圖7 所示,其中例化卷積運算單元模塊,通過改變例化卷積運算單元模塊的數(shù)量,可以控制單個卷積核對一個特征圖進行卷積運算的并行度。通過滑窗選擇模塊將輸入特征圖分割成與卷積核尺寸相同的多個滑窗塊,用于同時和卷積核計算。

        圖7 單通道卷積模塊并行結(jié)構(gòu)

        本文設(shè)計多通道模塊并行結(jié)構(gòu)如圖8 所示,通過增加例化單通道卷積模塊的數(shù)量,可以讓特征圖和不同卷積核同時進行卷積運算,提高了輸出通道的并行度。卷積核選擇模塊從卷積核堆中選擇需要運算的卷積核。

        圖8 多通道卷積模塊并行結(jié)構(gòu)

        2.3 激活層模塊

        本設(shè)計采用了ReLU 函數(shù)作為激活函數(shù)。

        ReLU 函數(shù)公式如式(1)所示。

        ReLU 函數(shù)圖像如圖9 所示。

        圖9 ReLU 函數(shù)圖像

        相較于Sigmoid 函數(shù)和tanh 函數(shù),ReLU 函數(shù)具有3 個優(yōu)勢。首先,它更貼近于生物學(xué)神經(jīng)元的工作方式。其次,梯度下降和方向傳播的效率更高,這有助于避免梯度爆炸和梯度消失等問題。最后,Re-LU 函數(shù)的計算較為簡單,不需要像其他復(fù)雜的激活函數(shù)一樣進行指數(shù)和冪函數(shù)運算,降低了資源開銷。根據(jù)ReLU 函數(shù),數(shù)據(jù)與0 比較即可得到輸出值。

        2.4 可調(diào)并行度的平均池化模塊設(shè)計

        設(shè)計平均池化單元結(jié)構(gòu)如圖10 所示,該單元由3 個浮點加法器和1 個移位寄存器組成。當執(zhí)行采樣區(qū)域尺寸為2 ×2 的池化運算時,如圖所示,將數(shù)據(jù)1 和數(shù)據(jù)2 相加、數(shù)據(jù)3 和數(shù)據(jù)4 相加,再將2 個和相加,加法器3 的輸出結(jié)果進入乘法器與常數(shù)0.25相乘得到一個池化采樣區(qū)的結(jié)果。

        圖10 平均池化單元

        設(shè)計單通道平均池化模塊并行結(jié)構(gòu)如圖11 所示。通過改變實例化平均池化單元的數(shù)量,可以調(diào)整池化采樣的并行度。在資源充足的情況下,可以盡可能地提高并行度,以提高運算效率。以LeNet-5網(wǎng)絡(luò)為例,當處理一張尺寸為N×N的特征圖時,最大并行度可以達到(N/2)× (N/2)。

        圖11 單通道池化模塊并行結(jié)構(gòu)

        設(shè)計多通道平均池化模塊結(jié)構(gòu)如圖12 所示,通過改變例化單通道平均池化模塊的數(shù)量而改變同時進行池化特征圖的層數(shù)。最大并行度即為特征圖深度。

        圖12 多通道平均池化模塊并行結(jié)構(gòu)

        2.5 優(yōu)化SoftMax 模塊設(shè)計以適應(yīng)FPGA 運算

        LeNet-5 神經(jīng)網(wǎng)絡(luò)的全連接層后還有一層Soft-Max 函數(shù),其作用是將求得的分類結(jié)果歸一化,得到每個分類的概率。而實際應(yīng)用中,只需要知道概率最大的一個或者幾個分類,并不需要關(guān)心其概率大小,所以為了減少資源開銷和提高運算速度,本設(shè)計采用比較器選擇出最大的一個分類來代替SoftMax模塊。

        3 實驗結(jié)果分析

        本實驗在Vivado 工具上進行仿真和綜合,電路最高工作頻率為100 MHz,在Xilinx 的Zynq UltraScale+MPSoC ZCU104 開發(fā)板上進行驗證。

        Xilinx FPGA 開發(fā)板資源名稱說明:查找表(look-up table,LUT);觸發(fā)器(flip-flop,FF);數(shù)字信號處理器(digital signal processing,DSP)。

        以下對各模塊的資源分配情況進行統(tǒng)計及分析。

        3.1 卷積單元模塊

        資源使用情況如表1 所示,該模塊使用205 個LUT,82 個FF,1 個DSP。

        表1 C 卷積單元模塊資源統(tǒng)計表

        由此可以看出,對于1 次卷積運算(1 塊卷積區(qū)域和1 個卷積核的卷積過程),只需要使用1 個DSP就可以實現(xiàn)。

        3.2 單通道卷積模塊

        資源使用情況如表2 所列,該模塊使用6137 個LUT,4296 個FF,28 個DSP。

        表2 單通道卷積模塊資源統(tǒng)計表

        該模塊的功能是將輸入特征圖的一個通道按卷積核尺寸分割成一定數(shù)量的待卷積運算的塊,其數(shù)量可以自由調(diào)節(jié)。當資源足夠,可以增加例化卷積單元的數(shù)量提高運算并行度。本實驗設(shè)置例化卷積單元的數(shù)量為28,即將輸入特征圖分割成28 個待卷積運算的塊,同時進行28 個卷積運算。

        3.3 多通道卷積模塊

        資源使用情況見表3,該模塊使用98 192 個LUT,68 736 個FF,448 個DSP。

        表3 多通道卷積模塊資源統(tǒng)計表

        該模塊的功能通過改變例化單通道卷積模塊的個數(shù)來改變同時輸出特征圖的通道數(shù)。卷積核選擇模塊從卷積核堆中選擇即將進行卷積的卷積核。在資源允許的情況下,該模塊可以通過例化更多的單通道卷積模塊,實現(xiàn)多個卷積核之間的運算并行度。

        3.4 結(jié)果分析

        在100 MHz 工作頻率下,計算輸入特征圖尺寸為14×14×6,與16 個尺寸為5 ×5 的卷積核進行卷積運算,例化的卷積單元模塊個數(shù)為28,單通道卷積模塊個數(shù)為16,此時加速器峰值算力為44.8 GFLOPS,功率為4.51 W。

        本文的硬件加速器性能與CPU、GPU 對比如表4所示,速度顯著高于CPU,功耗低于GPU 2 個量級。

        表4 CPU、GPU 與硬件加速器性能對比表

        本文的加速器性能與其他研究的硬件加速器對比如表5 所示,文獻[19]使用16 bits 定點數(shù),精度要低于本文的設(shè)計,對比文獻[20]的設(shè)計,本文的能效比要高2.15倍。

        表5 與其他硬件加速器研究比較表

        4 結(jié)論

        根據(jù)本文實驗部分的結(jié)果進行分析可以得出,本文設(shè)計的卷積運算單元資源開銷極少,核心運算單元DSP 只需要1 個。并且可以通過調(diào)節(jié)單通道卷積模塊和多通道卷積模塊中例化子模塊的數(shù)量來調(diào)節(jié)并行度,在不同資源的FPGA 上平衡面積、功耗和速度。

        未來的研究方向如下:卷積核內(nèi)的并行度對卷積運算的效率提升有重要的影響,可以考慮脈動陣列等方式使計算效率進一步提升;在數(shù)據(jù)傳輸上,可以考慮增加Ping-Pong 以減少數(shù)據(jù)存取帶來的延時。

        猜你喜歡
        浮點單通道池化
        基于緊湊型雙線性網(wǎng)絡(luò)的野生茵識別方法研究
        無線電工程(2024年8期)2024-09-16 00:00:00
        基于Sobel算子的池化算法設(shè)計
        LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
        卷積神經(jīng)網(wǎng)絡(luò)中的自適應(yīng)加權(quán)池化
        基于聯(lián)合聚類分析的單通道腹部心電信號的胎心率提取
        基于浮點DSP的鐵路FSK信號檢測
        基于卷積神經(jīng)網(wǎng)絡(luò)和池化算法的表情識別研究
        基于擴頻碼周期性的單通道直擴通信半盲分離抗干擾算法
        基于FPGA的浮點FIR濾波器設(shè)計
        采用6.25mm×6.25mm×1.8mm LGA封裝的雙通道2.5A、單通道5A超薄微型模塊穩(wěn)壓器
        国产精品无码午夜福利| 久久亚洲网站中文字幕| 乱码窝窝久久国产无人精品| 国产亚洲日本精品无码| 久久久精品国产亚洲成人满18免费网站 | 性色av免费网站| 日韩精品成人一区二区三区| 亚欧免费无码AⅤ在线观看| 韩国日本一区二区在线| 国内揄拍国内精品少妇| 欧美日韩不卡视频合集| 亚洲a∨好看av高清在线观看| 可以直接在线看国产在线片网址| 久久伊人少妇熟女大香线蕉| 欧美情侣性视频| 午夜日韩视频在线观看| 国产精品激情综合久久| 亚洲av高清一区二区| 99999久久久久久亚洲| 亚洲欧美精品伊人久久| 国产午夜av一区二区三区| 亚洲毛片在线观看免费| 日韩毛片无码永久免费看| 图图国产亚洲综合网站| 亚洲老熟妇愉情magnet| 人妻经典中文字幕av| 国产激情久久久久久熟女老人av| 亚洲V日韩V精品v无码专区小说| 91国产自拍视频在线| 性色视频加勒比在线观看| a级国产乱理伦片在线播放| 久久婷婷色香五月综合激情| 91精品亚洲熟妇少妇| 日本成人午夜一区二区三区| 亚洲加勒比久久88色综合 | 国产真实乱XXXⅩ视频| 视频女同久久久一区二区| 久久精品国产亚洲av无码娇色| 日韩专区欧美专区| 亚洲天堂av在线一区| 欧美日韩在线视频一区|