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

        ?

        面向卷積神經(jīng)網(wǎng)絡(luò)的硬件加速器設(shè)計(jì)方法

        2021-07-14 16:21:34明,陳
        關(guān)鍵詞:方法

        孫 明,陳 昕

        同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海201804

        卷積神經(jīng)網(wǎng)絡(luò)是一種以特征提取為主要方式的深度學(xué)習(xí)算法,被廣泛用在圖像分類、對(duì)象檢測(cè)和語義分割等領(lǐng)域[1]。但其參數(shù)過于龐大,運(yùn)算過程需要使用大量的算力。適用于CNN 高密度計(jì)算的主流硬件有GPU、ASIC和FPGA[2]。與前兩者相比,F(xiàn)PGA作為并行化的計(jì)算密集型加速硬件,功耗低、可靈活編程、開發(fā)周期短,在加速CNN上,獲得了更廣泛應(yīng)用。

        研究人員主要集中在兩方面優(yōu)化:減少所需的內(nèi)存帶寬和降低推理計(jì)算復(fù)雜度。Chung等人[3]采用了將奇異值分解與剪枝方法組合使用的方案來對(duì)模型進(jìn)行壓縮,從而減少網(wǎng)絡(luò)參數(shù)。Zhang等人[4]提出一種Caffeine框架,將卷積和全連接運(yùn)算轉(zhuǎn)換為通用矩陣相乘,實(shí)現(xiàn)了100 倍性能提升。Liang 等人[5]和Prasanna 等人[6-7]采用快速算法Winograd 和FFT 將卷積變換到特殊域(如頻域)完成,將乘法數(shù)量減少到n2。Alwani 等人[8]采用fusion計(jì)算模式逐層推理,減少高達(dá)90%的片內(nèi)外傳輸。上述方法存在以下問題:對(duì)模型修剪[3]或卷積層融合[8]時(shí),雖減少了內(nèi)存用量和降低帶寬壓力,但片上計(jì)算資源利用率低;并行計(jì)算程度較高[4]或降低運(yùn)算復(fù)雜度[5-7],但造成冗余數(shù)據(jù)復(fù)制,對(duì)片上緩存容量要求高。

        本文旨在克服上述不足,主要貢獻(xiàn)如下:

        (1)對(duì)卷積6 個(gè)循環(huán)進(jìn)行設(shè)計(jì)空間探索,以確定循環(huán)分塊因子,提高數(shù)據(jù)復(fù)用程度以減小帶寬需求。

        (2)通過展開分塊充分挖掘4 種計(jì)算并行度:層間并行、層內(nèi)并行、核間并行、核內(nèi)并行。

        (3)將加速方法包裝成RTL 組件,向外提供Python接口,給定器件規(guī)格和網(wǎng)絡(luò)配置,可實(shí)現(xiàn)深度學(xué)習(xí)加速算法到板級(jí)FPGA部署的自動(dòng)代碼生成。

        本文第1章描述了CNN加速框架設(shè)計(jì)流程和CNN加速器整體架構(gòu);第2章詳細(xì)介紹了具體加速方法;第3章展示了實(shí)驗(yàn)結(jié)果;第4章得出了結(jié)論。

        1 加速器架構(gòu)設(shè)計(jì)

        1.1 CNN加速框架設(shè)計(jì)流程

        如圖1 所示,本設(shè)計(jì)流程可分為訓(xùn)練和生成兩步,前一步的輸出作為后一步的輸入。

        圖1 CNN加速框架設(shè)計(jì)流程圖

        訓(xùn)練階段:與卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程相同,對(duì)于一個(gè)目標(biāo)網(wǎng)絡(luò).prototxt,用戶采用caffe 在CPU 或GPU 上進(jìn)行反向傳播,當(dāng)?shù)螖?shù)達(dá)到給定值或驗(yàn)證集準(zhǔn)確率符合期望時(shí),得到訓(xùn)練后的權(quán)重文件.caffemodel。

        生成階段:首先對(duì)前一階段的權(quán)重信息文件.caffemodel 和網(wǎng)絡(luò)模型定義文件.prototxt 進(jìn)行解析,獲得各層類型(如:Conv、Activation、BN、Shoutcut等)和卷積核尺寸,將網(wǎng)絡(luò)各層進(jìn)行模塊化分解,映射到對(duì)應(yīng)的預(yù)制IP庫(kù)中各RTL塊(如乘累加器、循環(huán)計(jì)算模塊、激活函數(shù)模塊、數(shù)據(jù)流控制器、輸入輸出處理模塊等),通常情況下,一個(gè)卷積層由多個(gè)基本RTL組件構(gòu)成。在優(yōu)化階段,基于設(shè)計(jì)空間探索,對(duì)實(shí)現(xiàn)卷積計(jì)算的6 個(gè)循環(huán)進(jìn)行分塊,并將循環(huán)分塊展開(詳見第2 章),本過程是生成加速器的核心,此外,還對(duì)整體網(wǎng)絡(luò)層的流水線進(jìn)行了細(xì)粒度優(yōu)化,在同一時(shí)間點(diǎn)各層也能進(jìn)行同時(shí)計(jì)算。進(jìn)入組件整合階段,生成器將預(yù)構(gòu)建的各RTL 網(wǎng)絡(luò)組件、各層數(shù)據(jù)流控制器、讀寫控制模塊等進(jìn)行組裝以形成CNN實(shí)現(xiàn),各個(gè)模塊或組件均是高度可重構(gòu),以確保對(duì)不同結(jié)構(gòu)的CNN 的適應(yīng)性和擴(kuò)展性。最后,在代碼生成階段輸出適用于目標(biāo)FPGA 開發(fā)板的CNN 加速器的Verilog代碼。

        若綜合和實(shí)現(xiàn)后,當(dāng)前CNN 時(shí)延過大或各層的BRAMs 數(shù)/DSPs 數(shù)比率差異大等,用戶可更新網(wǎng)絡(luò)設(shè)計(jì),例如修改網(wǎng)絡(luò)層、更換位寬量化策略、改變計(jì)算并行度等,經(jīng)過訓(xùn)練和生成的幾次迭代,最終的網(wǎng)絡(luò)配置結(jié)構(gòu)和優(yōu)化方法能契合預(yù)期性能。

        1.2 生成的CNN加速器整體架構(gòu)

        生成的加速器總體架構(gòu)如圖2所示,采用層并行模式。主要包括卷積計(jì)算引擎、片上緩存、外部存儲(chǔ)、內(nèi)部互聯(lián)總線、多個(gè)控制器等。片外DDR 用于存儲(chǔ)訓(xùn)練好的模型參數(shù)和初始輸入圖片、推斷結(jié)果。片上緩存包括各個(gè)權(quán)重緩存單元和輸入輸出緩存池,用于保存通過DMA 讀取的權(quán)重值、各層輸入輸出特征圖和中間計(jì)算結(jié)果。卷積計(jì)算陣列,由多個(gè)處理單元組成,每個(gè)處理單元的構(gòu)成元素是級(jí)聯(lián)的乘累加器,負(fù)責(zé)并行計(jì)算?;ヂ?lián)總線用于前后層的控制信號(hào)傳輸??刂破髫?fù)責(zé)網(wǎng)絡(luò)各層計(jì)算順序和緩存流向。

        圖2 生成的CNN加速器概覽

        運(yùn)算過程中,在將圖片像素從片外DDR 中讀入計(jì)算陣列前,先將各層的權(quán)重通過DMA 控制器讀到權(quán)重緩存中,若參數(shù)量小,則一次性將其全部保存,運(yùn)行過程中不再傳輸權(quán)重,當(dāng)參數(shù)規(guī)模較大則需要實(shí)時(shí)傳輸。之后,啟動(dòng)PE 陣列計(jì)算。為達(dá)到高效計(jì)算和節(jié)省ROM/RAM資源,配置兩個(gè)片上緩存池,各層在輸入和輸出緩沖池中均有兩個(gè)可重用的乒乓緩沖區(qū),緩沖區(qū)的數(shù)量小于層數(shù),通過覆蓋計(jì)算時(shí)間來避免加/卸載數(shù)據(jù)所需要的時(shí)間開銷。緩沖控制器負(fù)責(zé)輸入和輸出緩沖池中的數(shù)據(jù)讀取寫入,上層輸出緩存區(qū)中的寫入數(shù)據(jù)即為本層待輸入的特征圖。結(jié)合卷積計(jì)算的循環(huán)分塊技術(shù),在得到部分輸出結(jié)果時(shí),即可開始下一層運(yùn)算,主控制器用來支持整個(gè)網(wǎng)絡(luò)的細(xì)粒度流水線順序。

        2 加速方案設(shè)計(jì)

        CNN 網(wǎng)絡(luò)中卷積計(jì)算可視為一個(gè)多維嵌套循環(huán),如圖3所示。其中Rin=(Rout-1)×S+K,Cin=(Cout-1)×S+K。

        圖3 卷積層偽代碼

        采用分塊技術(shù)分割循環(huán)中的迭代空間可有效緩解片上內(nèi)存緊張,而可行的分塊維度包括平面卷積窗口運(yùn)算(K×K)、輸出特征圖尺寸(Rout×Cout)和輸入輸出通道數(shù)(M×N),因?yàn)镵值一般都很?。ㄍǔ閇3,11]),故采用對(duì)后兩個(gè)維度進(jìn)行分塊操作,如圖4所示。

        圖4 循環(huán)分塊原理圖

        其各維度對(duì)應(yīng)的分塊尺寸為Tro、Tco、Tn、Tm完成一個(gè)卷積層的執(zhí)行周期數(shù)為:

        未分塊的圖3所示的卷積層所需的操作總數(shù)為:

        在采用后續(xù)的循環(huán)展開操作以及忽略流水線開銷的影響時(shí),Rooflinemodel[9]中的ComputationalRoof 可由下式計(jì)算:

        而對(duì)于具有Npe個(gè)處理單元的計(jì)算通路,通常有如下限制條件:

        最優(yōu)的架構(gòu)是最大化ComputationalRoof,等效于最小化執(zhí)行周期數(shù)。

        在采用w位寬量化策略時(shí),圖4中循環(huán)分塊對(duì)輸入輸出特征圖和權(quán)重緩存尺寸的要求為:

        其中BRAMcapacity為片上內(nèi)存容量。

        分塊后需要對(duì)輸入輸出特征圖和權(quán)重進(jìn)行片外讀取的次數(shù)為:

        Computation to Communication(CTC)ratio 用來表征每次內(nèi)存訪問能支持的計(jì)算操作數(shù)量,是衡量數(shù)據(jù)重用水平的一個(gè)指標(biāo),其定義如下:

        由公式(3)和公式(10)可得出,在給定分塊策略下的ComputationalRoof 和CTC,對(duì)分塊因子采用窮搜,對(duì)于所有可行的ComputationalRoof 和CTC ratio解對(duì),根據(jù)目標(biāo)FPGA平臺(tái)規(guī)格,采用文獻(xiàn)[9]中的Rooflinemodel可得出具有最低帶寬需求但計(jì)算性能最高的最優(yōu)解。

        由于生成的加速器采用層間流水線架構(gòu),為達(dá)到最大吞吐量性能,在考慮各層復(fù)雜度、數(shù)據(jù)重用行為的情況下,需使各流水線段的負(fù)載平衡,以使時(shí)延大致相等[10]:

        其中Ci代表層i的計(jì)算復(fù)雜度(見公式(2)),Ri表示層i所消耗的計(jì)算資源(公式(4)乘以每個(gè)PE 所需DSP 數(shù)量),片上可用的計(jì)算計(jì)算為Rtotal,而層i的時(shí)延Di為:

        其中λ是與硬件工作頻率有關(guān)的常量。網(wǎng)絡(luò)整體吞吐量受限于具有最大計(jì)算時(shí)間的卷積層:

        因此,本加速器采用公式(12)~(15)指導(dǎo)網(wǎng)絡(luò)對(duì)各層進(jìn)行計(jì)算資源分配。

        經(jīng)過循環(huán)分塊后,圖3 最里層的6 個(gè)小循環(huán)所涉及的計(jì)算任務(wù)不僅具有數(shù)據(jù)來源的相關(guān)性和結(jié)果的獨(dú)立性,而且被劃分為更小的計(jì)算單元,完全可能在片上實(shí)現(xiàn)并行化計(jì)算,使資源和帶寬得到更充分利用,如圖5~8所示。

        圖5 層間并行

        圖5展示了層間并行,以分塊為基本流水段的細(xì)粒度流水線可以實(shí)現(xiàn)同一時(shí)間段所有層的并行計(jì)算,減小了啟動(dòng)延時(shí)。圖6中是層內(nèi)并行,該并行是通過輸入像素復(fù)用實(shí)現(xiàn)的,當(dāng)計(jì)算輸出特征圖像上不同通道相同位置的區(qū)域,所需要的輸入特征圖像數(shù)據(jù)是固定區(qū)域,唯一的區(qū)別是各個(gè)輸出通道對(duì)應(yīng)的卷積核不相同,該種并行度為Tn×Tm。圖7 描述了核間并行,該并行是通過權(quán)重?cái)?shù)據(jù)復(fù)用實(shí)現(xiàn)的,輸出特征圖像中的同一個(gè)通道的不同位置像素,所使用的是同一組權(quán)重?cái)?shù)據(jù),對(duì)應(yīng)該種并行度為Tro×Tco。圖8 是核內(nèi)并行,輸入特征圖每一通道的卷積窗口與對(duì)應(yīng)卷積核平面計(jì)算涉及大量乘加操作,這些運(yùn)算都是可并行的,并行度為K×K。

        圖6 層內(nèi)并行

        圖7 核間并行

        圖8 核內(nèi)并行

        本加速器計(jì)算引擎采用上述4種并行性后的結(jié)構(gòu),如圖9所示。圖中,Pix和W代表像素和權(quán)重,一個(gè)乘法器和一個(gè)加法器組成一個(gè)基本處理單元,后面連接一加法器樹。每個(gè)灰色填充區(qū)域代表一個(gè)卷積窗口和對(duì)應(yīng)卷積平面點(diǎn)乘,對(duì)應(yīng)核內(nèi)并行;Tn個(gè)灰色區(qū)域?yàn)橐唤M,用黑色實(shí)線框住,可以生成一個(gè)輸出像素值。而紅色虛線包圍的計(jì)算處理引擎共享相同的特征圖像數(shù)據(jù),能夠?qū)崿F(xiàn)層內(nèi)并行,Tm×Tn×K×K表示小工作集像素值復(fù)用和核內(nèi)并行下的乘法器個(gè)數(shù),可同時(shí)生成Tm個(gè)輸出像素。左邊藍(lán)色虛線區(qū)域的處理引擎不同的像素值與相同的權(quán)重相乘,實(shí)現(xiàn)了核間并行,Tro×Tco×Tn×K×K表示小工作集權(quán)重復(fù)用和核內(nèi)并行下的乘法器個(gè)數(shù),可同時(shí)生成Tro×Tco個(gè)輸出像素。

        圖9 全并行模式下的計(jì)算引擎結(jié)構(gòu)

        3 實(shí)驗(yàn)結(jié)果評(píng)估

        本文實(shí)驗(yàn)首先在ubuntu18.04 系統(tǒng)和python2.7 環(huán)境下,采用caffe 訓(xùn)練AlexNet[11]網(wǎng)絡(luò)模型,將訓(xùn)練后的權(quán)重.caffemodel、網(wǎng)絡(luò)定義文件.prototxt 以及FPGA(Virtex7 690t)各資源參數(shù)值作為CNN 加速框架輸入,得到分割并轉(zhuǎn)換后的各層權(quán)重二進(jìn)制.coe文件、加速器verilog 源代碼和仿真測(cè)試數(shù)據(jù)。之后在ubuntu14.04 系統(tǒng)和vivado2013.4的非工程模式下,調(diào)用其multiplier和ROM/RAM memory IP 核生成用于各層乘加運(yùn)算和存儲(chǔ)結(jié)果的模塊。最后,在配備有Intel i5-7400 CPU,顯卡為HD Graphics 630的Win10系統(tǒng)下,通過vivado2018.3和modelsim10.1c 的聯(lián)合仿真(200 MHz 工作頻率)、綜合及布局布線,實(shí)現(xiàn)了3個(gè)網(wǎng)絡(luò)的正向傳播。考慮到過度參數(shù)化的CNN 模型中存在大量冗余連接[12],為了有效減少片內(nèi)外存儲(chǔ)需求,加速器使用動(dòng)態(tài)4-8-16位量化策略,top-5準(zhǔn)確率僅下降不到2%。

        3.1 FPGA映射結(jié)果

        根據(jù)FPGA(Virtex7 690t)的硬件資源參數(shù)值和AlexNet模型的網(wǎng)絡(luò)配置,CNN加速框架輸出verilog語言形式的CNN 加速器。采用Vivado2018.3 工具集完成布局布線和仿真,得到圖10 中的AlexNet 加速器,圖11是圖10 中的第五個(gè)卷積層結(jié)構(gòu)的原理圖,可見加速器的整體架構(gòu)采用層并行模式以層間流水線形式存在,各卷積層IP通過由乘累加器組成的vector_muladd模塊實(shí)現(xiàn)并行計(jì)算。表1 顯示了部署后的資源利用率和實(shí)現(xiàn)性能,加速器高效地利用了FPGA的硬件資源。在批處理尺寸為11,采用4-8-16 位動(dòng)態(tài)精度數(shù)據(jù)量化策略[13],工作頻率為200 MHz時(shí),每秒能處理93.7張227×227×3的圖像最高可達(dá)1 493.4 Gops 計(jì)算峰值,而僅使用了2 562 塊DSP 和688 塊BRAM 參與前向推理,分別占用片上存儲(chǔ)和計(jì)算資源總數(shù)的46.8%和71.2%。

        表1 Virtex7 690t@200 MHz下實(shí)驗(yàn)結(jié)果

        圖10 AlexNet網(wǎng)絡(luò)加速器原理圖

        圖11 卷積層結(jié)構(gòu)原理圖

        本文對(duì)關(guān)鍵資源DSP 的利用效率進(jìn)行了評(píng)估。引入DSP 效率來表示參與運(yùn)算的DSP 的實(shí)際與理論最大性能的比率,定義為:

        當(dāng)采用定點(diǎn)數(shù)16,8,4 時(shí),β=2,4,8,表示一個(gè)DSP 與其相應(yīng)的邏輯單元在一個(gè)時(shí)鐘周期可進(jìn)行的算術(shù)操作次數(shù)[10]。DSP_num×freq×β是在給定頻率下,所有DSP能達(dá)到的理論最大算力,分子Perf.為表1 中的實(shí)際性能。因?yàn)槠洳灰蕾囉贔PGA 平臺(tái)的片上DSP 數(shù)量且消除了時(shí)鐘頻率的影響,可以對(duì)使用不同F(xiàn)PGA 平臺(tái)和CNN模型的并行優(yōu)化算法進(jìn)行公平比較。表中顯示在Virtex7上DSP的效率高達(dá)0.73(Ops/DSPs/cycle)。

        3.2 量化策略評(píng)估

        令DW/DP 表示,位寬為DW 的數(shù)據(jù)定點(diǎn)量化后小數(shù)點(diǎn)位置為DP。表2列出了主導(dǎo)計(jì)算的層的數(shù)據(jù)量化情況。

        表2 關(guān)鍵層的輸入輸出與權(quán)值量化

        未列出的層(如池化等)輸出與輸入量化保持一致。圖12是文獻(xiàn)[14]多次訓(xùn)練后得出的AlexNet預(yù)測(cè)準(zhǔn)確度top-1 和top-5 隨網(wǎng)絡(luò)量化位寬的變化曲線(訓(xùn)練后,各層權(quán)值截?cái)嘀料嗤粚挘???梢?,?dāng)精度下降到8 bit 以下,準(zhǔn)確度急劇下滑,但考慮到全連接層權(quán)重密度大、數(shù)值小和存在冗余連接多,本策略仍然對(duì)全連接層權(quán)值采用較激進(jìn)的4 bit位寬。與采用32位浮點(diǎn)方案相比,本方案在Ristretto caffe[15](caffe的擴(kuò)展,可以有限數(shù)據(jù)精度訓(xùn)練、微調(diào)和測(cè)試網(wǎng)絡(luò))訓(xùn)練后的top-1和top-5準(zhǔn)確度下降幅度均在2%以內(nèi),分別為從55.7%下降到53.9%,79.0%到77.9%。

        圖12 預(yù)測(cè)準(zhǔn)確度與網(wǎng)絡(luò)量化位寬關(guān)系

        進(jìn)一步針對(duì)于具體圖像采用上述量化方案在FPGA上正向傳播過程中產(chǎn)生的誤差進(jìn)行分析,由于AlexNet層數(shù)較多,圖13 僅展示Conv1 第一個(gè)特征圖和最后一個(gè)全連接層Fc8的輸出情況。

        圖13 Conv1和Fc8的輸出

        從圖3可定性得出,真實(shí)數(shù)據(jù)(caffe浮點(diǎn)數(shù)輸出)和仿真數(shù)據(jù)(modelsim10.c定點(diǎn)數(shù)輸出)的分布基本一致,將仿真數(shù)據(jù)減去真實(shí)數(shù)據(jù)可得誤差值的分布情況,如圖14所示。

        圖14 Conv1和Fc8的誤差分布

        定義公式(17)對(duì)誤差定量分析:

        sim、real分別表示各層特征圖像素的仿真和真實(shí)數(shù)據(jù)值,可得Conv1第一個(gè)特征圖和Fc8輸出的誤差分別為0.001 101、0.002 413。仿真數(shù)據(jù)與真實(shí)數(shù)據(jù)的差值很小,誤差影響可忽略。同理,介于Conv1 與Fc8 之間的隱藏層情況類似,網(wǎng)絡(luò)整體的平均量化誤差為0.003 2,說明上述的量化策略可取。

        動(dòng)態(tài)4-8-16位量化策略可有效減少存儲(chǔ)需求:

        (1)片外DRAM 用于存儲(chǔ)源圖像、AlexNet 權(quán)重和推理結(jié)果,表2 顯示,輸入特征圖和網(wǎng)絡(luò)推理結(jié)果量化為16 bit,而卷積層和全連接層權(quán)值分別量化為8 bit和4 bit。AlexNet 一共有60 965 224 個(gè)可訓(xùn)練參數(shù),輸入為標(biāo)準(zhǔn)227×227×3彩圖,輸出是1 000個(gè)分類概率,當(dāng)采用4-8-16 量化策略后,加速器對(duì)片外存儲(chǔ)空間需求從244 483 244 Byte(233.2 MB)下降到31 960 826 Byte(30.5 MB),節(jié)省87%的DRAM存儲(chǔ)。

        (2)片上RAM/ROM 用于保存推理運(yùn)行中的權(quán)重、中間結(jié)果和各層輸入輸出特征圖,本加速器采用層并行模式下的細(xì)膩度流水線架構(gòu),乒乓緩存數(shù)據(jù)傳輸,僅需獲得上層輸出的部分分塊數(shù)據(jù)和部分權(quán)重即可開啟本層運(yùn)算,對(duì)片上內(nèi)存需求大大減少。圖15 比較了本文片上內(nèi)存管理方法與傳統(tǒng)設(shè)計(jì)(特征圖和權(quán)重完全保存)對(duì)BRAM需求的差異。

        圖15 本文方法與傳統(tǒng)設(shè)計(jì)的內(nèi)存需求比較

        從圖15 可知,本加速器部署前8 個(gè)卷積和池化層,使用394個(gè)BRAM,而傳統(tǒng)的將特征圖和核權(quán)重全部存儲(chǔ)在片上的方法,使用1 915 個(gè)BRAM。傳統(tǒng)設(shè)計(jì)比本文方法最低多消耗1.34倍存儲(chǔ)資源(pool5),最高為6.21倍(conv4)。最后3個(gè)全連接層占據(jù)了96%的權(quán)重,傳統(tǒng)設(shè)計(jì)方法無法一次性將其保存至片上,故本文未對(duì)其加以分析,而在細(xì)膩度流水線架構(gòu)和輸入輸出緩存池技術(shù)下,本方法在Fc6、Fc7、Fc8 層分別僅消耗166、68、43 個(gè)BRAM,至少會(huì)節(jié)省80%存儲(chǔ)資源。

        進(jìn)一步地,探究了在本文內(nèi)存管理方法下,數(shù)據(jù)有無進(jìn)行動(dòng)態(tài)4-8-16位精度量化對(duì)內(nèi)存需求的變化,如圖16所示。

        圖16 兩種量化方案對(duì)內(nèi)存需求的差異

        在32位浮點(diǎn)情況下,AlexNet加速器需要占用2 552個(gè)BRAM,是4-8-16位量化的3.81倍。注意到,3個(gè)全連接層Fc6、Fc7、Fc8 的壓縮比率較高,分別為5.35、5.49、3.81 倍,主要原因是全連接層存在大量冗余連接,權(quán)值接近0,采用較激進(jìn)的4 bit量化可在不降低推理準(zhǔn)確度的前提下減少片上存儲(chǔ)壓力。

        3.3 與基于CPU/GPU/FPGA的CNN加速器比較

        Zhang等人[9]在Intel Xeon CPUE5-2430上運(yùn)行AlexNet模型中,開啟多線程執(zhí)行,在103.48 ms 內(nèi)完成正向傳播,達(dá)到12.84 Gops的峰值性能。從Nvidia官方文檔可知,采用16 位浮點(diǎn),批尺寸為2,AlexNet 模型在GPUTX2[16]上的幀率為250 frame/s。圖17比較了CPU、GPU與FPGA在計(jì)算性能上的差異。本文設(shè)計(jì)的AlexNet加速器在FPGA 上的計(jì)算性能分別是CPU 和GPU 上的115.8 倍和4.1 倍,一方面是因?yàn)镕PGA 更適合計(jì)算密集型任務(wù),另一方面是本加速器更充分挖掘了CNN 可并行計(jì)算的空間和進(jìn)行了有效內(nèi)存管理。

        圖17 CPU、GPU與FPGA之間的性能比較

        此外,本文將Virtex7 690t上的加速器實(shí)驗(yàn)結(jié)果與3個(gè)最近的具有分類功能的基于FPGA 的CNN 加速器進(jìn)行比較,如表3 所示。在Virtex7 690t 上達(dá)到的峰值性能為1 493.4 Gops,比其他3個(gè)參考結(jié)果都要高,最低為4.2 倍,最高達(dá)到24.2 倍。由于不同的實(shí)驗(yàn)利用不用規(guī)所格示的。FPGA 平臺(tái),所使用的CNN 模型和時(shí)鐘頻率也不一樣,為了能公正客觀衡量各個(gè)設(shè)計(jì)方法的優(yōu)劣,下表進(jìn)一步列出了DSP效率,其用來評(píng)估每一個(gè)參與運(yùn)算的DSP利用的充分程度。

        表3 與基于FPGA的CNN加速器的比較

        在Virtex7 690t 平臺(tái),本文設(shè)計(jì)方法的DSP 效率均比其他文獻(xiàn)中采用的方法要高,分別是他們的1.7 倍、2.6 倍和1.2 倍。說明本加速器采用的方法能提高硬件資源利用率和數(shù)據(jù)重用機(jī)會(huì),充分挖掘了FPGA并行計(jì)算能力。

        4 結(jié)論

        本文提出一個(gè)針對(duì)卷積神經(jīng)網(wǎng)絡(luò)加速的CNN加速框架,生成的加速器可實(shí)現(xiàn)高性能和高效率。為了提高計(jì)算吞吐量,采用基于設(shè)計(jì)空間探索的方法確定卷積分塊因子,并將分塊進(jìn)行展開,從而提高計(jì)算并行性。該方法可增大CTC 率,減少外部存儲(chǔ)訪問帶寬需求,提高數(shù)據(jù)復(fù)用程度。對(duì)整個(gè)網(wǎng)絡(luò)采用細(xì)粒度流水線架構(gòu),考慮到有限的片上內(nèi)存容量,用內(nèi)存池、乒乓緩存和4-8-16位精度量化策略進(jìn)行數(shù)據(jù)傳輸,以減少啟動(dòng)和輸出延時(shí)?;谏鲜龅脑O(shè)計(jì)方法,與其他基于CPU/GPU/FPGA的方法相比,本文達(dá)到了最高吞吐性能峰值1 493.4 Gops,DSP效率超過了其他設(shè)計(jì)方法,本文加速器高效且性能優(yōu)異。

        猜你喜歡
        方法
        中醫(yī)特有的急救方法
        中老年保健(2021年9期)2021-08-24 03:52:04
        高中數(shù)學(xué)教學(xué)改革的方法
        化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
        變快的方法
        兒童繪本(2020年5期)2020-04-07 17:46:30
        學(xué)習(xí)方法
        可能是方法不對(duì)
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        最有效的簡(jiǎn)單方法
        山東青年(2016年1期)2016-02-28 14:25:23
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        香蕉视频一级| 欧美丰满熟妇性xxxx| 天天躁日日躁狠狠很躁| 国产在视频线精品视频www666| 亚洲国产精品免费一区| 国产成人综合精品一区二区| 偷国产乱人伦偷精品视频| 日日摸夜夜添无码无码av| 国产啪精品视频网站免| 激情五月天色婷婷久久| 韩国三级大全久久网站| 青青青国产精品一区二区| 国产精品女丝袜白丝袜| 成av人大片免费看的网站 | 亚洲av无码成人网站在线观看| 久久亚洲sm情趣捆绑调教| 人妖熟女少妇人妖少妇| 六月婷婷亚洲性色av蜜桃| 国产av旡码专区亚洲av苍井空| 国产精品二区在线观看| 国产一区二区三区四区色| 久草视频在线手机免费看| 亚洲av福利无码无一区二区| 狠狠躁夜夜躁人人爽天天| 国产三级在线观看不卡| 日本三级片在线观看| 中文字幕有码无码av| 一区二区三区国产高潮| 男人天堂亚洲天堂av| 欧美人与动牲交a精品| 一级片麻豆| 日本中文字幕官网亚洲| 国产精品 无码专区| 国语对白做受xxxxx在线中国| 中文字幕乱码av在线| 91色老久久偷偷精品蜜臀懂色| 日韩毛片免费无码无毒视频观看| 91精品全国免费观看青青| 亚洲av手机在线观看| 欧美激情一区二区三区 | 91精品国产91久久久无码色戒|