国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的高效可伸縮的MobileNet加速器實現(xiàn)*

2021-05-11 01:35蕭嘉樂梁東寶陳弟虎
計算機工程與科學 2021年4期
關(guān)鍵詞:加速器權(quán)值特征值

蕭嘉樂,梁東寶,陳弟虎,粟 濤

(中山大學電子與信息工程學院,廣東 廣州 510275)

1 引言

近些年來,深度卷積神經(jīng)網(wǎng)絡(luò)DCNN(Deep Convolutional Neural Network)模型在分類和識別任務(wù)上具有遠超傳統(tǒng)算法的正確率,被廣泛應(yīng)用于機器視覺領(lǐng)域。而FPGA由于可定制的并行邏輯和相對較高的能耗效率,在加速DCNN任務(wù)方面具有一定優(yōu)勢。在大多數(shù)基于FPGA的DCNN實現(xiàn)中,有2個主要研究方向:一是實現(xiàn)的FPGA盡可能地去適配不同網(wǎng)絡(luò)架構(gòu)。文獻[1]嘗試通過參數(shù)化設(shè)計來為所有可能的網(wǎng)絡(luò)實現(xiàn)一個通用的計算結(jié)構(gòu)。二是針對某一個網(wǎng)絡(luò)結(jié)構(gòu)進行深度優(yōu)化,文獻[2,3]探索了適用于具有殘差模塊網(wǎng)絡(luò)的新的映射策略,例如ResNet和Xception。

本文針對的是嵌入式領(lǐng)域的硬件加速器應(yīng)用,MobileNet網(wǎng)絡(luò)以其低計算量和參數(shù)量被廣泛用于嵌入式領(lǐng)域,但MobileNet網(wǎng)絡(luò)的計算特點使其對現(xiàn)有的加速器(文獻[4,5])利用率不高,具體表現(xiàn)在比較難達到硬件所具有的理論峰值性能,而嵌入式領(lǐng)域硬件資源往往有限,這個問題急需解決。還有一點,嵌入式領(lǐng)域的硬件資源差異較大,針對MobileNet網(wǎng)絡(luò)的加速器還需要具備一定的可伸縮性,即針對不同的資源限制,都能獲得較高的利用率。

本文的主要貢獻有:

(1)設(shè)計了一個具有一定可伸縮性的MobileNet硬件加速器結(jié)構(gòu),對于0~4 000的乘法器開銷都能保持70%以上的計算效率。

(2)在加速器結(jié)構(gòu)上實現(xiàn)了基于MobileNet的Hourglass網(wǎng)絡(luò),最終的計算效率高于其他MobileNet網(wǎng)絡(luò)加速器的。

本文的組織如下所示,首先介紹了深度可分離卷積和MobileNet網(wǎng)絡(luò)的背景知識;接著描述加速器結(jié)構(gòu),主要包括計算陣列和片上緩存器;再接著探索了該加速器架構(gòu)的設(shè)計空間;然后給出了加速器性能的實驗分析與對比;最后是總結(jié)。

2 背景介紹

2.1 深度可分離卷積

深度可分離卷積首先是在文獻[6]中提出的。在這種卷積中,標準的卷積操作被拆分為2個步驟:逐層卷積和逐點卷積。逐層卷積首先在不同通道的輸入特征圖上分別提取特征,然后進行逐點卷積,以1×1卷積的方式組合不同通道中的結(jié)果。標準卷積、逐層卷積和逐點卷積之間的差異如圖1所示。其卷積輸入的特征值的行數(shù)為H、列數(shù)為W、輸入通道數(shù)為IC,經(jīng)過卷積窗口為K×K的卷積后,輸出通道為OC。

Figure 1 Comparison of three kinds of convolution圖1 3種卷積方式的對比圖

文獻[7]證明,深度可分離卷積具有較少的權(quán)值和卷積運算,同時可獲得與標準DCNN網(wǎng)絡(luò)相當?shù)木取?紤]到一般使用的標準卷積核為3×3,那么深度可分離卷積的權(quán)值量和計算開銷均會是標準卷積的1/9~1/8。

