【《分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例》13000字(論文)】_第1頁
【《分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例》13000字(論文)】_第2頁
【《分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例》13000字(論文)】_第3頁
【《分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例》13000字(論文)】_第4頁
【《分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例》13000字(論文)】_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例目錄TOC\o"1-3"\h\u24915分布式存儲可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計案例 1201461.1分布存儲架構(gòu)的硬件實現(xiàn) 16861.1.1輸入特征圖數(shù)據(jù)緩存的設(shè)計 2157761.1.2權(quán)重緩存設(shè)計 4262501.1.3臨時緩存設(shè)計 68261.1.4輸出特征圖數(shù)據(jù)緩存設(shè)計 6145491.2可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計 7161731.2.1預(yù)處理模塊設(shè)計 861681.2.2卷積模塊設(shè)計 15259031.2.3激活函數(shù)模塊設(shè)計 18254321.2.4池化層模塊設(shè)計 21127431.3加速器在FPGA平臺上的實現(xiàn) 24164271.3.1卷積核硬件固化 24272921.3.2卷積神經(jīng)網(wǎng)絡(luò)的重構(gòu) 31251841.3.3性能分析 36相對于特定卷積神經(jīng)網(wǎng)絡(luò)加速器,可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器具有靈活性,可面向應(yīng)用重構(gòu)卷積神經(jīng)網(wǎng)絡(luò),適用范圍更廣。本章將基于分布式存儲架構(gòu)、卷積神經(jīng)網(wǎng)絡(luò)的通用可重構(gòu)架構(gòu),完成通過可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計。1.1分布存儲架構(gòu)的硬件實現(xiàn)在整個卷積神經(jīng)網(wǎng)絡(luò)系統(tǒng)中分布式存儲按照功能可以分為四部分緩存:輸入特征圖數(shù)據(jù)緩存、權(quán)重緩存、臨時數(shù)據(jù)緩存以及輸出特征圖數(shù)據(jù)緩存。設(shè)計輸入特征圖數(shù)據(jù)緩存和輸出特征圖數(shù)據(jù)緩存是因為DDR是半雙工的,無法實時對DDR進行讀寫操作,由于本文采用的是N個輸入特征圖通道和M個輸出特征圖通道并行計算,因此在輸入緩存中設(shè)置了N個輸入特征圖數(shù)據(jù)緩存,在輸出通道設(shè)置了M個輸出特征圖緩存,以便實時讀寫DDR中的數(shù)據(jù),達到網(wǎng)絡(luò)高速運行;在權(quán)值緩存設(shè)計中,本文的權(quán)重數(shù)據(jù)與圖像數(shù)據(jù)分布存儲在PS端DDR以及PL端DDR中,讀寫PS端口的DDR數(shù)據(jù)需使用AXI-HP高速接口,本文在設(shè)計接口短接,為了保證權(quán)重數(shù)據(jù)能夠?qū)崟r提供,設(shè)置了權(quán)重緩存;臨時緩存模塊的數(shù)量與輸出通道特征圖個數(shù)一致,為M個臨時緩存。1.1.1輸入特征圖數(shù)據(jù)緩存的設(shè)計進行卷積運算時,輸入圖像應(yīng)按順序處理,故將輸入特征圖數(shù)據(jù)緩存設(shè)計成FIFO,由于片外存儲基本為DDR系列,DDR讀取數(shù)據(jù)采用的是猝發(fā)模式,設(shè)片外DDR的位寬為Xb(基本為32、64、128),在進行讀取DDR時,在核心頻率為f,預(yù)讀取個數(shù)為P,即一個時鐘周期讀取的位數(shù)為Xb×P,在輸入特征圖通道設(shè)置了N個輸入緩存,為了不浪費DDR的帶寬,設(shè)計的緩存FIFO為輸入位寬和輸出位寬不同,輸入為Xb×P圖1.1輸入緩存依次寫入結(jié)構(gòu)圖在卷積層的輸入通道個數(shù)小于N時,卷積過程不需要循環(huán),卷積結(jié)果需要馬上寫出DDR到,此時如果輸入特征通道小于N會導(dǎo)致ni為1,采用圖1.1所示模型卷積對帶寬的需求變?yōu)橄率?. Q總=(M此時系統(tǒng)的帶寬的需求較高,此時輸入特征特征圖的通道小于N,設(shè)輸入3通道數(shù)據(jù)時,讀取DDR數(shù)據(jù)的利用率只有3/N,會浪費讀取的數(shù)據(jù),浪費帶寬,因此本文為了不浪費系統(tǒng)的帶寬,在輪流輸入到輸入緩存中進行了指令控制,結(jié)構(gòu)變?yōu)槿鐖D1.2,指令中用五位數(shù)據(jù)(最大32輸入通道)進行表示輸入特征圖通道的個數(shù),該方法將3輸入通道數(shù)據(jù)的帶寬需求變?yōu)橄率?.2,此方法提高了帶寬的利用率,減少帶寬對系統(tǒng)性能的影響。圖1.2控制器控制輸入緩存結(jié)構(gòu)圖 Q總=MN模塊的仿真圖如圖1.3所示,圖中采用的是輸入特征圖通道N為8,卷積層輸入通道為3時的仿真,數(shù)據(jù)根據(jù)指令控制依次輪流寫入設(shè)計的前3個FIFO中。圖1.3輸入緩存仿真圖1.1.2權(quán)重緩存設(shè)計權(quán)重緩存主要是為卷積操作以及偏置準(zhǔn)備權(quán)重數(shù)據(jù),本文在權(quán)重的存儲采用的是PS端DDR數(shù)據(jù),圖像數(shù)據(jù)和權(quán)重分開存儲,采用PS端的DDR存儲數(shù)據(jù),讀取數(shù)據(jù)時需要通過ARM核,本文通過四個AXI-HP高速接口讀取權(quán)重數(shù)據(jù),其中系統(tǒng)的模塊圖如圖1.4。圖1.4AXI-HP的模塊圖權(quán)重數(shù)據(jù)是利用了片上PS端的DDR,其中通訊采用的是高速AXI-HP接口,在片內(nèi)設(shè)置四個FIFO緩存進行緩存數(shù)據(jù),由于并行度為N個輸入特征圖通道,K×K大小的卷積核,以及M個輸出特征圖通道,在一層卷積完成時需要更換N×K×K×M個16位數(shù)權(quán)重數(shù)據(jù),在卷積層換層時,瞬間的帶寬需求很高,本文采用寄存器進行緩存數(shù)據(jù),如圖1.5所示將權(quán)重數(shù)據(jù)緩存到寄存器中等卷積完成一起傳遞給卷積層,然后開始準(zhǔn)備下次的權(quán)重。圖1.5權(quán)重預(yù)準(zhǔn)備結(jié)構(gòu)圖權(quán)重模塊的仿真如圖1.6,圖中仿真采用的卷積核大小為3×3,模塊在換層卷積后,進行多個時鐘周期進行數(shù)據(jù)的緩存,將數(shù)據(jù)保存到寄存器中,等待下次卷積換層的請求,一個周期進行N×K×K×M個16位權(quán)重數(shù)據(jù)的更換,隨后該模塊準(zhǔn)備下批次權(quán)重數(shù)據(jù)。圖1.6權(quán)重緩存仿真圖1.1.3臨時緩存設(shè)計臨時緩存也是被設(shè)計成FIFO,系統(tǒng)中設(shè)置了M個輸出特征通道臨時緩存模塊,主要是進行卷積數(shù)據(jù)臨時緩存,等后續(xù)卷積結(jié)果進行累加操作,減少對DDR的讀取,臨時緩存仿真如圖1.7,圖中仿真圖是輸出特征圖通道為16時,隨著最后一批次卷積完成,臨時緩存數(shù)據(jù)與本批次卷積結(jié)果累加后將結(jié)果輸出給激活函數(shù)模塊。圖1.7臨時緩存仿真圖1.1.4輸出特征圖數(shù)據(jù)緩存設(shè)計輸出特征圖數(shù)據(jù)緩存主要是進行緩存M個輸出特征圖通道的數(shù)據(jù),輸出緩存對與輸入緩存是一個相反的過程,卷積結(jié)果輸出位寬為16位,但是DDR一次讀寫的位寬為Xb×P,因此設(shè)置的M個輸出緩存FIFO寫數(shù)據(jù)位寬為16位,讀數(shù)據(jù)位寬位Xb×P,由于輸出為M個通道,為了保持與輸入讀取數(shù)據(jù)一致,輸出也是采用M個輸出依次輪流輸出,如圖圖1.8控制器控制輸入緩存結(jié)構(gòu)圖模塊仿真如圖1.9所示,圖中設(shè)置輸出通道數(shù)為16,依次從0-15個緩存中輸出數(shù)據(jù)到DDR中,如圖所示每個時鐘周期對讀取的FIFO進行一個更換,同時系統(tǒng)的輸出緩存模塊設(shè)計反饋信號,當(dāng)輸出的緩存數(shù)據(jù)接近滿時,會反饋前方處理模塊進行停止計算,待輸出緩存數(shù)據(jù)少于某個值時撤銷反饋信號,繼續(xù)開始運算。圖1.9輸出模塊仿真1.2可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的設(shè)計基于分布式存儲、可重構(gòu)架構(gòu)的通用可重構(gòu)卷積神經(jīng)網(wǎng)絡(luò)加速器的結(jié)構(gòu)框圖如圖1.10所示。圖中可重構(gòu)控制模塊已完成,本章將完成預(yù)處理模塊、卷積模塊、激活函數(shù)模塊以及池化模塊的硬件實現(xiàn)。圖1.10補全一個整體的結(jié)構(gòu)框圖1.2.1預(yù)處理模塊設(shè)計卷積操作是對一個特定窗口進行一個乘加操作,如圖1.11所示,圖中描述的卷積核大小為3×3,輸入特征圖數(shù)據(jù)被卷積核滑動遍歷,經(jīng)過與卷積核的運算,才能得到輸出特征圖結(jié)果。圖1.11滑動卷積過程設(shè)計預(yù)處理模塊功能主要是對數(shù)據(jù)進行填充以及輸出卷積核K×K大小的窗口數(shù)據(jù),因此需要對輸入數(shù)據(jù)進行一個行緩存,在進行窗口數(shù)據(jù)緩存時,主要有以下三種方法:1)利用BRAM生成RAM,RAM可以進行地址讀寫,可以按照數(shù)據(jù)存儲的地址進行讀取數(shù)據(jù),獲得窗口數(shù)據(jù)。2)利用寄存器進行數(shù)據(jù)緩存,將寄存器當(dāng)作軟件學(xué)的“數(shù)組”來運用,最后得到窗口數(shù)據(jù)。3)利用BRAM生成FIFO,用FIFO的先進先出的特性進行數(shù)據(jù)緩存,由于數(shù)據(jù)具有一定的相關(guān)性,可以減少資源利用。方法1)在對RAM進行地址操作時,地址的控制比較復(fù)雜,對控制系統(tǒng)要求比較高,不考慮使用。本文將對在方法2)和方法3)進行分析比較。方法2中用到了寄存器較多,而且由于需要進行多個寄存器的操作,邏輯資源需求量倍增,方法3主要是利用了FIFO進行緩存數(shù)據(jù),用K-1個FIFO緩存K-1行數(shù)據(jù)。在進行數(shù)據(jù)緩存時,需要考慮數(shù)據(jù)之間的關(guān)聯(lián)性,利用數(shù)據(jù)之間的復(fù)用性能提升效率,減少周期浪費,如圖1.12所示,圖中是卷積核大小為3×3(K=3),步長為1時的卷積計算圖,前一個周期需要的窗口數(shù)據(jù)3×3(K×K)和下一周期所需的3×3(K×K)數(shù)據(jù)有2×3((K-1)×K)個數(shù)據(jù)是復(fù)用的,在硬件設(shè)計時采用寄存器移位操作即可,為了得到窗口數(shù)據(jù),需要緩存K-1行數(shù)據(jù)并用K×K個16位寄存器,第一個卷積窗口數(shù)據(jù)正確時,在隨后的同一行卷積窗口數(shù)據(jù)中可以通過移位操作來完成。圖1.12卷積的數(shù)據(jù)復(fù)用采用方法2)進行緩存K-1行數(shù)據(jù)并選擇窗口數(shù)據(jù)傳遞給寄存器電路圖如圖1.13所示。主要是利用多個寄存器進行數(shù)據(jù)緩存,等待緩存夠K-1行數(shù)據(jù)后,根據(jù)指令進行數(shù)據(jù)選擇,將緩存數(shù)據(jù)傳遞給K2個十六位寄存器,隨后將K圖1.13寄存器緩存數(shù)據(jù)電路圖采用方法3)FIFO進行數(shù)據(jù)緩存時的電路如圖1.14所示,主要是設(shè)計K-1個fifo進行緩存K-1行數(shù)據(jù)。等待K-1個FIFO模塊緩存K-1行數(shù)據(jù)后第K行數(shù)據(jù)輸入時,將其數(shù)據(jù)一方面?zhèn)鬏數(shù)紽IFO中進行更新,另一方面?zhèn)鬏斀o寄存器,進行窗口數(shù)據(jù)輸出。圖1.14FIFO緩存數(shù)據(jù)電路圖在FPGA中實現(xiàn)兩種方案的資源利用如表1.1所示,表中是采用3×3卷積核緩存行數(shù)據(jù)最大為512為例子。方案1,采用寄存器進行緩存數(shù)據(jù),方案2采用fifo進行緩存,有表可知,方案以使用較多的FF以及LUT,未利用BRAM資源,方案2,使用了一個BRAM塊,但是減少了LUT以及FF的需求。表1.1緩存方案資源需求對比表資源LUTFFBRAM方案112433100400方案253710321對輸入特征圖進行數(shù)據(jù)填充時主要是有兩種方法(下面以卷積核大小為3×3為例):(1)在進行數(shù)據(jù)緩存時進行數(shù)據(jù)填充,如圖1.15所示,在進行緩存時將填充數(shù)據(jù)加入到緩存中,然后進行窗口數(shù)據(jù)輸出。采用該方法會浪費時鐘周期,在進行數(shù)據(jù)輸入時,填充0數(shù)據(jù)會占用時鐘周期,同時進行填充卷積時,需要緩存2(K-1行)數(shù)據(jù),其中包含1(K-2)行填充數(shù)據(jù);其次是進行窗口數(shù)據(jù)輸出時會浪費時鐘周期,如圖1.16所示,在窗口移動到一行的結(jié)束時,后續(xù)的兩個時鐘周期的數(shù)據(jù)無法進行卷積運算,降低了系統(tǒng)的效率。圖1.15緩存時進行填充圖1.16換行浪費卷積周期(2)在輸出數(shù)據(jù)時進行數(shù)據(jù)選擇,這樣在圖像進行填充的時候只需要緩存1(K-2)行數(shù)據(jù),就可進行卷積運算,使用額外9(K2)個寄存器,利用狀態(tài)機進行數(shù)據(jù)的選擇賦值,如圖1.17所示,等待緩存1(K-2)行數(shù)據(jù)時卷積就可進行,利用9(K2)個寄存器就可得到第一個卷積窗口的數(shù)據(jù),然后狀態(tài)機對數(shù)據(jù)進行傳遞給下層9(K2圖1.17輸出時進行數(shù)據(jù)緩存圖1.18換行時無時鐘周期浪費本文最終設(shè)計采用第二種方法進行填充,如圖1.19所示為3×3卷積核的第一行卷積窗口數(shù)據(jù),輸出九個寄存器分別進行了上邊沿填充以及左側(cè)填充。圖1.19上邊沿以及左側(cè)填充仿真圖在圖1.20的仿真可以看出,在進進行輸入特征圖進行更換時,進行上下行的填充,不浪費時鐘周期,每個時鐘周期輸出9(K2圖1.20更換輸入特征圖仿真圖在實現(xiàn)卷空洞卷積時,為了獲得卷積窗口數(shù)據(jù),就需要對圖像進行緩存多行,常規(guī)的方法需要利用多個fifo進行緩存,這樣與傳統(tǒng)的卷積不能夠兼容,經(jīng)過研究,本文提出了一種與原始卷積通用的緩存模式。如圖1.21是空洞卷積核大小為3×3空洞為2的空洞卷積,圖中同一顏色為同一個卷積窗口,在傳統(tǒng)模式下,需要多行緩存進行預(yù)處理獲得卷積窗口,經(jīng)過圖像變形,得到如圖1.22所示,將多行數(shù)據(jù)當(dāng)作一層進行緩存,在這種情況下緩存模式與傳統(tǒng)卷積核大小為3×3的緩存是一樣的,可以通用,只是需要用多個寄存器進行數(shù)據(jù)的暫存,以獲得所需的空洞卷積窗口,該方式的后續(xù)處理如圖1.23所示,其中寄存器的個數(shù)跟空洞大小有關(guān),設(shè)空洞大小為Cx,則所需寄存器個數(shù)為(Cx(K?1)+K)圖1.21空洞為2的空洞卷積窗口數(shù)據(jù)圖1.22空洞輸入特征圖行變換圖1.23空洞卷積窗口數(shù)據(jù)獲取電路如圖1.24是對空洞卷積的仿真,由于空洞卷積的左右邊沿填充數(shù)據(jù)多少與空洞有關(guān),在圖中可見連續(xù)的填充數(shù)據(jù)0。圖1.24空洞卷積仿真1.2.2卷積模塊設(shè)計卷積模塊主要是對輸入的特征圖數(shù)據(jù)以及權(quán)重數(shù)據(jù)進行乘加操作,其中在進行乘法操作時,利用邏輯單元實現(xiàn)的乘法器工作頻率較低,因此在片內(nèi)都是采用硬核DSP資源進行乘法計算,然而在進行浮點計算時,使用的DSP較多,因此在硬件實現(xiàn)時,為了減少資源的使用,將數(shù)據(jù)進行定點量化。本文對權(quán)重和原始數(shù)據(jù)進行定點量化,采用16位有符號數(shù)表示,由于權(quán)重數(shù)據(jù)都比較小,根據(jù)權(quán)重的分布,16位數(shù)據(jù)1位符號位,3位整數(shù)位,12位小數(shù)位,最大誤差為1/4096,如圖1.25所示。圖1.25定點位寬在進行乘法運算時,設(shè)A位16位有符號數(shù),B為16為有符號數(shù),C是32位有符號數(shù),D為16為有符號數(shù)。 C=A×B; (1.3)要得到16位乘法結(jié)果,需要將C右移小數(shù)位12位,然后進行截取結(jié)果即可。 D=(A×B)>>12 (1.4)卷積模塊主要是對數(shù)據(jù)進行一個乘加,本文對卷積主要是采用了嵌套模式,設(shè)計最小的卷積核并行PE模塊,結(jié)構(gòu)如圖1.26為卷積核大小3×3的PE模塊,一個PE模塊包括九個乘法器,4個加法器,在設(shè)計中四個16位數(shù)據(jù)相加,系統(tǒng)可以運行在200M時鐘周期,在加法器中間插入寄存器進行保存結(jié)果,采用流水線操作,流水線為兩級;卷積核大小為5×5的PE模塊,結(jié)構(gòu)類似,需要25個乘法器,以及12個加法器,流水線為三級;卷積核大小為7×7的PE模塊,需要49個乘法器,26個加法器,流水線為四級,由于硬件的結(jié)構(gòu)不同,無法采用參數(shù)進行設(shè)計,設(shè)計該模塊全部進行硬件實現(xiàn),在綜合實現(xiàn)時借用宏參數(shù)進行選擇。1.26PE模塊模塊仿真圖如圖1.27(3×3卷積核),可見待輸入圖像數(shù)據(jù)后,經(jīng)過乘法器以及流水線累加樹,在三個周期以后陸續(xù)輸出卷積結(jié)果;圖1.27PE模塊仿真由于采用的N個輸入特征圖通道輸入,那么輸出一個輸出通道需要例化N個PE塊,并將結(jié)果累加,其結(jié)構(gòu)如圖1.28所示,簡成為輸出一個特征圖通道模塊。圖1.28輸出通道模塊結(jié)構(gòu)圖為了增加卷積的并行度,以及提高數(shù)據(jù)的復(fù)用率,并行輸出M個特征圖通道,嵌套例化M個輸出通道模塊,如圖1.29所示為8個輸入通道的數(shù)據(jù)進行復(fù)用,16個輸出通道的結(jié)構(gòu)圖。圖1.29輸出特征圖通道并行結(jié)構(gòu)圖1.2.3激活函數(shù)模塊設(shè)計激活函數(shù)是為了讓卷積神經(jīng)網(wǎng)絡(luò)完成非線性操作,激活函數(shù)常用的主要是Sigmoid函數(shù)、Tanh函數(shù)以及ReLu函數(shù),在硬件設(shè)計中ReLu函數(shù)最容易實現(xiàn),且需要的資源很少,Sigmoid函數(shù)和Tanh函數(shù)在硬件的實現(xiàn)較困難,實現(xiàn)所需資源較多,這兩種函數(shù)里面包含了e的冪指數(shù)運算,以及除法操作。本文實現(xiàn)了三種激活函數(shù),其結(jié)構(gòu)圖如圖1.30所示,三種激活函數(shù)并行計算,其中Sigmoid函數(shù)和Tanh函數(shù)前面計算e的冪指數(shù)合用,三個激活函數(shù)采用宏參數(shù)設(shè)置,可以選擇綜合。圖1.30激活函數(shù)模塊本文在計算e的冪指數(shù)運算時采用的是泰勒展開進行計算,泰勒展開公式如下式 ?(x)=?( (1.5)當(dāng)?(x)=e ex=1+x+x2在進行整個計算時,進行8級泰勒展開后,系統(tǒng)的誤差為18!在進行實現(xiàn)泰勒展開計算時,對于乘法采用DSP進行計算,一個展開式需要用7個乘法DSP資源,模塊采用流水線操作,如圖1.31所示,整個模塊利用7個乘法器完成泰勒展開,并最后采用加法樹進行累加。圖1.31e的冪指數(shù)泰勒展開電路結(jié)構(gòu)在進行Sigmoid函數(shù)和Tanh函數(shù)計算時由于涉及到除法運算,除法運算使用邏輯電路實現(xiàn),整個電路的時序不能滿足200M,在進行泰勒展開計算時,除法操作是固定數(shù)除法,最大值為8,在電路中除以8可以直接進行移位操作,因此最大除法是除以7,該模塊在芯片中時序可以工作在100M時鐘下,在后續(xù)進行Sigmoid函數(shù)和Tanh函數(shù)結(jié)果計算時,涉及到16位的除法,系統(tǒng)的工作頻率在50M,為了不影響整個系統(tǒng)的運算,因此采用同相位的異步時鐘多通道進行并行處理,多通道并行處理結(jié)構(gòu)圖如圖1.32所示。利用BRAM設(shè)計FIFO緩存,為了達到200M的數(shù)據(jù)處理需求,采用兩個100M的e冪指數(shù)的泰勒展開計算模塊并行計算,在后續(xù)Sigmoid函數(shù)和Tanh函數(shù)的計算中采用四個50M的處理模塊,最后將數(shù)據(jù)寫入到緩存中,下一級的數(shù)據(jù)處理才用200M。采用該模式的計算方式,不影響前面的卷積計算以及后續(xù)的池化操作,提高系統(tǒng)的效率。圖1.32激活函數(shù)結(jié)構(gòu)激活函數(shù)模塊的仿真如圖1.33所示,模塊采用流水線操作,在第一個數(shù)據(jù)輸入時會產(chǎn)生延時,在隨后的時序一個周期輸出一個計算結(jié)果。圖1.33激活函數(shù)仿真1.2.4池化層模塊設(shè)計池化層主要是對圖像一個降采樣,池化層模塊的設(shè)計難點在于對數(shù)據(jù)的緩存設(shè)計,緩存池化窗口大小的數(shù)據(jù),然后進行對數(shù)據(jù)的處理,池化分為最大池化和平均池化,本文對兩種方法都進行了實現(xiàn),池化窗口主要分為兩種2×2窗口和3×3窗口。在整個模塊實現(xiàn)時對于輸入特征圖大小不是2或3的倍數(shù)時,要進行額外處理。如進行2×2池化時,當(dāng)輸入特征圖大小是奇數(shù)時,最后一列直接進行兩行數(shù)據(jù)對比,最后一行數(shù)據(jù),直接進行兩列對比輸出,最后一個數(shù)據(jù)進行直接輸出結(jié)果,如圖1.34為輸入特征圖大小為5×5,采用窗口2×2的池化計算過程。當(dāng)采用3×3窗口進行池化時,操作類似,其輸入特征圖不是3的倍數(shù)時,特殊處理。圖1.34圖像大小為奇數(shù)時池化運算結(jié)構(gòu)緩存模塊的設(shè)計有兩種方案,一種是對數(shù)據(jù)邊計算邊緩存數(shù)據(jù),減少后續(xù)運算;另外一種是進行先緩存,等處理窗口數(shù)據(jù)緩存完整后進行數(shù)據(jù)運算。由于本文同時實現(xiàn)了最大值池化和均值池化,需要對窗口數(shù)據(jù)比較和累加,因此系統(tǒng)采用的是第二種方法,首先是對行數(shù)據(jù)進行緩存,后續(xù)進行數(shù)據(jù)處理,2×2池化窗口池化需要緩存數(shù)據(jù)一行,3×3的池化窗口需要圖像緩存兩行。池化模塊池化窗口為2×2窗口的池化步驟如下,如圖1.35所示,當(dāng)緩存一行數(shù)據(jù)時,緩存輸出一個數(shù)據(jù)給寄存器1,與此同時上層處理模塊輸入一個數(shù)據(jù)給寄存器2,然后在一個時鐘周期內(nèi)進行比較和累加,將輸出數(shù)據(jù)分別傳遞給寄存器3和寄存器4。圖1.352×2窗口池化第一時鐘周期下一個時鐘周期,如圖1.36所示,F(xiàn)IFO緩存輸出一個數(shù)據(jù)到寄存器1,上層處理模塊輸入一個數(shù)據(jù)到寄存器2,然后將寄存器3的數(shù)據(jù)與寄存器1和寄存器2的數(shù)據(jù)進行一起比較,輸出最大結(jié)果到選擇器,同時寄存器1、寄存器2和寄存器4的數(shù)據(jù)進行累加并進行平均,輸出結(jié)果到選擇器,選擇器根據(jù)指令進行輸出選擇結(jié)果。圖1.362×2窗口池化第二時鐘周期窗口為2×2的池化仿真圖如圖1.37所示,圖中顯示的是對卷積結(jié)果進行最大池化的結(jié)果,由圖可知,池化層對第一行數(shù)據(jù)進行緩存,等待第二行數(shù)據(jù)輸入,隨后經(jīng)過邏輯運算,每兩個時鐘周期輸出一個數(shù)據(jù)。圖1.372×2窗口池化仿真實現(xiàn)池化窗口為3×3的過程與上述過程類似,在緩存圖像數(shù)據(jù)時,需要緩存兩行數(shù)據(jù)開始計算,同時第三行數(shù)據(jù)到來時,每三個時鐘周期輸出一個池化結(jié)果。1.3加速器在FPGA平臺上的實現(xiàn)1.3.1卷積核硬件固化本文采用的FPGA平臺為Xilinx的Zynq系列中的XC7Z100-2FFG900芯片。該芯片采用ARM+FPGASOC技術(shù)將雙核ARM和FPGA可編程邏輯集成在一顆芯片上。ARM端集成了雙核64位ARMCortex-A9處理器,成為PS(ProcessingSystem);可編程端具有大量的I/O口以及可編程邏輯資源,可以完成各種邏輯運算,簡稱為PL(ProgrammableLogic)。其中內(nèi)部互聯(lián)結(jié)構(gòu)如圖1.38所示,圖1.38ZynqPS與PL連接結(jié)構(gòu)圖開發(fā)板如圖1.39所示,在PS端的外部存儲為兩片MT41J256M16HA-125DDR3存儲,PL端口同樣接了兩片MT41J256M16HA-125DDR3存儲。圖1.39開發(fā)板加速器首先需要固化卷積核,為了便于加速器的擴展與移植,應(yīng)采用參數(shù)化的方法固化卷積核。卷積系統(tǒng)需要N×K×K×M個乘法器,如采用卷積核大小為3×3時,K=3,則系統(tǒng)所需DSP為,N×9×M個DSP,片上DSP資源有2020個,在設(shè)計輸入特征圖通道N和輸出特征圖M時,考慮到卷積通道的個數(shù)為2的冪指數(shù),因此N以及M設(shè)為2的冪指數(shù),再根據(jù)DSP資N×系統(tǒng)的帶寬需求公式如下: Q總=Mn根據(jù)式子1.7可以計算出,模型1的帶寬需求為: Q總=(2片上的外部存儲芯片是DDR3系列,在進行讀寫數(shù)據(jù)時,采用的是猝發(fā)模式,核心頻率為200M,系統(tǒng)讀寫一次可以獲得8個32位數(shù)據(jù),片上的總帶寬為 Q=32?8?200?10ni是卷積層的輸入特征通道循環(huán)次數(shù),在n Q總=2+3/8?此時系統(tǒng)的帶寬無法滿足,由于本文設(shè)計了反饋操作,以及輸入緩存和輸出緩存的設(shè)計,對整個模型1的運行影響較小。采用該方案硬件實現(xiàn)時,臨時緩存大小設(shè)置為16384可卷積最大圖像為128×128,當(dāng)輸入特征圖大于該大小時,需要采用分塊卷積。系統(tǒng)綜合各模塊所需資源如表1.2所示,其中控制模塊包含所有控制模塊,主要是對指令進行一個存儲;緩存模塊所需資源包含輸入緩存、權(quán)重緩存、臨時緩存以及輸出緩存,主要是利用了BRAM進行數(shù)據(jù)的緩存;表中預(yù)處理模塊的資源為1個輸入特征通道,預(yù)處理模塊是為整個系統(tǒng)后續(xù)運算準(zhǔn)確提供數(shù)據(jù)的模塊,該模塊的功能復(fù)雜,因此使用較多的LUT,由于采用8個輸入特征圖通道數(shù)據(jù)并行處理,因此需要例化8個該模塊;一個卷積核3×3的PE計算模塊,需要使用較多DSP,且整個模型1需要8×16個DSP資源;池化模塊主要是包括了窗口2×2和3×3大小的最大池化和平均池化,設(shè)置的輸出通道為16,模型1需要例化16個池化模塊;激活函數(shù)模塊的資源需求如表1.3所示,其中Relu的資源需求最少,在需要用到Sigmoid以及Tanh函數(shù)時,資源需求會增多,且工作頻率較低,因此需要翻倍進行例化。表1.2各模塊資源需求資源LUTFFBRAMDSP控制模塊832106170緩存模塊402052512540預(yù)處理模塊(1個)3332134410卷積模塊(1個PE模塊)686809池化模塊(1個)70486310表1.3激活函數(shù)資源需求激活函數(shù)LUTFFDSP工作頻率MRelu17170200E的冪指數(shù)運算16465757100Sigmoid后續(xù)計算93851050Tanh后續(xù)計算81783050三種激活函數(shù)綜合實現(xiàn)時所需的總資源如表1.4所示,其中采用Relu資源需求少;在改變激活函數(shù)時增加最大的是LUT以及DSP的需求,因為Sigmoid和Tanh函數(shù)涉及除法操作,以及冪指數(shù)的運算;Sigmoid和Tanh函數(shù)同時實現(xiàn),由于部分資源的共用,因此所需資源并不是兩者之和。表1.4系統(tǒng)總資源需求資源LUTFFBRAMDSP采用Relu激活71843674482851152采用Sigmoid激活184258888402851376采用Tanh激活176531908882851376三種激活同時采用時206179925042851376圖1.40表示采用三種方案所需的資源利用率,在Relu激活函數(shù)中,利用率最高的是DSP資源,其占比為57%,其次是BRAM,占比為37%,在高并行度下,BRAM需求依舊很低,LUT以及FF使用率較低;有圖可知在采用Sigmoid和Tanh激活函數(shù)后,LUT需求增加最多,其次是DSP占比增高,BRAM持平,F(xiàn)F資源少量增加。圖1.40模型1資源利用率如固化卷積核大小為5×5,與3×3固化同樣的分析方法,其中(N×M)<(2020/25),可知N×M最大為64,為了減少第一層卷積對帶寬影響,設(shè)計的輸入特征圖通道參數(shù)為8,輸出特征圖通道數(shù)設(shè)為8,充分提升數(shù)據(jù)的復(fù)用率??傮w并行結(jié)構(gòu)為8個輸入特征圖通道進、8個輸出特征圖通道出以及卷積核公并行,系統(tǒng)一共需要1600(8×25×8)個DSP資源,以下簡稱為模型2。根據(jù)式子1.7可以計算出,模型2的帶寬需求為: Q總=(1ni是卷積層的輸入特征通道批,n固化該模型2時模塊需求資源如表1.5所示,其中控制模塊、池化模塊以及激活函數(shù)模塊與前面一致,緩存模塊主要減少了輸出緩存,但是增加了權(quán)重的緩存,采用5×5的卷積核,權(quán)重變?yōu)?×5×5×8,權(quán)重緩存增大;其次是預(yù)處理模塊需要緩存四(K-1)行數(shù)據(jù),并進行數(shù)據(jù)選擇操作,資源增多;卷積計算PE模塊隨著卷積核的增大,相應(yīng)資源也增多。表1.5模型2各模塊資源利用數(shù)據(jù)資源LUTFFBRAMDSP緩存模塊342650311780預(yù)處理模塊(1個)5347225320卷積模塊(1個PE模塊)211216025三種激活函數(shù)綜合實現(xiàn)時所需的總資源如表1.6所示,在Relu函數(shù)上,由于輸入并行通道不變,預(yù)處理模塊的資源增多,該模式比3×3卷積核LUT以及FF資源需求略有增多,同時由于輸出并行通道減少,因此BRAM資源減少。在Sigmoid和Tanh激活上,資源的需求大幅度減少,主要是由于輸出并行通道減少一半,在后續(xù)的激活函數(shù)模塊例化也相應(yīng)減少一半。表1.6模型2總資源需求數(shù)據(jù)資源LUTFFBRAMDSP采用Relu激活86537725802171600采用Sigmoid激活142617832762171712采用Tanh激活138881843012171712三種激活同時采用時153705849722171712圖1.41表示在輸入特征圖通道為8,輸出特征圖通道為8以及卷積核5×5模型2并行情況下的資源利用率,其中DSP利用率達到了80%左右,系統(tǒng)充分進行了并行加速。圖1.41模型2資源利用率若固化卷積核大小為7×7,則(N×M)<(2020/49),可知N×M為32,為了減少第一層卷積對帶寬的影響,以及對數(shù)據(jù)的盡量復(fù)用,減少資源的需求,設(shè)計的輸出特征圖通道參數(shù)也為8,輸入特征圖通道數(shù)設(shè)為4??傮w并行結(jié)構(gòu)為4個輸入特征圖通道進、8個輸出特征圖通道出以及卷積核共并行,系統(tǒng)一共需要1568(4×49×8)個DSP資源,以下簡稱為模型3。根據(jù)式子1.7可以計算出,模型3的帶寬需求為: Q總=(2ni是卷積層的輸入特征通道批,n該模型3的模塊需求資源如表1.7所示,其中控制模塊、池化模塊以及激活函數(shù)模塊與前面一致,緩存模塊主要減少了輸入緩存,因此BRAM減少,在LUT以及FF資源上由于卷積核的增大,權(quán)重緩存增大;其次是預(yù)處理模塊需要緩存6(K-1)行數(shù)據(jù),增加了BRAM需求,其次卷積窗口數(shù)據(jù)變?yōu)?×7,在準(zhǔn)備數(shù)據(jù)時邏輯功能增多,LUT資源增加;卷積計算PE模塊隨著卷積核的增大相應(yīng)資源也增多。表1.7模型3各模塊資源利用數(shù)據(jù)資源LUTFFBRAMDSP緩存模塊317547851700預(yù)處理模塊(1個)7284305430卷積模塊(1個PE模塊)429427049三種激活函數(shù)綜合實現(xiàn)時所需的總資源如表1.8所示,在Relu函數(shù)上,由于輸入并行通道減少,總體的資源都相應(yīng)減少。在采用Sigmoid和Tanh激活函數(shù)時,資源的需求與模型2相差不多,主要是由于輸出并行通道同為8通道,在后續(xù)激活函數(shù)上計算量一致,資源需求一致。表1.8模型3總體資源需求資源LUTFFBRAMDSP采用Relu激活72870665022131568采用Sigmoid激活128950771982131680采用Tanh激活125214782232131680三種激活同時采用時140038788942131680圖1.42表示為采用三種激活函數(shù)的資源利用率,與圖1.49和圖1.50一致,在采用Sigmoid和Tanh激活函數(shù)時,LUT會倍增,其他資源略增。圖1.42模型3資源利用率圖1.43為采用Relu激活函數(shù)時,在三種模型固化時所需資源的對比圖,通過對比發(fā)現(xiàn),在卷積核大小的改變對DSP以及BRAM資源的需求變化較大,FF以及LUT資源需求趨于穩(wěn)定。圖1.43Relu激活函數(shù)系統(tǒng)三種模型資源利用對比圖表1.9為三種模型采用全部激活函數(shù)時,系統(tǒng)的最大吞吐率,由于采用3×3卷積核設(shè)計的系統(tǒng)采用的DSP資源最少,以及對帶寬需求最高,其吞吐率最低,在實現(xiàn)整個系統(tǒng)時可以根據(jù)網(wǎng)絡(luò)類型進行系統(tǒng)的硬件固化選擇。表1.9三種模型的最大吞吐率模型模型1模型2模型3工作頻率(M)200200200最大吞吐率(GOP/S)423.96406卷積神經(jīng)網(wǎng)絡(luò)的重構(gòu)本文將重構(gòu)Lenet,ZFNet,VGG16以及ResNet四種網(wǎng)絡(luò)進行系統(tǒng)性能測試,表1.10為四種網(wǎng)絡(luò)的激活函數(shù)類型、卷積核大小以及池化模式,在激活函數(shù)上除了Lenet用了sigmoid激活函數(shù),其余都使用了Relu激活函數(shù),在卷積核大小中,Lenet和VGG16為統(tǒng)一的卷積核大小,另外兩種網(wǎng)絡(luò)的卷積核不固定,開始采用大的卷積核,后續(xù)采用小的卷積核,四種網(wǎng)絡(luò)的池化模式都為窗口2×2的最大池化,本節(jié)采用上章節(jié)固化的三種模型對網(wǎng)絡(luò)進行驗證。表1.10四種網(wǎng)絡(luò)的結(jié)構(gòu)模型網(wǎng)絡(luò)激活函數(shù)類型卷積核大小池化模式LenetSigmoid5窗口2×2的最大池化ZFNetRelu7、5、3窗口2×2的最大池化VGG16Relu3窗口2×2的最大池化ResNetRelu7、3窗口2×2的最大池化首先采用固化模型1對五種網(wǎng)絡(luò)進行驗證,模型1設(shè)計的卷積核大小為3×3,在計算大的卷積核時,需要將卷積分開,如圖1.44所示,5×5的卷積核需要根據(jù)指令分為四部分,將臨時結(jié)果存儲在臨時緩存中,隨后進行相加,7×7卷積核類似。圖1.445×5卷積核運算劃分圖固化模型1對網(wǎng)絡(luò)的工作性能如表1.11所示,網(wǎng)絡(luò)在計算VGG16的時候性能最好,是因為VGG16的卷積核大小為3×3,不會產(chǎn)生無效的卷積計算,整個系統(tǒng)的效率最高,其中ZFNet中卷積核有7和5大小的,其效率最低,由于ResNet只有一層卷積核為7,因此性能高于ZFNet網(wǎng)絡(luò)。表1.11模型1運行四種網(wǎng)絡(luò)的性能模型1工作頻率(M)吞吐率(GOP/S)功耗(W)功耗比(GOP/W)Lenet200317.4311.3727.91ZFNet200304.2311.3726.75VGG16200387.2711.3734.06ResNet200339.4311.3729.85圖1.45是對四種網(wǎng)絡(luò)的吞吐率的對比圖,有圖可見在計算VGG16時吞吐率較高,其他三種網(wǎng)絡(luò)吞吐率相差不大。圖1.45模型1運行四種卷積網(wǎng)絡(luò)的吞吐率對比固化模型2采用的是卷積核大小為5×5,在計算7×7的卷積核是與圖1.44類似,在計算3×3卷積核時,根據(jù)指令采用如圖1.46所示,紅色部分填充數(shù)據(jù)為0,讓其計算結(jié)果為0,采用該方法,整體效率較低。圖1.46大卷積核卷積小卷積核結(jié)構(gòu)圖表1.12為固化模型2對四種網(wǎng)絡(luò)的性能,圖1.47為吞吐率的對比圖,由表核圖可以看出,在運行Lenet時系統(tǒng)的表現(xiàn)最好,吞吐率達到576G/S,由于Lenet網(wǎng)絡(luò)的卷積核大小為5×5,系統(tǒng)運行效率最高;在運行卷積核7×7的卷積時計算效率高于運算卷積核3×3時,由于VGG16的卷積核大小為3×3,因此整個系統(tǒng)中運行四種網(wǎng)絡(luò)中時,VGG16網(wǎng)絡(luò)的性能最低。表1.12模型2運行四種網(wǎng)絡(luò)的性能固化類型工作頻率(M)吞吐率(GOP/S)功耗(W)功耗比(GOP/W)Lenet200576.6110.8253.29ZFNet200332.8410.8230.76VGG16200217.0310.8220.05ResNet200220.1810.8220.35圖1.47模型2運行四種卷積網(wǎng)絡(luò)的吞吐率對比固化模型3采用的是卷積核大小為7×7,在計算5×5和3×3卷積核時,根據(jù)指令采用圖1.46所示的模式進行計算,在計算卷積核大小為5和3的時整體效率較低。表1.13為固化模型3對四種網(wǎng)絡(luò)的性能,圖1.48為其運行四種網(wǎng)絡(luò)的吞吐率對比圖,由表和圖可以看出,在運行大的卷積核時性能最好,隨著卷積核大小的改變,性能在大幅度降低,主要是由于PE模塊的利用率在降低。表1.13模型3運行四種網(wǎng)絡(luò)的性能固化類型工作頻率(M)吞吐率(GOP/S)功耗(W)功耗比(GOP/W)Lenet200313.4210.6829.35ZFNet200254.6310.6823.84VGG16200114.7810.6810.75ResNet200121.8310.6811.41圖1.48模型3運行四種卷積網(wǎng)絡(luò)的吞吐率對比圖1.49為三種模型對四種網(wǎng)絡(luò)運行的一個吞吐率對比圖,有圖可見,在所有的網(wǎng)絡(luò)與模型中,模型2采用了更多的計算單元,以及與LeNet網(wǎng)絡(luò)的卷積核大小一致,因此其吞吐率最大;模型3設(shè)計大的卷積核結(jié)構(gòu),在運行卷積核大小為3的VGG16時,由于計算單元利用率較低,系統(tǒng)的性能最低。LeNet網(wǎng)絡(luò)在三種模型中,由于與模型2的卷積核大小一致,表現(xiàn)最好,在其他兩個模型中,計算效率較低,因此性能不高;ZFNet網(wǎng)絡(luò)的卷積核比較復(fù)雜有多種卷積核,在三種模型中總存在計算效率低的卷積層,因此在三種模型中表現(xiàn)都較中庸;VGG16的卷積核大小與模型1的卷積核大小一致,因此在模型1中性能表現(xiàn)最好,隨著卷積核的增大,卷積計算效率越低,因此在另外兩種模型中,性能逐漸減少;ResNet網(wǎng)絡(luò)的卷積核大多為3,只有一層卷積核大小為7,因此整體上與VGG16變化一致,但是由于有一層卷積層卷積核大小為7,因此在隨卷積核大小增大的過程中,其性能比VGG16變化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論