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

?

基于FPGA的加速器設(shè)計方法研究

2021-12-29 03:55:22盧敏
現(xiàn)代計算機 2021年31期
關(guān)鍵詞:加速器嵌入式架構(gòu)

盧敏

(西華大學(xué)計算機與軟件工程學(xué)院,成都 610039)

0 引言

近年來,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在計算機視覺及其他領(lǐng)域的各種任務(wù)中實現(xiàn)了最先進的準(zhǔn)確性,在針對復(fù)雜場景中的目標(biāo)檢測、圖像分類和自然語言處理等取得了巨大的成功[1]。隨著智能物聯(lián)網(wǎng)和邊緣設(shè)備的飛速普及,嵌入式移動設(shè)備引起了廣泛的關(guān)注。神經(jīng)網(wǎng)絡(luò)技術(shù)不斷擴展到一些低計算和低功耗的移動設(shè)備上,比如自動駕駛、無人機和智能機器人等。人們對在邊緣設(shè)備上實現(xiàn)機器學(xué)習(xí)算法的需求越來越迫切。然而,CNN的計算復(fù)雜性和內(nèi)存帶寬要求成為阻礙CNN在低功耗邊緣設(shè)備上普遍使用的主要障礙之一。所以,運行在移動設(shè)備的算法不僅需要更高的精度,還需要具備低時延、低功耗的特點。常用的CNN結(jié)構(gòu),隨著網(wǎng)絡(luò)深度的增加,網(wǎng)絡(luò)性能提高的同時也增大了計算量,不適用于資源受限的移動端。因此,在低功耗、計算資源和內(nèi)存帶寬的限制下保持高精度和吞吐量是在嵌入式平臺上部署CNN模型需要解決的關(guān)鍵問題。

為了降低模型復(fù)雜度,使其能在資源受限的邊緣設(shè)備上運行,以達到實時檢測的目的,輕量化神經(jīng)網(wǎng)絡(luò)模型得到了廣泛的關(guān)注[2]。實現(xiàn)模型輕量化一般有兩種方法。第一種是對已有的模型壓縮。CNN算法模型通常過度參數(shù)化并表現(xiàn)出明顯的冗余,因此適用于減小模型大小。權(quán)重量化、剪枝、蒸餾和低秩分解是為優(yōu)化CNN模型而提出的一些方法。另一種實現(xiàn)模型輕量化的方法是人工設(shè)計更小、更高效的CNN架構(gòu)。目前研究人員總是使用更復(fù)雜的網(wǎng)絡(luò)來提高檢測的準(zhǔn)確性。然而,復(fù)雜的網(wǎng)絡(luò)花費了大量的資源,不適合用于移動設(shè)備和嵌入式設(shè)備。為了解決這些問題,參數(shù)較少的模型得到了越來越多的關(guān)注。近年來提出了MobileNet、GhostNet、SqueezeNet等輕量級卷積神經(jīng)網(wǎng)絡(luò)[3]。

神經(jīng)網(wǎng)絡(luò)由于其高精度而被廣泛用于分類識別任務(wù)。然而,推理是一個計算密集型過程,通常需要硬件加速才能實時運行。常用的部署神經(jīng)網(wǎng)絡(luò)的平臺有CPU、GPU和FPGA。CPU采用傳統(tǒng)串行指令架構(gòu),推理過程計算復(fù)雜,執(zhí)行起來效率低下。GPU提供了大規(guī)??梢圆⑿袌?zhí)行的計算資源和較高的內(nèi)存處理速度。然而,它們的高性能是以高功耗為代價的,不適用于在邊緣設(shè)備運行。FPGA具有功耗低和可編程性的特點,目前它已經(jīng)成為了不錯的選擇。FPGA硬件電路的并行性和流水線性,將提供實現(xiàn)復(fù)雜算法的能力,為算法的實時和高效實現(xiàn)提供了可能性。

1 輕量化網(wǎng)絡(luò)模型

Google的MobileNet是專為小型模型移植到計算和存儲資源有限但追求高精度低延時的嵌入式平臺上而設(shè)計的[4]。在MobileNet架構(gòu)中,普通卷積被深度可分離卷積替代。通過深度可分離卷積成功地最小化了參數(shù)大小和計算延遲。

1.1 深度可分離卷積