2.2 MobileNet網(wǎng)絡(luò)

本文主要研究MobileNetV2網(wǎng)絡(luò),該網(wǎng)絡(luò)以其低權(quán)值存儲和計算開銷同時還能保持高識別準確度被應(yīng)用于嵌入式領(lǐng)域。其計算過程可抽象為表1所示的步驟。其中,CONV為標準卷積,IRB(Inverted Residual Bottleneck)為倒殘差瓶頸;模塊avgpool為平均池化操作,t為縮放系數(shù),c為輸出通道數(shù),n為重復次數(shù),s為步進。

Table 1 The structure of MobileNetV2

MobileNetV2網(wǎng)絡(luò)的主要組成部分是倒殘差瓶頸模塊,其是由深度可分離卷積衍生而來的,具體操作過程如圖2所示。

Figure 2 Procedure of two kinds of inverted residual bottlenecks圖2 2種倒殘差瓶頸模塊操作過程圖

以通道數(shù)c為32,縮放系數(shù)t為4為例,對于s=1的模塊,需要進行1次擴張層計算(逐點卷積),再通過1次特征提取計算(逐層卷積)和1次壓縮層計算(逐點卷積)。這個過程中特征值通道會先擴張至32×4再壓縮至32,最后將原始輸入旁路與計算結(jié)果相加得到一個倒殘差瓶頸模塊的計算結(jié)果。而s=2的模塊只是少了旁路相加這一部分。

3 高效可伸縮MobileNet加速器硬件設(shè)計

3.1 整體結(jié)構(gòu)

圖3顯示了高效可伸縮MobileNet加速器的結(jié)構(gòu),在加速器中,控制模塊通過AXILite總線從嵌入式處理器接收控制指令,并將其轉(zhuǎn)換為加速器中其他模塊的內(nèi)部控制信號。并行計算陣列負責堆疊式沙漏網(wǎng)絡(luò)的所有計算。緩存器模塊負責外部存儲器和片上緩存器之間輸入特征值和權(quán)值以及輸出結(jié)果的傳遞。數(shù)據(jù)聚集-發(fā)散模塊作為特征值、權(quán)值緩存與外部存儲之間的橋梁,充當著類似直接內(nèi)存訪問的工作。

Figure 3 Block diagram of the accelerator system圖3 硬件加速器結(jié)構(gòu)圖

3.2 數(shù)據(jù)排布方式

特征值數(shù)據(jù)具有3個維度,分別是行、列和通道??紤]一個維度為x×x×x的特征值塊,傳統(tǒng)的行優(yōu)先數(shù)據(jù)排列(這意味著數(shù)據(jù)首先沿行方向排列,然后依次沿列和通道方向排列,如圖4a所示,其中序號表示其在特征值緩存中的排布順序)適用于通道分離的逐層卷積,而在MobileNet網(wǎng)絡(luò)中,逐點卷積在整個計算中占據(jù)了很大一部分。逐點卷積對來自不同通道的特征圖進行卷積,并一次生成一幅特征圖。此時若仍使用行優(yōu)先數(shù)據(jù)排列則會由于輸入不連續(xù),給逐點卷積帶來數(shù)據(jù)獲取上的困難,降低計算效率。為了解決這些問題,本文使用通道優(yōu)先的排布方式(這意味著數(shù)據(jù)首先沿通道方向排列,然后依次沿行和列方向排列,如圖4b所示)。在本文設(shè)計的硬件加速器中片上緩存器和片外存儲所儲存的權(quán)值、特征值數(shù)據(jù)均以通道有限的排布方式存在,而行優(yōu)先的數(shù)據(jù)排列只會存在于并行計算陣列的計算過程中,這會在第3.3節(jié)中詳細介紹。

Figure 4 Two kinds of data arrangement圖4 2種數(shù)據(jù)排布方式示意圖

