基于FPGA的深度學(xué)習(xí)CNN加速器設(shè)計(jì)方案_第1頁(yè)
基于FPGA的深度學(xué)習(xí)CNN加速器設(shè)計(jì)方案_第2頁(yè)
基于FPGA的深度學(xué)習(xí)CNN加速器設(shè)計(jì)方案_第3頁(yè)
基于FPGA的深度學(xué)習(xí)CNN加速器設(shè)計(jì)方案_第4頁(yè)
基于FPGA的深度學(xué)習(xí)CNN加速器設(shè)計(jì)方案_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

基于FPGA的深度學(xué)習(xí)CNN加速器設(shè)計(jì)方案因?yàn)镃NN的特有計(jì)算模式,通用處理器對(duì)于CNN實(shí)現(xiàn)效率并不高,不能滿足性能要求。因此,近來已經(jīng)提出了基于FPGA,GPU甚至ASIC設(shè)計(jì)的各種加速器來提高CNN設(shè)計(jì)的性能。在這些方法中,基于FPGA的加速器引起了研究人員越來越多的關(guān)注,因?yàn)樗鼈兙哂行阅芎茫茉葱矢?,開發(fā)周期快,重構(gòu)能力強(qiáng)等優(yōu)點(diǎn)。在實(shí)驗(yàn)中,研究人員發(fā)現(xiàn)在FPGA相同的邏輯資源利用率情況下,兩種不同解決方案可能會(huì)有多達(dá)90%的性能差異。所以找出最佳解決方案是很重要的,特別是當(dāng)考慮到FPGA平臺(tái)的計(jì)算資源和存儲(chǔ)器帶寬的限制時(shí)。實(shí)際上,如果加速器結(jié)構(gòu)沒有精心設(shè)計(jì),其計(jì)算吞吐量與提供FPGA平臺(tái)的內(nèi)存帶寬不匹配。這意味著由于邏輯資源或存儲(chǔ)器帶寬的利用不足將造成性能的降級(jí)。不幸的是,F(xiàn)PGA技術(shù)和深度學(xué)習(xí)算法的進(jìn)步同時(shí)加劇了這個(gè)問題。一方面,由最先進(jìn)的FPGA平臺(tái)提供的日益增加的邏輯資源和存儲(chǔ)器帶寬擴(kuò)大了設(shè)計(jì)空間。此外,當(dāng)應(yīng)用各種FPGA優(yōu)化技術(shù)(如循環(huán)平鋪和變換)時(shí),設(shè)計(jì)空間進(jìn)一步擴(kuò)大。另一方面,為了適應(yīng)現(xiàn)代應(yīng)用的需求,深度學(xué)習(xí)算法的規(guī)模和復(fù)雜性也在不斷增加。所以,在設(shè)計(jì)空間中找出最優(yōu)解是比較困難的。因此,迫切需要有效的方法來探索基于FPGA的CNN設(shè)計(jì)空間。然而現(xiàn)有的大部分工作主要關(guān)注計(jì)算引擎優(yōu)化,它們有的忽略外部存儲(chǔ)器操作,有的將其加速器直接連接到外部存儲(chǔ)器。還有些研究工作通過精細(xì)的數(shù)據(jù)重用減少外部數(shù)據(jù)訪問來加速CNN應(yīng)用。然而,這種方法并不一定會(huì)導(dǎo)致最佳的整體性能。此外,這種方法需要重新配置不同層次的FPGA計(jì)算。這在某些情況下是不可行的。因此,為了有效地探索設(shè)計(jì)空間,有研究人員提出了一種分析設(shè)計(jì)方案。這種方案考慮到緩沖區(qū)管理和帶寬優(yōu)化,以更好地利用FPGA資源并實(shí)現(xiàn)更高的性能。同時(shí)加速器能夠跨越不同的層執(zhí)行加速作業(yè),而無需重新編程FPGA。下面我們具體來看一下這種方案??紤]到在應(yīng)用中基本都是將訓(xùn)練好的CNN模型部署到現(xiàn)有計(jì)算平臺(tái)上進(jìn)行預(yù)測(cè)操作,所以,很多的FPGA加速方案中僅考慮優(yōu)化前向操作。同時(shí)又有研究表明,卷積操作占據(jù)了CNN模型將近90%的計(jì)算時(shí)間,所以,本方案也是僅考慮優(yōu)化CNN模型前向計(jì)算中的卷積運(yùn)算,優(yōu)化的模型選擇為經(jīng)典的AlexNet。同時(shí)為了更好的分析網(wǎng)絡(luò)的性能,研究人員借助RooflineModel進(jìn)行優(yōu)化方案的設(shè)計(jì)。通過這個(gè)model,既可以評(píng)估一個(gè)設(shè)計(jì)的效率,還能很容易看出設(shè)計(jì)到底是computation-limited還是memorybandwidth-limited,可以幫助確定進(jìn)一步優(yōu)化的思路。首先,我們先來了解一下CNN中的卷積運(yùn)算的規(guī)則,CNN中的卷積運(yùn)算如圖1所示,代碼1表示其偽代碼。圖1代碼1幾乎所有的基于FPGA的加速方案,都如圖2顯示的那樣,F(xiàn)PGA上的CNN加速器設(shè)計(jì)主要由處理元件(PE),片上緩沖器,外部存儲(chǔ)器和片上/片外互連幾個(gè)組件組成。其中PE是卷積的基本計(jì)算單元。用于處理的所有數(shù)據(jù)都存儲(chǔ)在外部存儲(chǔ)器中。由于片上資源限制,數(shù)據(jù)首先被緩存在片上緩沖區(qū)中,然后再饋送給PE。雙緩沖區(qū)用于通過數(shù)據(jù)傳輸時(shí)間來覆蓋計(jì)算時(shí)間。片內(nèi)互連專用于PE和片上緩沖存儲(chǔ)器之間的數(shù)據(jù)通信。圖2通過觀察圖2,我們可以發(fā)現(xiàn)有幾個(gè)設(shè)計(jì)問題妨礙了FPGA平臺(tái)上高效的CNN加速器設(shè)計(jì)。首先,為了適應(yīng)芯片上的一小部分?jǐn)?shù)據(jù),循環(huán)平鋪是必須的。不正確的平鋪可能會(huì)降低數(shù)據(jù)重用的效率和數(shù)據(jù)處理的并行性。第二,應(yīng)仔細(xì)考慮PE和緩沖庫(kù)的組織以及它們之間的互連,以便有效地處理片上數(shù)據(jù)。第三,PE的數(shù)據(jù)處理吞吐量應(yīng)與FPGA平臺(tái)提供的片外帶寬匹配。為了解決上述問題,下面逐條分解實(shí)現(xiàn)方案。1)首先,方案采用循環(huán)平鋪(代碼2)。注意,循環(huán)迭代器i和j由于CNN中卷積窗口大小K的相對(duì)小的尺寸(通常在3到11之間)而不是平鋪的。其他循環(huán)迭代器(row,col,to和ti)平鋪到圖形循環(huán)和點(diǎn)循環(huán)中(代碼2中的trr,tcc和tii)。代碼22)片上計(jì)算優(yōu)化的實(shí)現(xiàn)計(jì)算優(yōu)化的目的是在充分利用FPGA硬件平臺(tái)提供的所有計(jì)算資源的同時(shí),實(shí)現(xiàn)高效的循環(huán)展開/流水線化。循環(huán)展開可用于增加FPGA設(shè)備中大規(guī)模計(jì)算資源的利用率。在給定陣列上循環(huán)維度的不同循環(huán)迭代之間的數(shù)據(jù)共享關(guān)系可分為三類:不相干,獨(dú)立,有依賴關(guān)系。對(duì)應(yīng)如圖3所示。如代碼2所示,CNN代碼中的數(shù)據(jù)共享關(guān)系如表1所示。圖3表1因此在設(shè)計(jì)展開時(shí),選擇對(duì)too和tii進(jìn)行展開,以避免所有陣列的復(fù)雜連接拓?fù)洹oo和tii被置換到最內(nèi)層循環(huán),以簡(jiǎn)化HLS代碼生成。生成的硬件實(shí)現(xiàn)如圖4所示。圖4循環(huán)流水線化是高級(jí)合成中的關(guān)鍵優(yōu)化技術(shù),通過重復(fù)來自不同循環(huán)迭代的操作的執(zhí)行來提高系統(tǒng)吞吐量。因此方案使用基于多面體的優(yōu)化框架來執(zhí)行自動(dòng)循環(huán)變換以將并行循環(huán)水平置換到最內(nèi)層,以避免循環(huán)依賴。最終循環(huán)展開和循環(huán)流水線優(yōu)化后的代碼結(jié)構(gòu)如代碼3所示。代碼33)內(nèi)存訪問優(yōu)化的實(shí)現(xiàn)代碼4展示了一個(gè)CNN層的存儲(chǔ)器傳送操作。輸入/輸出特征圖和權(quán)重在計(jì)算引擎啟動(dòng)之前就已被加載,計(jì)算完成后,將生成的輸出特征圖寫回主存儲(chǔ)器。代碼4通過分析可知,通信部分中的最內(nèi)層循環(huán)(代碼4中的ti)與數(shù)組無關(guān),因此在不同的循環(huán)迭代之間存在冗余的存儲(chǔ)器操作。所以方案使用本地存儲(chǔ)提升來減少相關(guān)冗余操作。代碼4中,最內(nèi)圈的維數(shù)ti與陣列輸出特征圖無關(guān)。因此,可以將對(duì)陣列輸出特征圖的訪問提升到外部循環(huán)。請(qǐng)注意,升級(jí)過程可以迭代執(zhí)行,直到訪問周圍的最內(nèi)層循環(huán)最終相關(guān)。通過本地存儲(chǔ)提升,陣列輸出特征圖上的存儲(chǔ)訪問操作的行程計(jì)數(shù)從降到了。循環(huán)轉(zhuǎn)換數(shù)據(jù)重用。為了通過本地存儲(chǔ)提升最大化數(shù)據(jù)重用的機(jī)會(huì),方案使用基于多面體的優(yōu)化框架來識(shí)別所有合法的循環(huán)轉(zhuǎn)換。表2顯示了循環(huán)迭代和數(shù)組之間的數(shù)據(jù)共享關(guān)系。每個(gè)合法循環(huán)調(diào)度中都會(huì)使用本地存儲(chǔ)提升功能,以減少總通信量。表2通過上述操作,方案明顯提升了CTCRatio。4)設(shè)計(jì)空間探索以CNN模型的第5層為例,圖5描繪了CNN模型的第5層在rooline模型坐標(biāo)系中的所有合理的解決方案。橫軸表示CCTRatio,縱軸表示計(jì)算性能(GFLOPS)。任何點(diǎn)與原點(diǎn)(0,0)之間的線的斜率表示該實(shí)現(xiàn)的最小帶寬要求。圖5圖6中,帶寬Roof和計(jì)算Roof的線由平臺(tái)的規(guī)格定義。帶寬Roof線的左側(cè)的任何一點(diǎn)都需要比平臺(tái)提供的帶寬更高的帶寬。例如,盡管圖中A方案實(shí)現(xiàn)了最高的計(jì)算性能,但是目標(biāo)平臺(tái)無法滿足該方案所需的存儲(chǔ)器帶寬。所以,綜合分析比較,最終選擇方案C作為第5層的設(shè)計(jì)方案,它的帶寬要求為2.2GB/s。圖65)多層CNN加速器設(shè)計(jì)在此之前,我們討論了如何找到每個(gè)卷積層的最優(yōu)實(shí)現(xiàn)方案。但是,在CNN應(yīng)用中,這些參數(shù)可能在不同的層之間需要變化。表3描述了該應(yīng)用CNN模型中所有層的最優(yōu)展開因子(Tm和Tn)。為了解決這個(gè)問題,本方案采用的方法是在不同卷積層之間設(shè)計(jì)具有均勻展開因子的硬件架構(gòu)。具有統(tǒng)一展開因子的CNN加速器設(shè)計(jì)和實(shí)現(xiàn)簡(jiǎn)單,但可能對(duì)某些層是次優(yōu)的。表3顯示,使用統(tǒng)一展開因子<64,7>,與每個(gè)優(yōu)化卷積層的總執(zhí)行周期相比,退化在5%以內(nèi)。因此,方案選擇了CNN加速器在卷積層上的統(tǒng)一展開因子。表3解決完上述問題,圖7就是整個(gè)實(shí)現(xiàn)方案架構(gòu)。實(shí)驗(yàn)是在具有XilinxFPGA芯片Virtex7485t的VC707板上完成。其工作頻率為100MHz。為了比較性能,CPU軟件實(shí)現(xiàn)在具有15MB高速緩存的IntelXeonCPUE5-2430(@2.20

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論