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

        ?

        基于FPGA的CNN加速器設(shè)計(jì)與實(shí)現(xiàn)*

        2019-11-12 09:08:32卿粼波何小海廖海鵬
        關(guān)鍵詞:資源設(shè)計(jì)

        竇 陽,卿粼波,何小海,廖海鵬

        (四川大學(xué) 電子信息學(xué)院,四川 成都 610064)

        0 引言

        隨著人工智能和大數(shù)據(jù)時代的到來,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的受關(guān)注度越來越高。卷積神經(jīng)網(wǎng)絡(luò)是一種多層神經(jīng)網(wǎng)絡(luò),在圖像分類、機(jī)器視覺和視頻監(jiān)控等領(lǐng)域具有重要的應(yīng)用價值和研究意義[1]。CNN由于其龐大的計(jì)算需求,同時受制于CPU的串行處理方式,目前CNN的軟件實(shí)現(xiàn)方式效率并不高,難以滿足許多實(shí)時應(yīng)用的需求[2]。于是,基于GPU、ASIC、FPGA的不同加速器被相繼提出以提升CNN的設(shè)計(jì)性能[3]。

        目前卷積神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)主要集中于基于圖形處理器(GPU)的加速?;贕PU的卷積神經(jīng)網(wǎng)絡(luò)能夠很好地實(shí)現(xiàn)硬件與軟件部分的結(jié)合,使得神經(jīng)網(wǎng)絡(luò)的訓(xùn)練得到很好的加速。然而GPU的電力消耗巨大,其硬件結(jié)構(gòu)固定,限制了卷積神經(jīng)網(wǎng)絡(luò)在移動式系統(tǒng)的應(yīng)用[4]。與GPU相比,ASIC芯片具有功耗低、體積小、計(jì)算性能高的特點(diǎn),也可以實(shí)現(xiàn)對CNN的加速訓(xùn)練。但ASIC芯片開發(fā)周期較長,靈活性極低,研發(fā)成本極高,使得它不適合搭載結(jié)構(gòu)靈活的卷積神經(jīng)網(wǎng)絡(luò)[5]。FPGA是一種可自定義編程的硬件電路結(jié)構(gòu),其具有強(qiáng)大的并行運(yùn)算能力,契合了CNN的計(jì)算特點(diǎn),靈活的設(shè)計(jì)方法也適合于神經(jīng)網(wǎng)絡(luò)多變的網(wǎng)絡(luò)結(jié)構(gòu),除此之外,它還具有較低的功耗[6]。因此采用FPGA實(shí)現(xiàn)CNN的加速具有廣闊的應(yīng)用前景。

        針對卷積神經(jīng)網(wǎng)絡(luò)計(jì)算在硬件平臺的加速,本文以設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)算法DoNet為網(wǎng)絡(luò)模型,提出了一種基于FPGA的CNN加速器設(shè)計(jì)與實(shí)現(xiàn)方法。首先,本文采用定點(diǎn)量化的方法降低了網(wǎng)絡(luò)計(jì)算所需的存儲和計(jì)算資源[7];其次,運(yùn)用Vivado HLS分別將各層網(wǎng)絡(luò)編譯生成IP核,隨后在Vivado中對各層IP核進(jìn)行硬件集成,實(shí)現(xiàn)每層全并行的計(jì)算效率;最后,以Minist手寫數(shù)據(jù)集作為測試集,對該加速器性能進(jìn)行評估分析。

        1 卷積神經(jīng)網(wǎng)絡(luò)

        本文設(shè)計(jì)目的是在FPGA平臺實(shí)現(xiàn)對輕量級卷積神經(jīng)網(wǎng)絡(luò)的加速,完成對Minist手寫數(shù)據(jù)集的識別。實(shí)現(xiàn)方法是運(yùn)用Vivado HLS分別將各層網(wǎng)絡(luò)編譯生成IP核,然后在Vivado中對各層IP核進(jìn)行硬件集成。

        1.1 設(shè)計(jì)的DoNet網(wǎng)絡(luò)結(jié)構(gòu)

        LeNet作為識別Minist數(shù)據(jù)集的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò),其識別準(zhǔn)確率可達(dá)98.5%,但其權(quán)重參數(shù)總量達(dá)431 080個以上,很消耗片上資源。因此本文以LeNet為基礎(chǔ),設(shè)計(jì)了一種輕量級卷積神經(jīng)網(wǎng)絡(luò)DoNet,以降低權(quán)重參數(shù)量,節(jié)省FPGA片上資源消耗。DoNet網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該卷積神經(jīng)網(wǎng)絡(luò)主要包括了輸入層、卷積層、池化層、全連接層以及分類層。網(wǎng)絡(luò)的輸入為28×28×1像素大小圖片,輸入圖像依次經(jīng)過conv1、pool1、conv2、pool2、conv3、pool3、inner1、relu1、inner2層后,得到10個特征值,然后在softmax分類層中將10個特征值概率歸一化得出最大概率值即為分類結(jié)果。網(wǎng)絡(luò)中的具體參數(shù)設(shè)置如表1所示。

        圖1 CNN網(wǎng)絡(luò)結(jié)構(gòu)圖

        表1 網(wǎng)絡(luò)參數(shù)表

        由表1可以計(jì)算出,該CNN網(wǎng)絡(luò)總共的權(quán)重參數(shù)量為200+5 792+9 248+32 832+650=48 722。將該網(wǎng)絡(luò)在軟件平臺中進(jìn)行訓(xùn)練和測試,得到其對Minist數(shù)據(jù)集的識別準(zhǔn)確率為98%。與LeNet相比,其權(quán)重參數(shù)量是LeNet的1/9,識別準(zhǔn)確率比LeNet下降了0.5個百分點(diǎn),在減少參數(shù)量和維持識別準(zhǔn)確率之間,DoNet達(dá)到了很好的平衡。

        1.2 HLS工具介紹

        高層次綜合工具(High-Level Synthesis tool,HLS)是Xilinx在2012年發(fā)布的一套集成于Vivado開發(fā)環(huán)境的開發(fā)工具,主要用于可編程邏輯器件的設(shè)計(jì)和開發(fā)。使用HLS設(shè)計(jì)工具,用戶可以選擇多種不同的高級語言(如C,C++,System C)來進(jìn)行FPGA的設(shè)計(jì),通過仿真、優(yōu)化及綜合等步驟就可以以RTL代碼的形式輸出,既可以是網(wǎng)表形式,也可以導(dǎo)出為Xilinx的IP核。引入HLS設(shè)計(jì)工具,在代碼生成時可以快速優(yōu)化FPGA硬件結(jié)構(gòu),提高執(zhí)行效率,降低開發(fā)難度,在開發(fā)過程中可以快速驗(yàn)證和修改算法,及時查看算法的實(shí)際效果,縮短開發(fā)周期[8]。

        1.3 基于FPGA的加速器框架

        本文運(yùn)用HLS將DoNet網(wǎng)絡(luò)的每層運(yùn)算過程分解為單個的IP核進(jìn)行編寫,然后通過Vivado將各層的IP核進(jìn)行硬件集成,整體的加速器硬件實(shí)現(xiàn)框架如圖2所示。

        圖2 加速器硬件實(shí)現(xiàn)框圖

        由圖2可以看出,其中每一層計(jì)算出結(jié)果后將計(jì)算結(jié)果暫存,作為下一層的輸入。層與層之間只能順序執(zhí)行,只有上一層計(jì)算過程結(jié)束,全部結(jié)果緩存完畢才能送入下一層進(jìn)行運(yùn)算。因此若要達(dá)到加速的目的,必須在每一層單獨(dú)運(yùn)算時,充分利用計(jì)算中的并行性。

        2 加速器硬件實(shí)現(xiàn)

        本文設(shè)計(jì)的加速器首先將浮點(diǎn)型參數(shù)定點(diǎn)量化為定點(diǎn)數(shù),節(jié)省硬件資源;然后充分利用卷積計(jì)算中的并行性,分別對各層卷積運(yùn)算進(jìn)行并行設(shè)計(jì),以使各個卷積層達(dá)到全并行的計(jì)算效率。

        2.1 定點(diǎn)量化

        從模型中提取出的權(quán)值參數(shù)均為浮點(diǎn)型,網(wǎng)絡(luò)計(jì)算過程中的特征圖結(jié)果也為浮點(diǎn)數(shù)。在FPGA中實(shí)現(xiàn)浮點(diǎn)數(shù)的運(yùn)算復(fù)雜度較高,并且會耗費(fèi)大量的硬件資源,因此本文對每層權(quán)值參數(shù)采用乘以65 536處理,將網(wǎng)絡(luò)參數(shù)從64位浮點(diǎn)數(shù)轉(zhuǎn)化為16位定點(diǎn)數(shù)。以單獨(dú)綜合的conv1層的IP核為例,計(jì)算的數(shù)據(jù)采用浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型時的資源和時間對比如表2所示。

        表2 conv1層定點(diǎn)量化前后資源和時間對比

        表2中BRAM_18K為FPGA的片內(nèi)存儲資源,DSP48E為FPGA內(nèi)部可用于計(jì)算的DSP資源,Latency為使用HLS綜合生成IP核后預(yù)計(jì)運(yùn)行所需時鐘周期。由表2可看出,將網(wǎng)絡(luò)參數(shù)采用數(shù)據(jù)量化處理后,使存儲網(wǎng)絡(luò)所需的存儲空間和硬件實(shí)現(xiàn)所需的計(jì)算時間都得到了降低。

        2.2 卷積層模塊的硬件實(shí)現(xiàn)

        本文設(shè)計(jì)的卷積層模塊包含conv1、conv2、conv3三個卷積層以及各自所對應(yīng)的池化層。以conv2層計(jì)算為例,其硬件實(shí)現(xiàn)框圖如圖3所示,該卷積層輸入多張?zhí)卣鲌D及其對應(yīng)系數(shù),分別經(jīng)過乘累加運(yùn)算后得到一組卷積結(jié)果,將該組卷積結(jié)果相加后,經(jīng)過池化后得到一個輸出特征圖,然后結(jié)果經(jīng)過緩存,輸出到下一個卷積層??梢钥吹蕉鄠€特征圖計(jì)算并行,從結(jié)構(gòu)層面實(shí)現(xiàn)了對卷積神經(jīng)網(wǎng)絡(luò)的并行加速。conv1、conv3卷積層的計(jì)算與conv2層類似,在此不再描述。

        圖3 conv2層硬件實(shí)現(xiàn)框圖

        由于卷積層模塊中的conv2層計(jì)算需要輸入20張?zhí)卣鲌D,輸出32張?zhí)卣鲌D;conv3層計(jì)算需要輸入32張?zhí)卣鲌D,輸出32張?zhí)卣鲌D??紤]到芯片資源有限,并未將輸入特征圖采用并行方式同時輸入計(jì)算,而是串行輸入,所以每一個卷積層計(jì)算完成后,將輸出特征圖并行輸入至各自的RAM中暫存,然后再通過自行編寫的選擇器將RAM中的特征圖串行輸出至下一層。

        綜合以上4種情況,在最壞情況下是7-點(diǎn)關(guān)聯(lián)著(3,3,7)-面,3面及面上的點(diǎn)最多從7-點(diǎn)拿走的權(quán)值為稱之為最壞3-面7-點(diǎn)情形。

        2.3 全連接層與分類層的硬件實(shí)現(xiàn)

        全連接層的硬件實(shí)現(xiàn)過程與前面卷積層類似,只是由于inner1的輸出結(jié)果僅為1個值,因此在inner緩存模塊不再使用單獨(dú)的RAM來存儲計(jì)算結(jié)果,而是直接采用一個選擇器輸出結(jié)果,這里不再詳細(xì)介紹。softmax層硬件實(shí)現(xiàn)框圖如圖4所示。

        圖4 softmax層硬件實(shí)現(xiàn)框圖

        由圖4可看出,10個輸入特征值同時輸入到softmax層。首先根據(jù)比較器和選擇器的結(jié)果可以選擇較大值輸出,接著繼續(xù)往下比較。10個特征值依次比較之后通過一個選擇器模塊輸出其中的最大值,這便是加速器識別的結(jié)果。

        2.4 加速器各層資源和時間分析

        對單層IP核綜合后可看到分析結(jié)果,conv1層的單個IP核進(jìn)行編譯占用的資源以及運(yùn)行時間如表3所示。

        表3 conv1層的資源和時間消耗

        由圖1的CNN網(wǎng)絡(luò)結(jié)構(gòu)可知,conv1層輸出為20張?zhí)卣鲌D。如果conv1層進(jìn)行全并行運(yùn)算,需要20個conv1層的IP核同時運(yùn)行。因此conv1層需要的具體硬件資源應(yīng)該在表3的數(shù)值上乘以20才為該層最后消耗的資源。因?yàn)榭梢赃_(dá)到全并行,所以conv1層計(jì)算所需全部時鐘周期便為6 163個,由于一個時鐘周期為10 ns,即conv1層計(jì)算所需時間為61 630 ns。其余各層單個IP核編譯占用的資源和運(yùn)行時間與conv1層類似,這里不再詳細(xì)描述。

        conv2層、conv3層、inner層與softmax層綜合編譯后單個IP核的資源消耗與時間周期如表4所示。

        表4 conv2、conv3、inner、softmax的資源和時間消耗

        以上為本文選取的CNN結(jié)構(gòu)中每一層IP核編譯后的資源消耗和時鐘周期,結(jié)合各層資源以及CNN網(wǎng)絡(luò)結(jié)構(gòu)圖可以預(yù)估出DSP總數(shù)為27×20+9×32+9×32+1×64 =1 180,本文選擇的VC707開發(fā)板的主芯片上DSP資源總數(shù)為2 800個,因此DSP的資源數(shù)滿足設(shè)計(jì)需求。同理也可計(jì)算出其他資源都在芯片的可用范圍內(nèi)。加速器計(jì)算所消耗的時鐘周期大致為各層時鐘周期之和即為54 403,在100 MHz的時鐘運(yùn)行頻率下,可計(jì)算出預(yù)計(jì)運(yùn)行時間為0.544 ms。

        經(jīng)過前面的設(shè)計(jì)已經(jīng)將加速器設(shè)計(jì)進(jìn)行了硬件實(shí)現(xiàn),接著將綜合生成的程序下載到FPGA開發(fā)板上運(yùn)行并進(jìn)行實(shí)際測試。為了準(zhǔn)確測試程序運(yùn)行時間,在程序里添加了計(jì)時器來進(jìn)行計(jì)數(shù)。采用Vivado自帶的debug功能進(jìn)行波形的實(shí)時抓取,抓取的波形如圖5所示。

        圖5 運(yùn)行時波形實(shí)時抓取圖

        由圖5可以看到FPGA在實(shí)際運(yùn)行時的結(jié)果情況,在計(jì)數(shù)器為54 466時輸出正確的分類結(jié)果數(shù)字3,該結(jié)果與加速器所有IP核的時鐘周期之和基本一致,證明程序確實(shí)達(dá)到了全并行的計(jì)算效率。

        3 實(shí)驗(yàn)結(jié)果

        本節(jié)對加速器測試方案進(jìn)行總體設(shè)計(jì),對加速器的測試性能包括識別準(zhǔn)確率、計(jì)算時間和運(yùn)行功耗,并將其性能與CPU、GPU進(jìn)行對比。其中CPU型號為Intel core i7-6700K,主頻為4 GHz;GPU型號為NVIDA公司的GTX1080Ti系列,顯存容量為11 GB;FPGA平臺為Xilinx公司的VC707開發(fā)板。

        3.1 測試方案設(shè)計(jì)

        本節(jié)采用PC+FPGA的架構(gòu)對加速器測試方案進(jìn)行設(shè)計(jì),完成將PC傳輸?shù)膱D片數(shù)據(jù)通過FPGA端的CNN加速器進(jìn)行圖片識別。主要測試指標(biāo)為圖片識別準(zhǔn)確率、加速器運(yùn)行的時間和功耗。測試方案框圖如圖6所示。

        圖6 測試方案框圖

        3.2 準(zhǔn)確率測試

        PC端批量將圖片數(shù)據(jù)發(fā)往FPGA端,然后批量接收FPGA端返回的信息。Minist數(shù)據(jù)集的測試圖片共分為10類,每類1 000張圖片[9]。測試中分別將每類圖片依次發(fā)送至FPGA端進(jìn)行識別,并統(tǒng)計(jì)該類型的平均識別率,最終得到整個測試集的平均識別率,以此作為加速器的準(zhǔn)確率性能。加速器在CPU、GPU、FPGA平臺上的識別準(zhǔn)確率統(tǒng)計(jì)如表5所示。

        表5 各平臺識別準(zhǔn)確率統(tǒng)計(jì)

        由表5可看出,Minist數(shù)據(jù)集在FPGA端的識別準(zhǔn)確率比在CPU、GPU上的低。原因在于本文設(shè)計(jì)的加速器采用定點(diǎn)量化進(jìn)行參數(shù)壓縮,由定點(diǎn)量化引入了識別誤差。本文將定點(diǎn)量化后的參數(shù)代替原有參數(shù)在CPU上進(jìn)行測試,得到其對Minist數(shù)據(jù)集的識別準(zhǔn)確率為95%。即由定點(diǎn)量化引入的準(zhǔn)確率誤差為3個百分點(diǎn)。將網(wǎng)絡(luò)結(jié)構(gòu)在FPGA端實(shí)現(xiàn),識別準(zhǔn)確率依然為95%,說明硬件實(shí)現(xiàn)并未引入新的識別精度下降。

        3.3 計(jì)算時間對比

        通過在FPGA程序中添加計(jì)數(shù)器進(jìn)行時間統(tǒng)計(jì),該計(jì)數(shù)器在FPGA端接收完畢單張圖片的所有數(shù)據(jù)后,啟動CNN計(jì)數(shù)單元開始計(jì)數(shù),在計(jì)數(shù)完畢時的值即為加速器計(jì)算所需的時鐘周期。本文使用的DoNet網(wǎng)絡(luò)在CPU、GPU、FPGA平臺上的計(jì)算時間對比如表6所示。

        表6 各平臺運(yùn)行時間對比

        由表6可以知道,本文設(shè)計(jì)的CNN加速器除了與服務(wù)器級別的GPU相比計(jì)算時間稍有遜色之外,相較于CPU達(dá)到了7.8倍的加速效果。

        3.4 芯片功耗測試

        在Vivado中將FPGA端程序設(shè)計(jì)完畢后,進(jìn)行程序綜合和布局布線,在布局布線完成以后在芯片電源報(bào)告中可以得到芯片的運(yùn)行功耗結(jié)果。DoNet網(wǎng)絡(luò)在CPU、GPU、FPGA平臺上的運(yùn)行功耗對比如表7所示。

        表7 各平臺功耗性能對比

        由表7可以看出,加速器在FPGA芯片的運(yùn)行功耗僅為CPU和GPU的4.6%左右,而FPGA比CPU計(jì)算性能更高。

        4 結(jié)論

        本文設(shè)計(jì)了一種基于FPGA的CNN加速器。首先,采用定點(diǎn)量化的方法對設(shè)計(jì)的網(wǎng)絡(luò)的參數(shù)進(jìn)行了壓縮;其次,運(yùn)用HLS對網(wǎng)絡(luò)的每層運(yùn)算過程進(jìn)行編寫,生成了各自獨(dú)立的IP核;最后,將各層的IP核進(jìn)行硬件集成,充分利用每層網(wǎng)絡(luò)計(jì)算中的并行性,實(shí)現(xiàn)每層全并行的計(jì)算效率。實(shí)驗(yàn)表明,本文設(shè)計(jì)的CNN加速器運(yùn)行時間比CPU降低很多,運(yùn)行時的功耗比GPU降低很多,很好地完成了在低功耗應(yīng)用中對卷積神經(jīng)網(wǎng)絡(luò)加速的功能。

        猜你喜歡
        資源設(shè)計(jì)
        讓有限的“資源”更有效
        基礎(chǔ)教育資源展示
        何為設(shè)計(jì)的守護(hù)之道?
        一樣的資源,不一樣的收獲
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        資源回收
        瞞天過?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        資源再生 歡迎訂閱
        資源再生(2017年3期)2017-06-01 12:20:59
        夜鲁很鲁在线视频| 新中文字幕一区二区三区| 在线观看无码一区二区台湾| 欧美大屁股xxxx高潮喷水 | 中文字幕影片免费人妻少妇| 日本道免费精品一区二区| 国产欧美日韩a片免费软件| 东京热人妻系列无码专区| 国内精品少妇久久精品| 国产小毛片| 米奇7777狠狠狠狠视频影院| 少妇爽到高潮免费视频| 亚洲精品女同在线观看| 99国产免费热播视频| 少妇人妻偷人精品视频| 亚洲国产婷婷香蕉久久久久久| 久久网站在线免费观看| 人妻中文字幕不卡精品| 亚洲精品亚洲人成在线下载| 亚洲在AV极品无码天堂手机版| 国产成人精品一区二区三区免费| 日韩精品内射视频免费观看| 无码aⅴ精品一区二区三区浪潮| 麻豆成人久久精品一区| 日韩在线观看你懂的| 在线综合亚洲欧洲综合网站| 久久夜色国产精品噜噜亚洲av| 久久精品国产久精国产69| 欧美精品久久久久久久久| 国产精品国产成人国产三级| 人人妻人人狠人人爽| av成人一区二区三区| 日韩性感av一区二区三区| 日本亚洲欧美在线观看| 日本一卡2卡3卡4卡无卡免费网站 亚洲av无码一区二区三区不卡 | 一区二区免费国产a在亚洲| 日韩精品永久免费播放平台| 国产精品一区二区久久乐下载| 成人艳情一二三区| 日本免费三片在线播放| 午夜无码片在线观看影院y|