• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2019-11-12 09:08:32卿粼波何小海廖海鵬
      關(guān)鍵詞:加速器功耗準確率

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

      (四川大學 電子信息學院,四川 成都 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ò),在圖像分類、機器視覺和視頻監(jiān)控等領(lǐng)域具有重要的應(yīng)用價值和研究意義[1]。CNN由于其龐大的計算需求,同時受制于CPU的串行處理方式,目前CNN的軟件實現(xiàn)方式效率并不高,難以滿足許多實時應(yīng)用的需求[2]。于是,基于GPU、ASIC、FPGA的不同加速器被相繼提出以提升CNN的設(shè)計性能[3]。

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

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

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

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

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

      LeNet作為識別Minist數(shù)據(jù)集的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò),其識別準確率可達98.5%,但其權(quán)重參數(shù)總量達431 080個以上,很消耗片上資源。因此本文以LeNet為基礎(chǔ),設(shè)計了一種輕量級卷積神經(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可以計算出,該CNN網(wǎng)絡(luò)總共的權(quán)重參數(shù)量為200+5 792+9 248+32 832+650=48 722。將該網(wǎng)絡(luò)在軟件平臺中進行訓練和測試,得到其對Minist數(shù)據(jù)集的識別準確率為98%。與LeNet相比,其權(quán)重參數(shù)量是LeNet的1/9,識別準確率比LeNet下降了0.5個百分點,在減少參數(shù)量和維持識別準確率之間,DoNet達到了很好的平衡。

      1.2 HLS工具介紹

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

      1.3 基于FPGA的加速器框架

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

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

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

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

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

      2.1 定點量化

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

      表2 conv1層定點量化前后資源和時間對比

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      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è)計需求。同理也可計算出其他資源都在芯片的可用范圍內(nèi)。加速器計算所消耗的時鐘周期大致為各層時鐘周期之和即為54 403,在100 MHz的時鐘運行頻率下,可計算出預(yù)計運行時間為0.544 ms。

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

      圖5 運行時波形實時抓取圖

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

      3 實驗結(jié)果

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

      3.1 測試方案設(shè)計

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

      圖6 測試方案框圖

      3.2 準確率測試

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

      表5 各平臺識別準確率統(tǒng)計

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

      3.3 計算時間對比

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

      表6 各平臺運行時間對比

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

      3.4 芯片功耗測試

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

      表7 各平臺功耗性能對比

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

      4 結(jié)論

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

      猜你喜歡
      加速器功耗準確率
      輪滑加速器
      化學工業(yè)的“加速器”
      全民小康路上的“加速器”
      少先隊活動(2021年6期)2021-07-22 08:44:24
      乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
      健康之家(2021年19期)2021-05-23 11:17:39
      不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
      2015—2017 年寧夏各天氣預(yù)報參考產(chǎn)品質(zhì)量檢驗分析
      高速公路車牌識別標識站準確率驗證法
      揭開GPU功耗的面紗
      個人電腦(2016年12期)2017-02-13 15:24:40
      數(shù)字電路功耗的分析及優(yōu)化
      電子制作(2016年19期)2016-08-24 07:49:54
      等待“加速器”
      安溪县| 易门县| 垣曲县| 新竹县| 庆云县| 桂阳县| 湖州市| 克山县| 云阳县| 台东市| 岳阳县| 茶陵县| 寿宁县| 富蕴县| 灵宝市| 彭泽县| 绥阳县| 汉中市| 岳阳市| 若尔盖县| 昌乐县| 九龙县| 沾益县| 永川市| 道真| 奉化市| 乐业县| 高邑县| 普兰店市| 连云港市| 克拉玛依市| 榆林市| 大连市| 新巴尔虎右旗| 竹北市| 会昌县| 渭南市| 象山县| 炉霍县| 广州市| 通江县|