3.3 并行計算陣列

針對MobileNet網(wǎng)絡(luò)基本結(jié)構(gòu)為1次逐點卷積、1次逐層卷積和再一次逐層卷積的特點,本文使用的計算陣列結(jié)構(gòu)如圖5所示,其中CVA(ConVolution model A)計算陣列適用于第1層的逐點卷積;CVB(ConVolution model B)計算陣列適用于第2層的逐層卷積;CVC(ConVolution model C)計算陣列適用于第3層的逐點卷積。

Figure 5 Structure of the convolution-layer parallel computing array圖5 卷積層級并行計算陣列結(jié)構(gòu)圖

(1)CVA計算陣列。

該模塊用于加速計算倒殘差瓶頸模塊中的膨脹層。如圖5所示,該計算陣列的并行計算有3個維度:同時滿足Ccalca個計算通道的并行計算;每個計算通道內(nèi)滿足La行特征值的并行計算;而每個計算行中滿足Nmulta個輸入通道的同時計算(這是由于逐點卷積計算過程中是優(yōu)先進行通道間的卷積的)。所以,CVA的最小堆疊單元為并行的Nmulta個乘法器與1個Nmulta輸入1輸出的加法樹。還需要注意的是,該計算陣列的輸入數(shù)據(jù)格式是通道優(yōu)先的數(shù)據(jù)排布,而輸出格式是行優(yōu)先的數(shù)據(jù)排布,以保證后續(xù)逐層卷積的數(shù)據(jù)讀入的連續(xù)性。

(2)CVB計算陣列。

該模塊用于計算倒殘差瓶頸模塊中的逐層卷積模塊(通道分離的3×3卷積)。與CVA計算陣列類似,CVB計算陣列也可以分為計算通道Ccalcb、計算行數(shù)Lb和并行乘法數(shù)Nmultb3個維度。不同的是,在該模塊中,最小堆疊單元被固定為并行的3個乘法器與3輸入1輸出的加法樹,這是由于每個時鐘周期CVB模塊都能從CVA模塊的輸出獲取3行1列的特征值,因此CVB模塊若要完成1次3×3卷積則需要3個周期。此外,最小單元還需要添加行緩存模塊,這是由于3×3卷積計算帶來的行相關(guān)性,需要將本行計算需要的1或2行特征值緩存以用于下一行計算。而在數(shù)據(jù)排布方面,CVB模塊輸入的數(shù)據(jù)是按照行優(yōu)先的方式排布,而輸出的數(shù)據(jù)是按照通道優(yōu)先的方式排布。

(3)CVC計算陣列。

該模塊用于加速倒殘差瓶頸模塊中的最后一層逐點卷積,整體結(jié)構(gòu)上與CVA模塊相似,其區(qū)別是該層的數(shù)據(jù)輸入是按照通道優(yōu)先的方式排布,輸出也是按照通道優(yōu)先的方式排布。

(4)ADD累加陣列。

ADD累加陣列用于處理倒殘差瓶頸模塊中的支路殘差求和部分。該陣列只有2個并行維度:并行計算通道數(shù)Ccalc和并行計算的行數(shù)LADD。ADD陣列的最小單元是1個二輸入的加法器。該陣列的計算不改變數(shù)據(jù)排布方式,均為通道優(yōu)先的排布方式。

3.4 其他計算操作的處理

(1)標準卷積。

如圖1所示,標準卷積的操作實際上可拆分為1次逐層卷積和1次逐點卷積,其中需要考慮這2層卷積的權(quán)值。逐層卷積可直接沿用標準卷積中的權(quán)值,而對于逐點卷積權(quán)值,則需要生成對應(yīng)的0-1矩陣來代表不同計算通道之間的累加。標準卷積的過程則可以映射到以上計算陣列中的CVB和CVC模塊。

(2)ReLU激活操作。

ReLU操作使用的是f(x)=max(0,x)函數(shù),在網(wǎng)絡(luò)中是可選的,該過程僅在計算單元輸出階段將負數(shù)結(jié)果替換為零。