深度可分離卷積是MobileNet模型中提出的分解標(biāo)準(zhǔn)卷積的一種形式。在普通卷積中,每個輸入通道與其特定的卷積核進行卷積,所有輸入通道的卷積結(jié)果相加產(chǎn)生一個輸出通道[5]。在深度可分離卷積中,卷積分為深度卷積(DW)和逐點卷積(PW)。深度卷積的卷積核分別和每個輸入通道卷積以產(chǎn)生相同數(shù)量的輸出通道。逐點卷積其實就是卷積核為1×1的普通卷積。深度可分離卷積的因式分解極大地降低了操作復(fù)雜度和參數(shù)的數(shù)量。

深度卷積使用單獨的卷積核計算單個通道,負(fù)責(zé)從空間上提取信息。因此,卷積核具有與輸入相同數(shù)量的通道,生成的輸出圖像保留其深度。深度卷積的過程是將卷積核與輸入特征圖對應(yīng)的通道進行卷積,卷積核從輸入圖像的左上角向右和向下滑動,區(qū)域的數(shù)據(jù)和權(quán)重相乘相加[6]。

逐點卷積一般用于增加或減少圖像的深度。由于深度卷積只負(fù)責(zé)單通道的卷積,缺少通道間的聯(lián)系。逐點卷積使用[1×1×N]的卷積核使不同通道間的特征產(chǎn)生聯(lián)系。

如圖1所示,輸入特征圖的尺寸為D F?D F?M卷積核尺寸為D K?D K,輸出特征尺寸為D F?D F?N,M是輸入通道數(shù),N是輸出通道數(shù)。在步長為1的情況下,普通卷積的卷積計算為D K?D K?M?N?D F?D F深度卷積為D K?D K?M?D F?D F,逐點卷積為M?N?D F?D F,所以深度可分離卷積和普通卷積之間的算力消耗比如下所示:

圖1 深度可分離卷積

由此可以推斷,使用深度可分離卷積在計算時可以大幅度地降低運算量。

1.2 倒殘差和線性瓶頸結(jié)構(gòu)

深度卷積無法捕獲按通道方面的信息。同樣,逐點卷積弱化了運算復(fù)雜度,同時也完全降低了通道深度。然而,隨著特征沿著網(wǎng)絡(luò)深度移動并嵌入到低維空間中,仍然存在信息丟失。2018年文獻[7]中提出的MobileNet V2采用更先進的方式,在MobileNet的基礎(chǔ)上,增加了一個具線性瓶頸和反向殘差結(jié)構(gòu)的模塊。在不犧牲檢測精度的情況下,進一步降低了計算量和模型大小。

MobileNet V2將卷積、歸一化和激活階段組合成倒殘差瓶頸模塊,如圖2所示。通常,殘差塊開始和結(jié)束是寬層,即寬-窄-寬。但是反向殘差以相反的方式實現(xiàn)它,即窄-寬-窄。該結(jié)構(gòu)首先用逐點卷積擴展了輸入特征圖中的信道數(shù),然后用深度卷積提取了特征。最后,它用逐點卷積投影簡化到原始維,并在特定塊中添加跳轉(zhuǎn)連接,以便網(wǎng)絡(luò)仍然可以在更深的層次上進行訓(xùn)練。線性瓶頸層還為了保留低維輸入的信息,將最后一層的低維特征圖中的ReLU激活函數(shù)換成了更適合的線性激活函數(shù)。

圖2 倒殘差瓶頸結(jié)構(gòu)

1.3 網(wǎng)絡(luò)模型

MobileNetV2的模型如表1所示,其中參數(shù)t為瓶頸層升維的倍數(shù),參數(shù)c為特征的維數(shù),參數(shù)n為該瓶頸層重復(fù)的次數(shù),參數(shù)s為瓶頸層第一個卷積的步幅。它在第一層使用標(biāo)準(zhǔn)卷積組合RGB通道,使用18個瓶頸塊提取特征,并使用平均池化和全連接層對特征進行分類。神經(jīng)網(wǎng)絡(luò)有340萬個參數(shù)。

表1 MobileNet V2網(wǎng)絡(luò)結(jié)構(gòu)表

2 神經(jīng)網(wǎng)絡(luò)硬件加速

本節(jié)首先介紹了加速器的整體系統(tǒng)體系結(jié)構(gòu),然后確定每個網(wǎng)絡(luò)層的最佳并行度,隨后給出了設(shè)計,并進行了優(yōu)化。

2.1 總體架構(gòu)

