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

        ?

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

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

        鄭文凱 楊濟(jì)民

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

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

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

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

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

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

        (1)

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

        (2)

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

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

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

        圖1 Lenet-5網(wǎng)絡(luò)結(jié)構(gòu)及參數(shù)

        2 研究工作

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

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

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

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

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

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

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

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

        圖3 卷積過程示意圖

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

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

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

        圖5 FPGA并行計(jì)算框圖

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

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

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

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

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

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

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

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

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

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

        (3)

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

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

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

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

        4 結(jié) 語

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

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

        猜你喜歡
        數(shù)據(jù)流卷積芯片
        基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
        汽車維修數(shù)據(jù)流基礎(chǔ)(下)
        從濾波器理解卷積
        電子制作(2019年11期)2019-07-04 00:34:38
        基于傅里葉域卷積表示的目標(biāo)跟蹤算法
        一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
        芯片測試
        多通道采樣芯片ADS8556在光伏并網(wǎng)中的應(yīng)用
        基于數(shù)據(jù)流聚類的多目標(biāo)跟蹤算法
        北醫(yī)三院 數(shù)據(jù)流疏通就診量
        一種基于卷積神經(jīng)網(wǎng)絡(luò)的性別識別方法
        国精产品一品二品国在线| 国产麻豆一区二区三区在| 中文字幕av长濑麻美| 无码人妻精品一区二区三区蜜桃| 米奇7777狠狠狠狠视频影院| 人妻少妇中文字幕在线| 最近免费中文字幕中文高清6| 亚洲国产精品无码专区在线观看| 国产亚洲精品久久久久婷婷瑜伽| 欧美日本免费一区二| 亚洲av一二三又爽又爽又色 | 亚洲av日韩综合一区尤物| 国产高清成人在线观看视频| 欧美一性一乱一交一视频| 国产精品免费久久久久影院| 国产在线观看免费一级| 久久精品一区一区二区乱码| 国产av激情舒服刺激| 国内精品视频在线播放不卡| 国内精品视频一区二区三区| 一区二区三区午夜视频在线观看 | 亚洲精品有码日本久久久 | 亚洲最大成人网站| 亚洲av福利无码无一区二区| 久久精品国产热| 一区二区三区精彩视频在线观看| 亚洲伊人av天堂有码在线| 天天碰免费上传视频| 国产精品久久久久久妇女6080| 国产亚洲曝欧美不卡精品| 少妇精品揄拍高潮少妇桃花岛| 99久久精品免费看国产| 品色永久免费| 大伊香蕉精品视频一区| 日本大片一区二区三区| 在线精品亚洲一区二区动态图| 玩弄放荡人妻少妇系列| 九一成人AV无码一区二区三区| 国产免费精品一品二区三| 2019nv天堂香蕉在线观看| 人妻少妇av中文字幕乱码|