3.5 緩存器設(shè)計

(1)乒乓權(quán)值緩存器。

權(quán)值緩存器使用乒乓緩存機制處理,即將權(quán)值緩存器分為等大的2個部分:權(quán)值緩存器0和權(quán)值緩存器1,如圖6所示。當其中一個從外部存儲讀取權(quán)值時,另一個緩存器可作為計算陣列的輸入,以此將從片外讀取權(quán)值的時間隱藏在計算時間內(nèi),提高計算效率。

(2)分時復用的特征值緩存器。

特征值緩存器同樣被分割為2個大小相同的可分時復用的緩存器。每個緩存器均可作為計算陣列的輸入、輸出緩存。例如,在計算第n個倒殘差瓶頸模塊的任務(wù)時,緩存器0作為計算陣列的特征值輸入緩存,緩存器1則作為輸出緩存;而在計算第n+1個倒殘差瓶頸模塊的任務(wù)時,則相反。這樣在完成一幅圖像處理時可減少特征值緩存器與外部存儲的數(shù)據(jù)交換,節(jié)約帶寬。

Figure 6 Structures of the weight and feature buffers圖6 權(quán)值和特征值緩存器示意圖

3.6 數(shù)據(jù)的分塊策略

數(shù)據(jù)的分塊處理是指將一層卷積分割為若干層卷積進行計算,因為片上緩存器大小是固定的,為適應(yīng)不同分辨率的特征圖像,數(shù)據(jù)需要分塊處理。如圖1所示,逐層卷積前后特征值通道不變,而逐點卷積由于涉及到通道之間的累加,所以卷積前后通道數(shù)會改變,因此數(shù)據(jù)的分割會發(fā)生在逐點卷積的輸出部分,即CVA與CVC計算陣列的輸出部分。若用Cfst_o表示倒殘差瓶頸模塊中第1層逐點卷積的輸出通道數(shù),Ctrd_o表示第3層逐點卷積的輸出通道數(shù),則可以得到分塊的次數(shù)DA和DC:

(1)

(2)

其中ceil表示向上取整函數(shù)。

得到分塊的次數(shù)后,可以將一幅圖像的加速處理操作抽象成如圖7所示的循環(huán)操作。其中需要考慮DA與DC循環(huán)的計算次序問題。圖7列出的2種計算次序分別是DA循環(huán)優(yōu)先和DC循環(huán)優(yōu)先,其中Layer_MAX表示MobileNet網(wǎng)絡(luò)的最大計算層數(shù):Hlayer和Wlayer分別表示第layer層的特征值的行數(shù)和列數(shù),則可以看出采取DC循環(huán)優(yōu)先的方式可以減少CVA與CVB陣列中的重復計算。

Figure 7 Two computing orders

3.7 設(shè)計空間搜索

為了驗證本文設(shè)計的硬件加速器在不同硬件資源約束下的可伸縮性,定義了一個表征參數(shù)計算效率:

(3)

由于不同卷積神經(jīng)網(wǎng)絡(luò)加速器的實現(xiàn)會因資源占用以及使用的工藝不同導致工作頻率有差異,而計算效率這一參數(shù)可以拋開這2個差異,對加速器結(jié)構(gòu)的效率做出一個正確的評價。通過修改3.3節(jié)中提到的并行度參數(shù)(并行度直接反映出所用乘法器的數(shù)量),可以得到如圖8所示的乘法器數(shù)量與計算效率之間的關(guān)系圖。可以看出,當乘法器資源從0~4 000變化時,本文設(shè)計的計算架構(gòu)可以保持70%以上的計算效率,在這個范圍內(nèi)具有一定的可伸縮性。同時還可以發(fā)現(xiàn),隨著硬件資源的增加其計算效率的最高值在下降,這是由于隨著并行度的增大而網(wǎng)絡(luò)的尺寸不變,那么在進行小尺寸計算時(并行尺寸大于特征圖尺寸時)則會出現(xiàn)部分資源閑置,從而使計算效率下降。

