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

        ?

        一種基于FPGA的CNN加速器設(shè)計*

        2019-06-10 07:01:14喬廬峰陳慶華
        通信技術(shù) 2019年5期
        關(guān)鍵詞:特征值運算卷積

        趙 彤,喬廬峰,陳慶華

        (陸軍工程大學(xué) 通信工程學(xué)院,江蘇 南京 210007)

        0 引 言

        隨著硬件GPU的快速發(fā)展和大數(shù)據(jù)時代的來臨,深度學(xué)習(xí)迅猛發(fā)展,已席卷人工智能各個領(lǐng)域,包括語音識別、圖像識別、視頻跟蹤、自然語音處理等在內(nèi)的圖、文、視頻領(lǐng)域。深度學(xué)習(xí)技術(shù)突破了傳統(tǒng)技術(shù)方法,大大提高了各領(lǐng)域的識別性能。應(yīng)用深度學(xué)習(xí)技術(shù)到智能化移動嵌入式軍事設(shè)備,將成為新一代深度學(xué)習(xí)的發(fā)展浪潮。

        伴隨著深度網(wǎng)絡(luò)模型的性能增加,模型的深度越來越深,深度網(wǎng)絡(luò)模型的高計算量和高存儲弊端,嚴(yán)重制約著資源有限的應(yīng)用環(huán)境,特別是智能化移動嵌入式設(shè)備。例如,8層的AlexNet[1]裝有600 000個網(wǎng)絡(luò)節(jié)點,6.1×107個網(wǎng)絡(luò)參數(shù),需要花費240 MB的內(nèi)存存儲、7.29×108次浮點型運算 次 數(shù)(The Number of Floating-point Operation,F(xiàn)LOP)來分類一副分辨率為224×224的彩色圖像。隨著模型深度的加深,存儲和計算開銷增加。同樣分類一副分辨率為224×224的彩色圖像,16層的VGGNet[2]裝有1 500 000個網(wǎng)絡(luò)節(jié)點,1.44×108個網(wǎng)絡(luò)參數(shù),需要花費528 MB的內(nèi)存存儲、1.5×1010次FLOP。

        目前,對深度神經(jīng)網(wǎng)絡(luò)的實現(xiàn)多是基于通用計算機(jī),不僅計算機(jī)體積大,還會因計算機(jī)的輸入輸出接口速度限制了整體速度,更限制了應(yīng)用的廣度與深度。另外,深度神經(jīng)網(wǎng)絡(luò)的設(shè)計者或使用者必須要對網(wǎng)絡(luò)的工作軟硬件環(huán)境有相當(dāng)了解,才能將其應(yīng)用在實際系統(tǒng)上,更限制了深度神經(jīng)網(wǎng)絡(luò)的發(fā)展。因此,若能適當(dāng)采用現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)芯片的形式實現(xiàn)控制器,不僅可以大大縮小硬件體積,而且具有執(zhí)行速度快、靈活度高的優(yōu)點。目前,雖然已有一些研究[3-6]將神經(jīng)網(wǎng)絡(luò)控制器實現(xiàn)在FPGA芯片上,但將深度神經(jīng)網(wǎng)絡(luò)的方法實現(xiàn)在FPGA芯片上的研究越來越受到重視,并展現(xiàn)出很有希望的前景。已有研究發(fā)現(xiàn),使用FPGA實現(xiàn)后硬件在執(zhí)行速度上可將原本限制于普通計算機(jī)I/O的毫秒等級速度提高到微秒等級的快速輸出,高處理速度將可使深度神經(jīng)網(wǎng)絡(luò)應(yīng)用在更多需要快速反應(yīng)的應(yīng)用上。深度神經(jīng)網(wǎng)絡(luò)會因FPGA硬件體積較小和功耗較低提高使用者的興趣,尤其在學(xué)習(xí)精準(zhǔn)度上沒有因為硬件化而有太大差異。此外,由于FPGA的可重復(fù)編程性,可以方便地實現(xiàn)算法更新和目標(biāo)重定義。

        1 CNN加速器的基本架構(gòu)

        由于目前神經(jīng)網(wǎng)絡(luò)的規(guī)模越來越大,層數(shù)也越來越深,而受限于FPGA上的存儲資源,必須借助外部存儲芯片,才能完成整個網(wǎng)絡(luò)的運行。因此,本設(shè)計采用將外部DDR存儲芯片與運算FPGA相結(jié)合的方式,架構(gòu)如圖1所示。由圖1可以看出,整個硬件平臺的架構(gòu)由運算FPGA芯片和存儲芯片DDR組成,F(xiàn)PGA內(nèi)部由總控和運算單元(PE)組成。

        圖1 CNN加速器的基本架構(gòu)

        1.1 總控模塊

        總控主要負(fù)責(zé)對輸入的特征圖、網(wǎng)絡(luò)的權(quán)重以及產(chǎn)生的中間結(jié)果進(jìn)行管理,并負(fù)責(zé)各PE與外部DDR之間的通信和數(shù)據(jù)轉(zhuǎn)換,結(jié)構(gòu)如圖2所示。

        總控模塊包含DDR控制器、數(shù)據(jù)接口、數(shù)據(jù)解析/打包模塊以及存儲中間結(jié)果的FIFO。

        DDR控制器用與FPGA與外部DDR之間的通信,包含運行DDR接口協(xié)議的IP核。在滿足一個突發(fā)的條件后,它將FPGA內(nèi)部的數(shù)據(jù)傳輸?shù)紻DR或者將DDR里的數(shù)據(jù)傳輸?shù)紽PGA。其余部分按數(shù)據(jù)流向可以分成兩部分。

        第一部分,數(shù)據(jù)流從DDR到FPGA。在FPGA模塊開始運行后,先將一部分特征值與網(wǎng)絡(luò)權(quán)重值預(yù)先存儲在FPGA內(nèi)部。待整個系統(tǒng)運行起來后,在需要數(shù)據(jù)參與運算時,通過DDR控制器發(fā)送讀取命令給DDR(包括讀取的bank號,讀取的行列號以及突發(fā)的長度)。DDR接收到命令后,將相應(yīng)的數(shù)據(jù)以突發(fā)方式傳輸?shù)紽PGA中。由于DDR傳輸來的數(shù)據(jù)含有標(biāo)記信息(包括該數(shù)據(jù)的特征圖編號、行列號等),所以FPGA在接收到數(shù)據(jù)后,要先通過數(shù)據(jù)解析模塊解析數(shù)據(jù),再存儲到相應(yīng)的FIFO中,以便PE讀取。

        圖2 總控模塊的結(jié)構(gòu)

        第二部分,當(dāng)卷積運算完成后,產(chǎn)生的中間結(jié)果要從FPGA內(nèi)部傳輸?shù)紻DR。這時數(shù)據(jù)流從PE中出來,先經(jīng)過數(shù)據(jù)打包模塊為每個數(shù)據(jù)打上相應(yīng)的標(biāo)簽,包括該數(shù)據(jù)的層號、特征圖的編號以及行列號等信息,而后打包完的數(shù)據(jù)發(fā)送到輸出FIFO進(jìn)行緩存,等到滿足一個突發(fā)條件后,該突發(fā)數(shù)據(jù)經(jīng)由DDR控制器發(fā)送到外部DDR進(jìn)行存儲。

        1.2 數(shù)據(jù)處理單元(PE)

        對于目前最常見的網(wǎng)絡(luò),最多是3×3和5×5卷積核。所以,對于PE架構(gòu),有以下兩種設(shè)計:圖3(a)是卷積核為3×3時的PE結(jié)構(gòu),圖3(b)是卷積核為5×5時的PE結(jié)構(gòu)。PE中主要由存儲陣列控制器、RAM陣列和乘加操作運算矩陣構(gòu)成。存儲陣列控制器負(fù)責(zé)對RAM陣列中的數(shù)據(jù)進(jìn)行管理,控制行列號的轉(zhuǎn)換和RAM陣列讀寫操作的控制;RAM矩陣存儲相應(yīng)的特征值和權(quán)重;乘加操作運算矩陣負(fù)責(zé)對輸出的特征值與權(quán)重進(jìn)行計算,以得到最終結(jié)果。本設(shè)計針對卷積核的不同設(shè)計不同的PE,目的是針對不同網(wǎng)絡(luò)的結(jié)構(gòu)特性調(diào)整整個設(shè)計中PE的分布,從而使性能達(dá)到最優(yōu)。

        圖3 數(shù)據(jù)處理單元(PE)的結(jié)構(gòu)

        2 存儲管理

        在硬件中實現(xiàn)多計算資源來加速CNN的推斷過程,存儲帶寬的限制常常是處理CNN的瓶頸[7]。例如,對于卷積層來講,大量的乘加操作必然導(dǎo)致大量的存儲器讀寫。因為每個乘加操作需要至少2個 存儲器讀操作和1個存儲器寫操作,而FPGA內(nèi)部存儲資源的限制,必須要把大部分網(wǎng)絡(luò)參數(shù)和中間結(jié)果存儲在外部DDR上,所以會嚴(yán)重影響吞吐率和能量消耗,甚至比乘加運算本身的能耗還要大。

        2.1 特征值及網(wǎng)絡(luò)權(quán)重的存儲

        針對存儲帶寬的限制問題,本設(shè)計提出一種能降低對外部存儲帶寬需求的方案。具體地,針對目前應(yīng)用最廣泛的3×3卷積核,進(jìn)行以下設(shè)計。對于一張224×224的特征圖,采用如圖4所示方式進(jìn)行存儲。對于一個224×224的特征圖,在整個運算開始前,先將該特征圖的前3行值存儲到3×3的RAM陣列中。在RAM陣列中,每一行RAM只存儲特征圖的同一行值。這樣存儲便可在一拍就得到卷積結(jié)果,而不需要額外的操作。

        對于CNN的參數(shù),采用如圖5所示的格式進(jìn)行存儲??梢钥吹?,該層網(wǎng)絡(luò)共有32個3×3的卷積核。本設(shè)計將這些卷積核存儲到一個3×3的RAM陣列中,3×3卷積核中的每個權(quán)重值分別存儲到不同的RAM中。這樣權(quán)重值與特征值相對應(yīng),可以在一拍內(nèi)得出計算結(jié)果。

        圖4 特征值的存儲示意

        圖5 權(quán)重的存儲示意

        對于當(dāng)前存儲在RAM陣列中的特征圖和權(quán)重,計算完成后會得到分屬于32個不同特征圖的結(jié)果,這樣需要用FIFO進(jìn)行緩存,而后經(jīng)過一次DMA突發(fā),將屬于同一個特征圖的特征值送到外部DDR,以最大限度的節(jié)省帶寬。

        2.2 存儲管理模塊的設(shè)計

        存儲管理模塊的設(shè)計流程如圖6所示。

        由圖6可以看出,本設(shè)計運算開始后,先固定一個權(quán)重值,而后遍歷特征圖,以使得該部分的輸出屬于同一個特征圖,方便對其進(jìn)行存儲。在當(dāng)前存儲權(quán)重的RAM陣列運行到最后一個值時,更新存儲特征圖的RAM陣列,以保證流水的不中斷,也使設(shè)計的并行化達(dá)到最大。

        對于每一組ram來講,每一行的3個ram存儲同一行的特征值,即需要預(yù)先將特征圖的3整行分別存儲到片內(nèi),而后從第四行進(jìn)行更新。在對同一行進(jìn)行卷積操作時,只有列號進(jìn)行變化,而行號保持不變。只有在整列結(jié)束,所有的值都更新完畢后,再進(jìn)行行號的變化。

        當(dāng)存儲在RAM陣列中的權(quán)重值運行到最后一個時,開始進(jìn)行特征圖的更新,在此之前會將一整行特征圖以DMA突發(fā)的方式傳輸?shù)狡瑑?nèi)FIFO中進(jìn)行存儲,再從FIFO中一次取出一個特征值更新RAM陣列中的特征值,具體過程如圖7所示。

        由圖7可以看出,在更新完特征值后,RAM陣列中的列號要進(jìn)行變化,且更新過的RAM中的讀指針要加1,以方便對RAM陣列操作,即對于外部接口來講,每次只需要對列號為0、1、2的RAM進(jìn)行操作,便可以讀取相應(yīng)的操作數(shù)。

        當(dāng)一整行特征值更新完畢后,要進(jìn)行行號的轉(zhuǎn)換,具體過程如圖8所示。

        由圖8可以看出,一行特征值的最后一個更新完畢后,相應(yīng)的RAM陣列的行號也發(fā)生變化,從而為下一次操作做準(zhǔn)備。對于外部接口來講,每次只需要對行號為0、1、2的RAM進(jìn)行操作,便可以讀取相應(yīng)的操作數(shù)。

        特征值的行列號與權(quán)重值的對應(yīng)關(guān)系,如表1 所示。特征值與權(quán)重的對應(yīng)關(guān)系是固定的,所以每次運算的操作數(shù)均嚴(yán)格按照卷積神經(jīng)網(wǎng)絡(luò)的運算規(guī)則,不會出現(xiàn)位置的不匹配而導(dǎo)致錯誤的 結(jié)果。

        圖6 存儲管理模塊的流程

        圖7 RAM陣列更新時的列號變化

        圖8 RAM陣列更新時的行號變化

        表1 特征值的行列號與權(quán)重值的對應(yīng)關(guān)系

        3 卷積算法優(yōu)化

        對于stride=1的3×3卷積,采用Winograd算法[8]來加速整個計算。Winograd算法的基本原理即用加法運算代替乘法運算,以減少運算量。例如,本設(shè)計中采用F(2×2,3×3),共需4×4=16次乘法運算,而標(biāo)準(zhǔn)的算法則需2×2×3×3=36次乘法。

        對于F(2×2,3×3),其輸出為:

        其中,

        式(2)中剩余的參數(shù)g為3×3的濾波器,d為4×4的特征值矩陣。每一個特征圖被分割成了4×4的子特征矩陣,相鄰的兩個子特征矩陣之間有2個特征值的重疊。

        針對Winograd算法的特性,可以令U=GgGT,V=BTdB,則式(2)變成:

        本設(shè)計在運算開始前,可以將卷積核與特征值提前進(jìn)行轉(zhuǎn)換,而后直接在FPGA內(nèi)部進(jìn)行運算,以減少大量的重復(fù)性工作。

        4 結(jié)果分析

        本設(shè)計是在Xilinx Virtex7 xc7vx690t平臺上執(zhí)行的,采用流水結(jié)構(gòu),將每層單獨設(shè)計,而后統(tǒng)一控制,提升了速度。在流水線設(shè)計中,每一層的運算量要保持大體相等,否則會產(chǎn)生流水線的瓶頸,從而降低整個流水線效率。

        本設(shè)計以Alexnet為例,對提出的相關(guān)算法進(jìn)行實現(xiàn),并與其他的FPGA實現(xiàn)方式進(jìn)行對比,得到的結(jié)果如表2所示。可以看出,采用本方案提出的存儲管理和運行框架,可以達(dá)到較高的性能,且在表格所列舉的5個設(shè)計方案中,本設(shè)計的能耗性能比最高。

        此外,將該FPGA平臺的實驗結(jié)果與GPU的實現(xiàn)結(jié)果進(jìn)行對比,結(jié)果如表2所示。

        本設(shè)計采用NVIDIA TitanX的GPU,在Caffe框架[13]下對Alexnet進(jìn)行實現(xiàn)。在GPU的實現(xiàn)中,采用Winograd算法對設(shè)計進(jìn)行加速,得到的結(jié)果如表3所示。可以看出,在實現(xiàn)相同的網(wǎng)絡(luò)時,雖然GPU的性能要高于本設(shè)計,但是本設(shè)計能耗性能比是GPU的2.7倍。

        表2 不同平臺實現(xiàn)Alexnet的性能對比

        表3 本設(shè)計與GPU的性能對比

        5 結(jié) 語

        本文對基于CNN的FPGA硬件平臺進(jìn)行研究,設(shè)計了一種高效的硬件平臺架構(gòu),提出了一種能夠有效降低存儲帶寬的存儲管理方案。在此基礎(chǔ)上,采用Winograd算法降低運算量,并對卷積核為3×3和5×5的處理模塊分別進(jìn)行設(shè)計,使得該硬件平臺能夠更加高效加速CNN。本設(shè)計在Virtex7 xc7vx690t上實現(xiàn)了Alexnet,性能為1.31 TFlop/s,平均性能功耗比為45.7 GOP/s/W,結(jié)果優(yōu)于目前較流行的集中設(shè)計方案。

        猜你喜歡
        特征值運算卷積
        重視運算與推理,解決數(shù)列求和題
        一類帶強(qiáng)制位勢的p-Laplace特征值問題
        基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
        單圈圖關(guān)聯(lián)矩陣的特征值
        有趣的運算
        從濾波器理解卷積
        電子制作(2019年11期)2019-07-04 00:34:38
        基于傅里葉域卷積表示的目標(biāo)跟蹤算法
        “整式的乘法與因式分解”知識歸納
        撥云去“誤”學(xué)乘除運算
        基于商奇異值分解的一類二次特征值反問題
        国产精品刮毛| 欧美一级欧美一级在线播放| 国产激情视频在线观看首页| 一本色道久久88综合亚洲精品| 中文片内射在线视频播放| 国产三区二区一区久久| 无遮挡很爽很污很黄的女同| 成人欧美一区二区三区| 欧美日韩电影一区| 少妇被搞高潮在线免费观看 | 精品亚洲欧美高清不卡高清| 精品久久人妻一区二区| 神马影院午夜dy888| 天躁夜夜躁狼狠躁| 精品无码成人片一区二区 | 亚洲天堂av三区四区不卡| 天堂aⅴ无码一区二区三区| 国产哟交泬泬视频在线播放| 日韩亚洲在线一区二区| 日韩人妻系列在线观看| 少妇高潮太爽了在线视频| 女人色毛片女人色毛片18| 国产精品久久久久久久y| 亚洲中文字幕乱码一二三| 精品伊人久久大香线蕉综合| 亚洲丁香婷婷综合久久小说| 国产一区二区a毛片色欲| 日本美女性亚洲精品黄色| 狠狠色噜噜狠狠狠狠97首创麻豆| 又污又爽又黄的网站| 中文字幕第一页亚洲观看| 国产91精品清纯白嫩| 97丨九色丨国产人妻熟女| 亚洲日韩国产一区二区三区在线| 欧美国产日产一区二区| 亚洲一区二区观看网站| 国产一区二区三区仙踪林| 亚洲熟女乱色综合亚洲图片| 国产精品av在线一区二区三区| 大陆成人精品自拍视频在线观看| 国产高清在线观看av片|