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

        ?

        輕量化神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計與實(shí)現(xiàn)

        2021-09-15 07:36:20金光浩姜文超宋慶增
        計算機(jī)工程 2021年9期
        關(guān)鍵詞:加速器輕量化上位

        黃 瑞,金光浩,李 磊,姜文超,宋慶增

        (1.天津工業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300387;2.廣東工業(yè)大學(xué) 計算機(jī)學(xué)院,廣州 510006)

        0 概述

        隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,諸如智慧城市、智能醫(yī)療、無人駕駛、軍事安防等場景,都在大量部署各種基于深度學(xué)習(xí)技術(shù)的設(shè)備。這些應(yīng)用場景、對設(shè)備的功耗、延遲、資源利用、實(shí)時性等方面有嚴(yán)格的要求。利用通用的CPU 和GPU 設(shè)備實(shí)現(xiàn)這些應(yīng)用往往不是最佳選擇。與通用的CPU 和GPU 設(shè)備相比,專用的神經(jīng)網(wǎng)絡(luò)加速器,尤其是基于現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)平臺設(shè)計的神經(jīng)網(wǎng)絡(luò)加速器,在性能、實(shí)時性、價格等方面具有優(yōu)勢。

        對于卷積神經(jīng)網(wǎng)絡(luò)算法的研究,多數(shù)研究者的關(guān)注點(diǎn)在于提高模型的準(zhǔn)確率。在此趨勢下,卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)和寬度不斷加深,這導(dǎo)致參數(shù)和計算量越來越大,從而無法在各種功耗和性能受限的平臺上運(yùn)行。為解決這一問題,研究者提出了各種輕量化神經(jīng)網(wǎng)絡(luò)模型。輕量化神經(jīng)網(wǎng)絡(luò)模型是專門針對功耗和性能受限平臺設(shè)計的輕量且高效的神經(jīng)網(wǎng)絡(luò)模型。相較于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò),輕量化神經(jīng)網(wǎng)絡(luò)計算復(fù)雜度更低且參數(shù)規(guī)模大幅縮減,具有結(jié)構(gòu)簡單、運(yùn)行速度快等顯著優(yōu)點(diǎn)。

        目前大部分神經(jīng)網(wǎng)絡(luò)加速器僅支持實(shí)現(xiàn)低效率的卷積神經(jīng)網(wǎng)絡(luò)(如Alex Net 和VGG16),并不支持以MobileNet 為代表的輕量化神經(jīng)網(wǎng)絡(luò)。本文設(shè)計并實(shí)現(xiàn)面向輕量化網(wǎng)絡(luò)MobileNet 可配置的神經(jīng)網(wǎng)絡(luò)加速器。針對MobileNetV3 的輕量化模塊,加入優(yōu)化的PW 模塊和DW 模塊,同時利用可配置化(指令)設(shè)計,實(shí)現(xiàn)通過修改上位機(jī)的程序支持各種不同的網(wǎng)絡(luò)結(jié)構(gòu)的功能。此外,通過8 bit 定點(diǎn)、流水和并行化等優(yōu)化技術(shù),使加速器在資源利用、性能、功耗等方面更具優(yōu)勢。

        1 相關(guān)工作

        基于FPGA 的神經(jīng)網(wǎng)絡(luò)加速器設(shè)計是一個備受關(guān)注的課題。文獻(xiàn)[1]設(shè)計了一個用于大規(guī)模圖像分類的FPGA 神經(jīng)網(wǎng)絡(luò)加速器;文獻(xiàn)[2]通過重復(fù)輸入特征圖提高帶寬利用率,改善了神經(jīng)網(wǎng)絡(luò)加速器;文獻(xiàn)[3]提出以ping-pang 方式調(diào)整緩存數(shù)據(jù)量,在一定程度上提升了卷積加速器的性能;文獻(xiàn)[4]則提出軟硬件協(xié)同設(shè)計方法;文獻(xiàn)[5]考慮了DSP 資源優(yōu)化和卷積神經(jīng)網(wǎng)絡(luò)分類準(zhǔn)確率的問題。

        神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的輕量化也是目前備受關(guān)注的研究主題,輕量化網(wǎng)絡(luò)結(jié)構(gòu)在保證準(zhǔn)確率的同時使得模型體積更小,速度更快。SqueezeNet[6]模型使用分解卷積核技術(shù)使得模型體積更小,速度更快;ShuffleNet模型[7]采用殘差網(wǎng)絡(luò)思想;而Xception 模型[8]采用更改卷積運(yùn)算流程降低計算量;MobileNet 模型[9]采用逐通道卷積減少計算量。

        2 針對輕量化網(wǎng)絡(luò)的可配置神經(jīng)網(wǎng)絡(luò)加速器

        2.1 整體架構(gòu)

        輕量化網(wǎng)絡(luò)移植到資源受限的平臺上具有巨大的優(yōu)勢,但為了滿足實(shí)時性要求和資源利用最大化,本文針對輕量化網(wǎng)絡(luò)模型設(shè)計軟硬協(xié)同加速框架,如圖1 所示,其中TJPU 架構(gòu)如圖2 所示。

        圖1 軟硬協(xié)同加速框架Fig.1 Software and hardware coacceleration framework

        圖2 TJPU 架構(gòu)Fig.2 Architecture of TJPU

        在根據(jù)相互關(guān)系設(shè)計出軟硬件協(xié)同加速框架中,軟件部分負(fù)責(zé)計算任務(wù)的調(diào)度和控制,硬件部分負(fù)責(zé)計算數(shù)據(jù)。由于加速器的存儲資源和計算資源有限,因此本文通過軟件將輕量化神經(jīng)網(wǎng)絡(luò)模型中一層計算所需的參數(shù)經(jīng)由PCIE 存儲到DDR 中,圖片數(shù)據(jù)通過上位機(jī)直接寫入到計算單元TJPU 中,計算出來的結(jié)果保存到DDR 中。通過以一層計算為單位,減少模型對于硬件存儲資源的需求。

        2.2 輕量化算子

        MobileNet 的基本單元是深度可分離卷積(Depthwise Separable Convolution,DSC),其可以分解為2 個更小的操作,即Depthwise Convolution(DW)和Pointwise Convolution(PW)。DW 負(fù)責(zé)通道卷積,PW 負(fù)責(zé)串聯(lián)feature map。這種方法比傳統(tǒng)卷積減少8~9 倍的計算量。

        為支持MobileNet 結(jié)構(gòu),本文設(shè)計的卷積算子分為Conv2d、PW、DW、Reshape 4 個基本模塊。通過軟件不同的調(diào)度順序,以實(shí)現(xiàn)不同輕量化神經(jīng)網(wǎng)絡(luò)模型的計算。當(dāng)然,除了支持MobileNet 結(jié)構(gòu)外,其他由Conv2d、PW、DW 和Reshape 模塊構(gòu)成的網(wǎng)絡(luò)結(jié)構(gòu)都可以在該加速器中實(shí)現(xiàn)。

        2.3 8 bit 量化

        FPGA 存儲資源受限且不適合浮點(diǎn)運(yùn)算,而正常訓(xùn)練的浮點(diǎn)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行推斷,需要占用大量的計算資源,這對于AI 處理器來說是難以適用的。因此,直接使用網(wǎng)絡(luò)模型參數(shù)進(jìn)行計算,不能在算力上發(fā)揮優(yōu)勢,加快模型推斷速度。本文采用8 bit 定點(diǎn)數(shù),需要對浮點(diǎn)模型進(jìn)行量化。量化方法主要用于壓縮參數(shù)量和減少參數(shù)資源的占用量。在保證精度的前提下,使用INT8 量化大幅縮減參數(shù)量,解決硬件平臺存儲資源受限問題。

        線性量化公式如式(1)和式(2)所示。

        其中:round(·)表示四舍五入處理;S表示縮放的系數(shù);Z代表的是零點(diǎn);Clamp 代表截斷操作;Nlevels由量化的位數(shù)決定,如8 位則為28=256。線性量化公式的反量化公式為:

        在進(jìn)行卷積運(yùn)算操作時,原卷積公式變?yōu)槿缦鹿剑?/p>

        文獻(xiàn)[10]中的實(shí)驗(yàn)結(jié)果表明,多數(shù)神經(jīng)網(wǎng)絡(luò)模型使用此方法進(jìn)行8 bit 數(shù)據(jù)量化造成的精度損失在3%以內(nèi)。

        2.4 并行與流水

        并行度優(yōu)化和流水優(yōu)化是常用的硬件優(yōu)化策略,并行度優(yōu)化是指將數(shù)據(jù)切分為多個部分進(jìn)行并行化計算從而達(dá)到提高計算效率的目的。本文針對卷積的6 個循環(huán)進(jìn)行并行度的優(yōu)化:1)同時計算4 張圖片;2)卷積展開,3×3 卷積核直接用9 個乘法器進(jìn)行計算;3)輸入通道和輸出通道分塊,按照8 入通道8 出通道進(jìn)行并行,進(jìn)一步增加其并行度。

        在流水優(yōu)化方面,采用ping-pang 操作流水優(yōu)化通過降低傳播時延,提高系統(tǒng)頻率和吞吐量,優(yōu)化運(yùn)行速度。ping-pang 操作是利用數(shù)據(jù)緩存,將ping 路數(shù)據(jù)處理完保存在pang 路的緩存`中,ping 路可以繼續(xù)處理上一級的數(shù)據(jù),pang 路無需等待,直接從緩存中讀取數(shù)據(jù)進(jìn)行處理。

        3 FPGA 實(shí)現(xiàn)

        3.1 Conv2d 模塊實(shí)現(xiàn)

        Conv2d 模塊的功能是實(shí)現(xiàn)通常的3×3 卷積,如圖3 所示,該模塊由Switch、Block RAM、Weight RAM、控制單元、乘加樹模塊、截斷、Data_generate、Stride、Pool 等組成。在上位機(jī)指令的控制下,控制單元首先發(fā)出讀數(shù)據(jù)操作,從DDR 中將權(quán)重數(shù)據(jù)讀入到Block RAM 中;然后啟動卷積計算,特征圖的數(shù)據(jù)經(jīng)過Data_generate 模塊,生成特定格式的數(shù)據(jù),這些數(shù)據(jù)與已經(jīng)讀入的權(quán)重數(shù)據(jù)進(jìn)行乘加操作;最后計算結(jié)果經(jīng)過截斷后,經(jīng)過Stride 和Pool 后,輸出到DDR中。這里需要注意的是,Stride 和Pool 可以通過上位機(jī)指令進(jìn)行開關(guān)。當(dāng)需要計算的卷積沒有Stride 或者Pool 時,只需要在上位機(jī)配置即可。

        圖3 Conv2d 模塊框圖Fig.3 Block diagram of Conv2d module

        3.2 PW 模塊實(shí)現(xiàn)

        PW 實(shí)現(xiàn)1×1 卷積功能,采用通用框架設(shè)計。如圖4 所示,該模塊由Switch、Block RAM、Weight RAM、控制單元、乘加樹、截斷等組成。Switch 模塊是一個數(shù)據(jù)通路選擇模塊,控制數(shù)據(jù)流通,Bolck RAM模塊存放計算參數(shù),乘加樹進(jìn)行卷積乘法通道相加操作,截斷模塊進(jìn)行量化操作。整個PW 模塊由不同功能模塊進(jìn)行靈活組合,提高復(fù)用率。整個模塊通過上位機(jī)發(fā)送指令,由指令解析模塊進(jìn)行解析配置,PW 控制單位完成數(shù)據(jù)通路選擇和計算啟動的控制。

        圖4 PW 模塊框圖Fig.4 Block diagram of PW module

        3.3 DW 模塊實(shí)現(xiàn)

        DW 模塊完成深度卷積操作,與Cond2d 類似,在MobileNet 網(wǎng)絡(luò)結(jié)構(gòu)中DW 模塊無需進(jìn)行Stride 和Pool。根據(jù)上述分析,本文設(shè)計如圖5 所示的DW 模塊。DW 模塊主要由Data_generate、Switch、Block RAM、Weight RAM、控制單元、乘加樹模塊、截斷模塊等結(jié)構(gòu)組成。Data_generate 模塊將數(shù)據(jù)轉(zhuǎn)換成可卷積的3 行數(shù)據(jù),其他模塊由PW 模塊中的功能模塊組成,完成DW 模塊所需的功能。

        圖5 DW 模塊框圖Fig.5 Block diagram of DW module

        3.4 Reshape 模塊實(shí)現(xiàn)

        Reshape模塊主要完成數(shù)據(jù)的重排操作,MobileNet結(jié)構(gòu)需要完成Contact 和Upsample 2 種數(shù)據(jù)重排操作。因此,如圖6所示,Reshape 模塊由2個Switch、Block RAM模塊、Weight RAM、Contact、Upsample等結(jié)構(gòu)組成。數(shù)據(jù)通過Switch 進(jìn)行選擇,如果配置為Upsample 功能,數(shù)據(jù)將會流入到Upsample 模塊中,進(jìn)行Upsample 操作后,數(shù)據(jù)通過Switch 寫入DDR。如果配置為contact 功能,那么數(shù)據(jù)就會分成兩路通過Switch 分別進(jìn)入到Contact 和BlockRam,進(jìn)行Contact 操作后,寫入DDR。

        圖6 Reshape 模塊框圖Fig.6 Block diagram of Reshape module

        4 指令集與上位機(jī)調(diào)度

        AI 處理器指令集[11-13]在設(shè)計上滿足輕量化網(wǎng)絡(luò)模型通用配置。因?yàn)橐紤]輕量化網(wǎng)絡(luò)模型的兼容性,所以指令集的設(shè)計采用精簡指令集。指令集包含參數(shù)配置指令、計算配置指令等。

        上位機(jī)通過配置指令集,調(diào)度AI 處理器內(nèi)部卷積算子的運(yùn)算[14-16]。由于片上資源有限,為解決計算量龐大問題,上位機(jī)調(diào)度采用一層計算為一個單元進(jìn)行調(diào)度,從而減少參數(shù)占用資源,降低計算量,同時使得輕量化網(wǎng)絡(luò)模型更加通用化配置。

        4.1 指令集設(shè)計

        指令集設(shè)計采用精簡指令設(shè)計方法,頂層指令控制模塊類似一個仲裁器,其不進(jìn)行復(fù)雜的控制。由于計算流程的控制上移到軟件,各個模塊的控制主要在自己模塊內(nèi)部,因此頂層控制模塊只是控制數(shù)據(jù)的通路[17],上位機(jī)啟動功能模塊的運(yùn)行,根據(jù)結(jié)束后功能模塊的返回信號,啟動DMA 的讀寫。邏輯的正確性保證完全來自于上位機(jī)如圖7 和圖8 所示,頂層指令控制模塊包含Padding、Stride、Row_num、Channel_num等參數(shù),配置卷積模塊所需的計算參數(shù)和啟動信號,同時配置參數(shù)指令和配置計算指令共享reg4 和reg5 寄存器,由此優(yōu)化寄存器空間,降低資源使用率。

        圖7 頂層配置指令Fig.7 Top-level configuration instruction

        圖8 計算配置指令Fig.8 Calculation configuration instruction

        4.2 上位機(jī)功能

        上位機(jī)采用C++語言編寫,主要實(shí)現(xiàn)圖片的預(yù)處理、Yolo 層的檢測(主要計算為非極大值抑制)、檢測結(jié)果、輸出和FPGA 的任務(wù)調(diào)度[18-19]等功能。圖片預(yù)處理部分的任務(wù)有圖像的讀取/視頻抽幀、圖像縮放等。這部分需要借助OpenCV 等圖像/視頻處理庫實(shí)現(xiàn),其操作的類型繁多。Yolo 算法檢測部分主要為特征向量的提取、非極大值抑制等,這些操作都是串行的操作,在主機(jī)上能夠非常高效地完成。檢測結(jié)果的輸出(包括畫框等)也是串行計算。除了上述任務(wù)之外,上位機(jī)還負(fù)責(zé)FPGA 任務(wù)的調(diào)度,即FPGA 完成的計算任務(wù)都是在上位機(jī)的控制下完成的。

        4.3 上位機(jī)調(diào)度流程

        上位機(jī)流程如圖9 所示。FPGA 調(diào)度由硬件模塊精簡控制,按照輕量化網(wǎng)絡(luò)計算的一層一層完成,每一層的計算主要按照配置參數(shù)啟動計算、完成計算。FPGA 調(diào)度流程如圖10 所示。

        圖9 上位機(jī)流程Fig.9 Procedure of host computer

        圖10 FPGA 調(diào)度流程Fig.10 Procedure of FPGA scheduling

        5 實(shí)驗(yàn)與結(jié)果分析

        5.1 實(shí)驗(yàn)設(shè)置

        FPGA 選擇690T 和VU9P 2 種芯片作為實(shí)現(xiàn)芯片,其中690T 是目前國產(chǎn)芯片能夠達(dá)到最大容量的FPGA 芯片,VU9P 則具有更高的容量。本文選擇2 種嵌入式GPU作為參照,其中Jetson Xavier 是英偉達(dá)最新的嵌入式GPU。

        數(shù)據(jù)集采用sar 圖像數(shù)據(jù)集,網(wǎng)絡(luò)結(jié)構(gòu)選擇輕量化網(wǎng)絡(luò)結(jié)構(gòu)Yolo tiny 和MobileNetV3 & YoloV3。

        5.2 時鐘頻率與資源利用情況

        表1 給出了本文設(shè)計的處理器在兩種芯片上的時鐘頻率和資源利用情況。由于本文采用參數(shù)化設(shè)計技術(shù),設(shè)計的神經(jīng)網(wǎng)絡(luò)處理器可以根據(jù)FPGA 的容量進(jìn)行伸縮。在容量較少的芯片(690T)上,可以使用較少的硬件資源,速度也較慢。在容量加大的芯片(VU9P)上,使用較多的資源,從而達(dá)到更高的速度。

        表1 主頻與資源利用情況Table 1 Main frequency and resource utilization

        5.3 Yolo Tiny 的性能分析

        通過修改上位機(jī)程序,首先完成了Yolo Tiny 網(wǎng)絡(luò)在FPGA 上的實(shí)現(xiàn),Yolo Tiny 結(jié)構(gòu)沒有使用DW和PW 模塊。表2 給出了Yolo Tiny 在不同設(shè)備上的精度和性能,其中FPGA 指的是VU9P??梢钥闯觯罕M管FPGA 使用INT8 格式,但其精度與嵌入式GPU相當(dāng);在速度上,F(xiàn)PGA 能達(dá)到85 frame/s,超過了Jetson nano 和Jetson Xavier;當(dāng)然,F(xiàn)PGA 開發(fā)板的功耗也是最高的,達(dá)到35 W。

        表2 Yolo Tiny 在不同設(shè)備上的性能對比Table 2 Yolo Tiny performance comparison in different devices

        5.4 YoloV3 & MobileNetV3 的性能分析

        與Yolo Tiny結(jié)構(gòu)不同,YoloV3 & MobileNetV3[20-21]是一種輕量化的網(wǎng)絡(luò)結(jié)構(gòu),其中大量使用輕量化模塊(DW 和PW)。表3 給出了YoloV3 & MobileNetV3在不同設(shè)備上的精度和性能??梢钥闯觯涸诰壬希現(xiàn)PGA 實(shí)現(xiàn)精度下降約4%,這也是可以接受的精度損失;在速度上,F(xiàn)PGA 實(shí)現(xiàn)能達(dá)到62 frame/s,同樣超過Jetson nano 和Jetson Xavier 實(shí)現(xiàn);相對于Yolo Tiny 實(shí)現(xiàn),YoloV3 & MobileNetV3 的功耗從35 W 提 高到了38 W,這也是因?yàn)閅oloV3 & MobileNetV3 使用了DW 和PW 模塊導(dǎo)致的。

        表3 YoloV3 & MobileNetV3 在不同設(shè)備上的性能對比Table 3 Performance comparison of YoloV3 & MobileNetV3 in different devices

        當(dāng)FPGA 加速器不包含輕量化模塊時,實(shí)現(xiàn)YoloV3 & MobileNetV3 模型的方法有2 種,一種是使用Conv2d 模塊替代DW 和PW(通過填零來實(shí)現(xiàn)),另一種是將中間結(jié)果傳回主機(jī),由主機(jī)的CPU 實(shí)現(xiàn)DW 模塊和PW 模 塊。

        表4 給出了這2 種實(shí)現(xiàn)方法與本文設(shè)計的對比,通過實(shí)驗(yàn)數(shù)據(jù)可知,使用輕量化模塊的推斷速度遠(yuǎn)比其他2 種方法速度快。

        表4 輕量化模型性能對比Table 4 Performance comparison of lightweight models (frame·s-1)

        6 結(jié)束語

        為提高嵌入式GPU 的運(yùn)行速度和性能,本文設(shè)計并實(shí)現(xiàn)一種輕量化的神經(jīng)網(wǎng)絡(luò)加速器,通過優(yōu)化實(shí)現(xiàn)PW、DW 模塊,在一定程度上滿足低時延、低功耗的要求。同時該加速器支持指令執(zhí)行,可以應(yīng)用于不同的網(wǎng)絡(luò)結(jié)構(gòu)。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計的神經(jīng)網(wǎng)絡(luò)加速器在VU9P FPGA 芯片上可達(dá)到較快速度,并且功耗較低,可以完成受限平臺中的目標(biāo)檢測任務(wù)。下一步將實(shí)現(xiàn)本文設(shè)計對4 bit、2 bit 等更低比特精度量化的支持,并提高資源利用率,從而進(jìn)一步優(yōu)化加速器性能。

        猜你喜歡
        加速器輕量化上位
        輪滑加速器
        化學(xué)工業(yè)的“加速器”
        汽車輕量化集成制造專題主編
        全民小康路上的“加速器”
        一種輕量化自卸半掛車結(jié)構(gòu)設(shè)計
        智富時代(2019年2期)2019-04-18 07:44:42
        特斯拉 風(fēng)云之老阿姨上位
        車迷(2018年12期)2018-07-26 00:42:22
        “三扶”齊上位 決戰(zhàn)必打贏
        基于ZigBee和VC上位機(jī)的教室智能監(jiān)測管理系統(tǒng)
        等待“加速器”
        瞄準(zhǔn)掛車輕量化 鑼響掛車正式掛牌成立
        專用汽車(2016年1期)2016-03-01 04:13:19
        日本精品一区二区三区二人码| 毛片一级精油按摩无码| 亚洲色图少妇熟女偷拍自拍 | 欧美成人a视频免费专区| 三级国产自拍在线观看| 亚洲av无码精品色午夜app| 日本大尺度吃奶呻吟视频| 色综合久久久久综合999| 国产精品第一区亚洲精品| 97色伦图片97综合影院| 国产精品嫩草影院av| chinese国产在线视频| 亚洲av综合色区久久精品| 国产欧美精品aaaaaa片| 亚洲av综合日韩| 精品人伦一区二区三区蜜桃麻豆| 在线观看国产激情免费视频| 每日更新在线观看av| 性色av无码不卡中文字幕| 国产精品福利久久香蕉中文| 国产精品亚洲综合久久| 24小时日本在线视频资源| 久久97精品久久久久久久不卡| 日本岛国大片不卡人妻| 亚洲av男人的天堂一区| 成人美女黄网站色大免费的| 国产在线成人精品| 久久五月精品中文字幕| 男吃奶玩乳尖高潮视频| 国产人妻久久精品二区三区| 欧美洲精品亚洲精品中文字幕| 精品亚洲一区中文字幕精品| 国产精品vⅰdeoxxxx国产| 福利片福利一区二区三区 | 人妻在线有码中文字幕| 国产内射爽爽大片视频社区在线| 欧美人与物videos另类xxxxx| 国产av一区网址大全| 麻豆精品国产av在线网址| 国产av精国产传媒| 亚洲欧美日韩精品香蕉|