Figure 8 Relationship between multiplier occupation and calculation efficiency of hardware accelerator圖8 硬件加速器的乘法器占用與計算效率的關(guān)系

4 實驗結(jié)果與分析

采用XILINX Zynq-7000 ZC706開發(fā)板作為實驗平臺,實現(xiàn)了上述加速器。該開發(fā)板擁有218 600個LUT、545個Block RAM和900個DSP。下面將討論實現(xiàn)結(jié)果和性能比較。

本文采用的數(shù)據(jù)精度為16位定點,根據(jù)以上討論,并行計算陣列參數(shù)如表2所示,其中x在不同的模塊中分別可表示為a、b、c和add,而所占用的資源如表3所示,其中特征值緩存器的大小為12 Mb,而權(quán)值緩存器的大小為3.25 Mb。在該硬件加速器上完成了基于MobileNetV2的Hourglass網(wǎng)絡(luò)處理,該網(wǎng)絡(luò)被廣泛應(yīng)用于人體姿態(tài)識別。硬件加速器可工作在150 MHz的工作頻率下,且實現(xiàn)了6.11 ms處理一幅圖像的工作效率,而該網(wǎng)絡(luò)的計算量約為0.953 Gop,通過計算得到本文設(shè)計的硬件加速器的性能約為156 Gop/s,計算效率約為61%。計算效率略低于3.7節(jié)設(shè)計空間探索中所得到的70%,這是由于隨著網(wǎng)絡(luò)的層數(shù)加深,卷積的尺寸變小,通道數(shù)增加,數(shù)據(jù)分割后的單次計算時間小于單次計算所需要的權(quán)值的傳輸時間,因此即使使用乒乓緩存機制也無法隱藏傳輸時間,對計算效率造成了一定的影響。

表4給出了本文設(shè)計的硬件加速器與其他MobileNet加速器實現(xiàn)的對比結(jié)果,可以看出本文設(shè)計的硬件加速器在計算效率上優(yōu)于其他實現(xiàn)的。

Table 2 Parameters of parallel computing array

Table 3 Resource utilization

Table 4 Comparison of experimental results

5 結(jié)束語

本文提出了一個適用于MobileNet神經(jīng)網(wǎng)絡(luò)的硬件加速器結(jié)構(gòu),其具有一定的可伸縮性,在不同的硬件資源開銷下能保持70%以上的計算效率,并用Hourglass-MobileNet網(wǎng)絡(luò)給予了驗證。但是,該結(jié)構(gòu)仍存在著一些問題,例如在卷積尺寸較小時無法隱藏權(quán)值讀取時間,這是以后的工作中需要解決的問題。

猜你喜歡
加速器權(quán)值特征值
莫比斯加速器眾創(chuàng)辦公空間
知識快餐店 科學加速器
一種融合時間權(quán)值和用戶行為序列的電影推薦模型
一類帶強制位勢的p-Laplace特征值問題
全民小康路上的“加速器”
單圈圖關(guān)聯(lián)矩陣的特征值
CONTENTS
H型群上一類散度形算子的特征值估計
基于權(quán)值動量的RBM加速學習算法研究
基于多維度特征權(quán)值動態(tài)更新的用戶推薦模型研究
庆云县| 临桂县| 门头沟区| 涟源市| 夏津县| 方山县| 色达县| 抚顺县| 永寿县| 石楼县| 桃源县| 玛多县| 平山县| 彰武县| 新野县| 榕江县| 贵州省| 阳东县| 黎川县| 额尔古纳市| 晋江市| 信阳市| 赣榆县| 迁西县| 静乐县| 霍城县| 荃湾区| 林州市| 玛纳斯县| 普兰县| 德清县| 宣化县| 扶绥县| 池州市| 荔浦县| 千阳县| 朝阳县| 望奎县| 抚宁县| 融水| 谢通门县|