• 
    

    
    

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

      ?

      在FPGA上實現(xiàn)及優(yōu)化加速卷積神經(jīng)網(wǎng)絡的方法

      2019-06-21 10:10:24鄭文凱楊濟民
      關鍵詞:數(shù)據(jù)流卷積芯片

      鄭文凱 楊濟民

      ( 山東師范大學物理與電子科學學院,250014,濟南 )

      卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)是一類人工神經(jīng)網(wǎng)絡,它可以自動從大規(guī)模數(shù)據(jù)中學習特征,并把結果向同類型數(shù)據(jù)泛化,在語音識別、圖像識別、圖像分割、自然語言處理等領域廣泛應用[1,2].

      由于CNN特定的計算模式,現(xiàn)有大部分CNN的設計實現(xiàn)都是基于GPU等硬件的支持,比如INVIDA公司的硬件加速顯卡,其就是圍繞GPU布局設計的,但是該芯片功耗較大、過大的體積很難適用于移動平臺;對于通用處理器CPU而言,其在處理并行數(shù)據(jù)上效率較低;雖說使用ASIC平臺設計具有可定制化的優(yōu)點,但是成本高昂,產(chǎn)品的可遷移性低[3];而現(xiàn)場可編程門列(FPGA)具有豐富的片上硬件邏輯資源、靈活的線路連接特性以及良好的內(nèi)存帶寬等優(yōu)點,相比于ASIC而言,更是省去了流片過程,因此在本研究中我們選擇使用FPGA來設計該AI芯片.

      在一項對于在CPU及GPU上實現(xiàn)CNN的工作中,我們可以清晰的看到在整個CNN網(wǎng)絡進行前向傳播的過程中,卷積層所耗費時間的比例是很高的[4],所以我們的首要目標就是去優(yōu)化加速卷積操作. Stylianos等人提出一種以SDF計算模型為基礎的框架[5],我們借鑒了該SDF模型以經(jīng)典的用于識別手寫數(shù)字集MNIST的CNN網(wǎng)絡Lenet-5為例在FPGA開發(fā)板上進行了實現(xiàn),該方法不局限于僅實現(xiàn)固定結構的CNN,我們采用IP核互聯(lián)以及數(shù)據(jù)流的方式可以動態(tài)調整網(wǎng)絡結構以及參數(shù),具有較強的靈活性與通用性.

      1 卷積神經(jīng)網(wǎng)絡的基礎知識

      1.1卷積層卷積層是卷積神經(jīng)網(wǎng)絡的核心,大部分的計算量都在這個層,具體的卷積操作我們可以通過以下兩個公式來理解,

      (1)

      Output=(N-K+2×padding)/stride+1.

      (2)

      1.2池化層池化層也叫作子采樣層,其作用就是減少特征圖的空間尺寸、減少參數(shù)進一步達到控制過擬合的作用. 池化層并不會對于特征圖的深度有影響.還是會保持原來的深度.

      1.3全連接層全連接層一般在整個神經(jīng)網(wǎng)絡結構的末層,該層中的每一個神經(jīng)元節(jié)點與上一層的神經(jīng)元結點是全連接的,目的是將前面層提取到的特征進行綜合.

      1.4Lenet-5的網(wǎng)絡結構LeNet-5[6]共有8層,按次序分別為輸入層、C1卷積層、S2池化層、C3卷積層、S4池化層、C5卷積層、F6全連接層、輸出層,每層都包含可訓練參數(shù).輸入圖像大小為32×32,而MNIST數(shù)據(jù)集圖像的維度為28×28,因此在訓練整個網(wǎng)絡之前,需要對28×28的圖像進行填充,使其維度變?yōu)?2×32.

      圖1 Lenet-5網(wǎng)絡結構及參數(shù)

      2 研究工作

      2.1總體框架概覽我們采用的設計平臺是Xilinx公司研發(fā)的PYNQ-Z1開發(fā)板,可編程芯片為zynq7020,該芯片上資源較為充足,具有53 200個LUT,4.9MB(280個18kb塊)的BRAM和220個DSP(18×25MACC).以及雙核ARM Cortex-A9,可實現(xiàn)軟硬邏輯協(xié)同設計.在該平臺上實現(xiàn)的Lenet-5 CNN網(wǎng)絡大致可分為兩部分:CPU ARM處理器端以及硬件邏輯單元端.具體工作流程大致如下:CPU ARM處理器端的其中一個MCU,被配置為接收輸入MNIST數(shù)據(jù)集的圖片張量,并傳輸至DDR存儲器以及輸出MNIST數(shù)據(jù)集的分類結果;DDR存儲器,被配置為把輸入MNIST數(shù)據(jù)集的圖片張量、輸出MNIST數(shù)據(jù)集的分類結果以及訓練好的模型參數(shù)存儲起來;另一個MCU,被配置為執(zhí)行DMA驅動程序,控制調度DDR存儲器中存儲的MNIST數(shù)據(jù)集圖片張量以及將訓練好的模型參數(shù)傳輸至FPGA的片上BRAM,并控制輸出MNIST數(shù)據(jù)集的分類結果存儲于DDR存儲器.在DMA中,通過AXI4-Streaming協(xié)議以盡可能大的吞吐量傳輸數(shù)據(jù)流,AXI DMA支持每個時鐘周期一個數(shù)據(jù)字的吞吐量.

      圖2 PYNQ開發(fā)板上搭建CNN網(wǎng)絡的邏輯框架圖

      2.2數(shù)據(jù)量化的必要性以及整體搭建過程一般神經(jīng)網(wǎng)絡的訓練是在GPU上進行,使用浮點運算對速度影響不大,但是在FPGA上的離線預測階段,使用浮點數(shù)格式的數(shù)據(jù)參與運算會嚴重影響速度.所以要想提高前向傳播的運算速度,我們需要對網(wǎng)絡模型進行數(shù)據(jù)量化.進行數(shù)據(jù)量化的動機主要有兩個:1) 減小模型文件的大小,因為模型文件往往占據(jù)很大的存儲空間;2) 降低預測過程需要的計算資源,從而提高運行速度、減低功耗,這在嵌入式系統(tǒng)設計中具有重要意義.

      Plilipp在其研究工作中明確比較了Lenet-5網(wǎng)絡在32位浮點數(shù)、16位定點數(shù)以及8位定點數(shù)三種數(shù)據(jù)格式下的分類精度,在32位浮點數(shù)下,Lenet-5對MNIST數(shù)據(jù)集的分類準確率為99.15%,而在16位定點數(shù)的數(shù)據(jù)格式下準確率幾乎沒有下降,從32位浮點數(shù)到8位定點數(shù)在沒有進行微調之前相對分類精度損失10.3%,經(jīng)過微調之后絕對分類精度損失縮小至0.27%,表明Lenet-5在8位定點數(shù)的數(shù)據(jù)表示下運行良好.所以我們最終選擇用8位定點數(shù)的數(shù)據(jù)格式來在FPGA上實現(xiàn)Lenet-5.

      在軟件邏輯端,由于Lenet-5網(wǎng)絡對于識別MNIST數(shù)據(jù)集已經(jīng)很成熟,所以我們無需重新訓練網(wǎng)絡,只需要將訓練好的網(wǎng)絡模型下載好備用.在可編程邏輯端,我們選用了Xilinx公司研發(fā)的Vivado HLS2017.4編譯器,使用C語言設計算法來編寫配置各網(wǎng)絡層以備測試,并使用HLS提高抽象級別,這樣所有可編程器件都無需手動創(chuàng)建RTL,而且編譯器支持ISE和Vivado設計環(huán)境,這些特點顯著降低了后續(xù)設計者的參與門檻[7].

      我們將設計好的各層IP核按照網(wǎng)絡結構鏈接在一起即構成了整個Lenet-5網(wǎng)絡的IP流圖(SDFG),SDF的優(yōu)點是只要數(shù)據(jù)流到達節(jié)點,節(jié)點便會立即開始計算并輸出結果,因為SDFG結構中的任意IP核都可獨立驅動數(shù)據(jù)流,這樣每層的輸出結果會立即流向下一IP核,而不是緩存在片上存儲器中,從而節(jié)省了整個網(wǎng)絡的內(nèi)存占用.

      2.3優(yōu)化加速措施及細節(jié)

      2.3.1 將卷積操作轉換為矩陣乘法 首先利用滑動窗口函數(shù)根據(jù)各層的基礎維度、填充維度以及步幅將含有卷積運算該層的輸入特征映射擴展為列向量,列向量的順序與卷積核展開順序一致;再將擴展的列向量與卷積核進行矩陣乘法完成卷積運算.

      圖3 卷積過程示意圖

      在默認數(shù)據(jù)流的順序中,輸入特征映射圖按照(批量大小,輸入通道,高度,寬度)的順序排列,卷積核按照(輸出通道,輸入通道,高度,寬度)的順序排列,在這兩種數(shù)據(jù)流的排列方式中,輸入通道都在高度和寬度之前,因此如果我將矩陣拆分為數(shù)據(jù)流,則在緩沖區(qū)緩沖完一個矩陣乘法所有的權重之前,幾乎需要緩沖整個特征映射,但是我交叉改變數(shù)據(jù)流順序后,讓輸入通道成為順序中的最后一個參數(shù),如此所需要的緩沖區(qū)數(shù)為K*W*C,這大大減少了緩沖區(qū)內(nèi)存的使用,如圖4所示.

      圖4 減小緩沖區(qū)內(nèi)存使用框圖

      2.3.2 并行計算與流水線技術 要想提高運算的并行性,其中一項有效的技術就是將數(shù)據(jù)必須存儲在多個BRAM中,以便同時獲取多個數(shù)據(jù);而另一方面并行性的提升帶來的是DSP資源的使用量增加,我們通過在程序中設置一個“并行因子”來平衡片上資源和速度,該“并行因子”的具體數(shù)值一方面要考慮片上資源的利用率,另一方面要考慮該AI芯片的性能,我們通過不斷仿真測試,最終確定了各層“并行因子”的數(shù)值.假定矩陣乘法維數(shù)為(M*4)*(4*N),在圖5中,輸入特征圖和權重都被分割成很小的存儲體以便可以并行獲取多個輸入數(shù)據(jù),我們將輸入特征映射存至第1、3、5、7個內(nèi)存塊,將權值存至第2、4、6、8個內(nèi)存塊.在使用乘法器和加法器樹進行并行計算階段,計算過程包含了許多寄存器讀取時段,我們設置存儲器在接下來的一個時鐘周期繼續(xù)讀取數(shù)據(jù),而不是等待上一個輸出結果,這樣就創(chuàng)建了輸出流水線,輸出數(shù)據(jù)具有了較高吞吐量,從而整體數(shù)據(jù)處理速度也得以提高.

      圖5 FPGA并行計算框圖

      3 仿真實驗結果與分析

      3.1Lenet-5SDFG模型展示圖7是Lenet-5網(wǎng)絡在Vivado HLS中的仿真模型,對于每個IP層核,在每個時鐘周期,IP會接收輸入特征映射的新字,并在新輸出字準備就緒時候輸出.為了消除時間違規(guī),將AXI4-Streaming寄存器片插入到相鄰的IP核之間,從而在AXI4-Streaming主機和從機之間創(chuàng)建了定時隔離.

      圖6 Lenet-5網(wǎng)絡SDFG仿真模型圖

      3.2性能評估與展望在Vivado HLS中,我們首先利用測試平臺設計C測試程序來驗證Lenet-5網(wǎng)絡每一層的輸入輸出的準確性以及整個Lenet-5網(wǎng)絡的輸入輸出正確性;而在Vivado 中,我們將整個SDFG封裝成一個IP核,并進行可行性的驗證,通過Vivado 合成比特流并通過Jupyter Notebook下載至PYNQ開發(fā)板中,并在Jupyter Notebook部署程序來完成整個項目的測試.在具體程序中,加載預訓練好的模型并傳遞參量,對比了FPGA網(wǎng)絡模型在整個運行處理數(shù)據(jù)過程所用時間與片上ARM CPU網(wǎng)絡模型整個運行處理數(shù)據(jù)過程所用時間,并且將時間損耗與分類準確率可視化出來,便于評估分析.下面我們將從以下幾個方面來評估我們的工作以及后續(xù)的方向.

      3.2.1 片上資源利用率 下表列出了整個網(wǎng)絡在FPGA上實現(xiàn)所占用的資源狀況.

      表1 Lenet-5網(wǎng)絡片上資源的占用

      從表中我們可以看到,除了片上的寄存器資源與DSP48E外,我們幾乎利用了PYNQ上全部的資源,這一方面反映了數(shù)據(jù)量化的必要性,另一方面反映了如果我們想進一步的獲得更好的加速效果,還需要FPGA芯片上更多片上資源的支持.

      3.2.2 網(wǎng)絡模型的吞吐量 下表展示出了網(wǎng)絡模型中的各層參量,其中k代表卷積核的維度,In-channels與Out-channels分別代表輸入特征張量通道數(shù)與輸出特征張量通道數(shù).

      表2 FPGA上Lenet-5網(wǎng)絡加速優(yōu)化參數(shù)

      表中列出的并行因子代表每一層最大并行的乘累加操作數(shù)(OP/s),因此在理想的情況下(即假設所有層的乘累加操作是同時進行的),我們可以計算得到該CNN模型的理論上的最大吞吐量

      (3)

      即(25+30+40+20)×100MHz(ZYNQ芯片的時鐘頻率)=11.5GOP/S.但在前向傳播運算中,由于每層的吞吐量都不一樣,所以整個網(wǎng)絡的實際吞吐量相比于理論吞吐量會有一定的下降.

      3.2.3 網(wǎng)絡模型的加速比 我們在Jupyter notebook中可視化的時間損耗為整個系統(tǒng)的時間,包括網(wǎng)絡部署時間、Python腳本解釋器初始化時間、內(nèi)存?zhèn)鬏斠约扒跋騻鞑サ臅r間,在處理批量較小時,前向傳播的時間在總體時間中所占百分比不大,其余時間在整個時間中占據(jù)主導作用,我們嘗試不斷增大處理批量,使得前向傳播的時間占比增大,在該AI芯片與ARM CPU之間加速比明顯的階段,改變不同的圖片處理量,記錄執(zhí)行一次遍歷所消耗的時間,結果如下表3所示.

      表3 AI芯片與ARM CPU在不同數(shù)據(jù)處理量下的損耗時間對比

      我們可以大致估算一下我們基于FPGA設計的AI芯片的性能,隨著batch_size的不斷增大,該芯片的加速比會逐漸趨于一個穩(wěn)定狀態(tài),大約在22倍左右.

      4 結 語

      在本文中,我們結合Vivado以及Vivado HLS等工具在FPGA上實現(xiàn)了一種基于Lenet-5卷積神經(jīng)網(wǎng)絡的AI芯片,具體采用對CNN網(wǎng)絡實現(xiàn)8位定點數(shù)的數(shù)據(jù)量來優(yōu)化片上資源的使用,在分類結果方面相比于32位浮點數(shù)數(shù)據(jù)模型的分類準確率幾乎相同,同時相對于ARM CPU有大約22倍的加速.該AI芯片系統(tǒng)攜帶方便,并且在設計CNN的各層算法時用軟件編程替代傳統(tǒng)的硬件語言,降低了軟件開發(fā)人員開發(fā)FPGA的門檻,在對網(wǎng)絡輸入形式為二維圖片的分類課題上具有較強的通用性.

      但是從長遠來看,我們的工作仍然有很大的提升余地,本文所設計的AI芯片系統(tǒng)的性能仍然存在很大的改進空間,芯片上的DSP48E以及Registers的資源利用率不高.在接下來的工作中,我們會優(yōu)化片上資源的分配來進一步的提高芯片性能,我們會考慮實現(xiàn)結構更加復雜以及針對特定分類主題的CNN網(wǎng)絡,而在FPGA開發(fā)平臺方面,我們將考慮換用更大片上資源的芯片,實現(xiàn)更高的加速.

      猜你喜歡
      數(shù)據(jù)流卷積芯片
      基于3D-Winograd的快速卷積算法設計及FPGA實現(xiàn)
      汽車維修數(shù)據(jù)流基礎(下)
      從濾波器理解卷積
      電子制作(2019年11期)2019-07-04 00:34:38
      基于傅里葉域卷積表示的目標跟蹤算法
      一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機制
      芯片測試
      多通道采樣芯片ADS8556在光伏并網(wǎng)中的應用
      基于數(shù)據(jù)流聚類的多目標跟蹤算法
      北醫(yī)三院 數(shù)據(jù)流疏通就診量
      一種基于卷積神經(jīng)網(wǎng)絡的性別識別方法
      電視技術(2014年19期)2014-03-11 15:38:20
      广德县| 广东省| 大城县| 石渠县| 菏泽市| 湟中县| 浪卡子县| 宜宾县| 孟津县| 黄陵县| 河南省| 板桥市| 即墨市| 芜湖市| 伊通| 奉新县| 元阳县| 太谷县| 酒泉市| 英山县| 临朐县| 安塞县| 曲松县| 都兰县| 自治县| 县级市| 古浪县| 西峡县| 甘孜县| 淄博市| 普兰店市| 曲阳县| 南雄市| 琼海市| 南安市| 明星| 永胜县| 漠河县| 科技| 望江县| 库伦旗|