MobileNet V2加速器的總體架構(gòu)如圖3所示。異構(gòu)架構(gòu)包括處理系統(tǒng)(PS)、集成了一個可編程處理器(ARM)用作控制器和一個存儲CNN的圖像和權(quán)重數(shù)據(jù)的片外存儲器、可編程邏輯(PL)。ARM使用AXI協(xié)議將控制數(shù)據(jù)和權(quán)重數(shù)據(jù)的片外存儲器(DDR)地址寫入PL,然后通過直接內(nèi)存訪問(DMA)將輸入特征圖和卷積權(quán)重數(shù)據(jù)流導(dǎo)入內(nèi)存(BRAM)作為數(shù)據(jù)流發(fā)送到每個處理單元。每個CNN層在硬件中由一個功能單元(PE)表示。每個PE都是專門進行特定計算的,可以簡單地合成不同的CNN模型。PL使用可重構(gòu)邏輯實現(xiàn)了計算MobileNet V2各種層的功能單元(PE)。并且這些PE可以并行執(zhí)行。PE計算完成后DMA將每個輸出映射作為數(shù)據(jù)流寫入外部存儲器。加速器迭代數(shù)據(jù),直到完成推理。

圖3 加速器總體架構(gòu)

2.2 并行分析

加速器試圖最大限度地提升資源利用率,以最快的計算速度完成CNN的推理。性能和資源利用在不同的并行策略下有所差異。為了確定卷積層適合的并行化策略,應(yīng)該考慮它們之間的數(shù)據(jù)關(guān)系以及并行性和資源約束之間的關(guān)聯(lián)。卷積過程中的并行化計算大致有三種,包括多卷積層之間的并行計算、輸入和輸出特征圖的多通道并行計算,以及卷積核中的并行計算。

2.2.1 層間并行

在多層卷積神經(jīng)網(wǎng)絡(luò)中,有些卷積操作不需要等到上一步全部完成才能開始下一層的卷積,所以能夠通過建立流水線的形式去并行運算。但是,由于相鄰層之間存在的數(shù)據(jù)相關(guān)性阻礙了卷積神經(jīng)網(wǎng)絡(luò)各層間計算的并行執(zhí)行,卷積層級別的并行性一般比較低[8]。

2.2.2 通道并行

由于MobileNetV2是由瓶頸層構(gòu)建的,因此每個深度卷積層都被一個1×1的擴展層和一個1×1的投影層包圍。逐點卷積和深度卷積幾乎占運算負(fù)載的100%。卷積的過程中輸入特征圖的不同通道之間的輸入圖像數(shù)據(jù)和權(quán)重數(shù)據(jù)與最終輸出結(jié)果沒有沖突。不同通道不存在數(shù)據(jù)依賴,可以實現(xiàn)并行計算。如果輸入特征圖中有M個通道,則實例化對應(yīng)M個乘加單元。

2.2.3 卷積核并行

與逐點卷積層相比,深度卷積層的操作數(shù)其實很小。逐點卷積具有較少的算法和較少的數(shù)據(jù)移動復(fù)雜性,最適合大量并行。由于逐點卷積的密集運算,這個算子的設(shè)計可以類似于一般矩陣乘法的設(shè)計,非常適合收縮陣列。不一樣的卷積核提取一樣的輸入圖像數(shù)據(jù),可以復(fù)用輸入的特征數(shù)據(jù),提高計算效率。通過最大程度的數(shù)據(jù)重用,逐點卷積可以利用最大的并行性。

3 實驗結(jié)果分析

3.1 實驗環(huán)境

該項目使用的FPGA平臺是基于Xilinx Zynq-7000 SoC的ZedBoard,如圖4所示。Zynq-7000包含兩個子系統(tǒng):處理系統(tǒng)(PS)和可編程邏輯(PL),具有660萬個邏輯單元。PL包含CNN加速核心,運行核心驅(qū)動程序,PS主要用于初始化和配置CNN,向其提供數(shù)據(jù)并接收結(jié)果。這兩個子系統(tǒng)在CNN中協(xié)同工作。系統(tǒng)相互通信是AXI接口進行實施的。兩個系統(tǒng)還可以使用由PS控制的AXI-DMA內(nèi)核訪問DDR3內(nèi)存。與PS的通信使用SD讀卡器和UART串口完成。

圖4 實驗平臺

由于ZynqSoC的資源很少,一般使用PC來訓(xùn)練模型,并將權(quán)重下載到Zynq-7000嵌入式平臺進行測試。采用高級合成方法將CNN部署到Zynq板的實驗過程如下:①在PC上訓(xùn)練網(wǎng)絡(luò)得到權(quán)重參數(shù)。②在Vivado高級綜合工具HLS中使用C或C++編程語言編寫高級綜合來描述檢測網(wǎng)絡(luò),實現(xiàn)底層描述。進行仿真創(chuàng)建RTL代碼,封裝成CNN加速器IP核。③導(dǎo)入IP,在建立的加速器系統(tǒng)中運行,生成比特流文件。將IP核集成到整個系統(tǒng)體系結(jié)構(gòu)中,并與嵌入式處理器實現(xiàn)進行比較。④下載比特流文件,在Zynq板上進行驗證[9]。

3.2 實驗結(jié)果

本文首先在ImageNet圖像數(shù)據(jù)集上運行基于ZynqSoC框架的MobileNetV2模型,得到模型參數(shù)。結(jié)果得出MobileNetV2識別單幅圖像的時間僅為17.821 s,計算復(fù)雜度是1.253 Bn,網(wǎng)絡(luò)參數(shù)個數(shù)只有15.23 MB??梢钥闯鯩obileNetV2不僅保持了較高的識別精度,與其他網(wǎng)絡(luò)結(jié)構(gòu)比較,計算復(fù)雜度和存儲資源占用更低,非常適合用來部署在資源少的邊緣設(shè)備上。

Xilinx Vivado工具在Zynq SoC架構(gòu)上提出的加速器硬件架構(gòu)體系如圖5所示。包含時鐘、AXI總線控制、CNN IP核、DMA內(nèi)存訪問控制、DDR存儲設(shè)置、Zynq處理系統(tǒng)模塊。其中CNN模塊是核心,DMA模塊將讀寫IP核和RAM之間的像素流。Zynq7處理系統(tǒng)是包含嵌入式處理器的塊。AXI將處理硬件架構(gòu)的不同塊之間的互連。

圖5 系統(tǒng)模塊設(shè)計

根據(jù)生成的IP核的綜合結(jié)果可以看出,生成的IP核在DSP、BRAM、FF和LUT方面需要較低的FPGA資源,執(zhí)行時間也非??欤@使得可以將其集成到任何需要卷積的系統(tǒng)全局架構(gòu)中。實驗證明,運行CNN硬件加速器處理圖像的運行速度會比在嵌入式上運行快約30倍。這些結(jié)果表明,所提出的通過卷積設(shè)計進行圖像和視頻處理的協(xié)同設(shè)計方法需要較低的FPGA資源,滿足在嵌入式設(shè)備中運行的需求。

4 結(jié)語

為了將神經(jīng)網(wǎng)絡(luò)技術(shù)應(yīng)用于嵌入式平臺,針對嵌入式平臺資源少、計算能力低的特點,構(gòu)建了具有深度可分離卷積的輕量級模型MobileNetV2的神經(jīng)網(wǎng)絡(luò)加速框架并部署在Zynq-7000開發(fā)板上。在這項工作中,采用了一種協(xié)同設(shè)計方法,使用Vivado HLS設(shè)計用于實時圖像和視頻處理的加速器系統(tǒng)?;谒岢龅姆椒?,該加速器實現(xiàn)了較高的檢測速度和精度,符合在嵌入式系統(tǒng)中使用的設(shè)計要求??偠灾?,由于CNN模型的改進和硬件加速技術(shù),該系統(tǒng)實現(xiàn)了較高的識別率和精度,較低的系統(tǒng)存儲開銷,可用于移動終端。

猜你喜歡
加速器嵌入式架構(gòu)
輪滑加速器
化學(xué)工業(yè)的“加速器”
基于FPGA的RNN硬件加速架構(gòu)
全民小康路上的“加速器”
少先隊活動(2021年6期)2021-07-22 08:44:24
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實踐
汽車工程(2021年12期)2021-03-08 02:34:30
搭建基于Qt的嵌入式開發(fā)平臺
LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實現(xiàn)
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
等待“加速器”
一種基于FPGA+ARM架構(gòu)的μPMU實現(xiàn)
商洛市| 原阳县| 乌恰县| 东宁县| 依兰县| 嘉善县| 博客| 会泽县| 肃宁县| 潮安县| 新巴尔虎左旗| 崇礼县| 平湖市| 宜城市| 留坝县| 凤山市| 和龙市| 淮滨县| 且末县| 巴中市| 祁阳县| 巴塘县| 龙州县| 高青县| 云梦县| 娱乐| SHOW| 邻水| 安义县| 明水县| 务川| 恩平市| 临海市| 遵化市| 沂南县| 昭苏县| 辽宁省| 平舆县| 平邑县| 连江县| 闽清县|