0
本文作者: AI研習(xí)社 | 2019-07-17 14:51 |
雷鋒網(wǎng)AI研習(xí)社按:DAC19目標(biāo)檢測(cè)設(shè)計(jì)是一個(gè)面向移動(dòng)端的單目標(biāo)物體檢測(cè)的比賽,檢測(cè)精度高且能耗低者勝出。我們團(tuán)隊(duì)設(shè)計(jì)了單目標(biāo)檢測(cè)的深度學(xué)習(xí)算法ShuffleDet,和面向Xilinx ZU3的AI硬件加速器,獲得了FPGA賽道的第二名。本次分享主要介紹我們團(tuán)隊(duì)的設(shè)計(jì)方案。
分享嘉賓:趙文哲,西安交通大學(xué)人工智能與機(jī)器人研究所研究員,倫斯勒理工學(xué)院訪問(wèn)學(xué)者,主要研究方向?yàn)橛?jì)算機(jī)體系結(jié)構(gòu),糾錯(cuò)碼設(shè)計(jì),以及企業(yè)級(jí)存儲(chǔ)方案設(shè)計(jì)。
公開(kāi)課鏈接:http://www.mooc.ai/open/course/674?=from%20leifeng0717
分享主題:HiPU設(shè)計(jì)簡(jiǎn)介--DAC19目標(biāo)檢測(cè)設(shè)計(jì)競(jìng)賽FPGA賽道亞軍方案介紹
分享提綱:
DAC19比賽背景介紹;
算法選擇及訓(xùn)練介紹;
一種通用目的的AI加速器設(shè)計(jì)簡(jiǎn)介;
性能分析與結(jié)論。
雷鋒網(wǎng)AI研習(xí)社將其分享內(nèi)容整理如下:
大家好,我們來(lái)自于西安交通大學(xué)人工智能研究所。在今年DAC會(huì)議舉辦的自動(dòng)化系統(tǒng)設(shè)計(jì)大賽上獲得了亞軍,今天主要介紹一下我們的設(shè)計(jì)方案。我負(fù)責(zé)這個(gè)方案的算法部分,算法部分主要進(jìn)行了目標(biāo)檢測(cè)遞層框架的搭建、神經(jīng)網(wǎng)絡(luò)算法的壓縮,后面主要由趙老師講一下硬件架構(gòu)的設(shè)計(jì)。
這個(gè)是由英偉達(dá)、大疆他們共同組建的一個(gè)比賽,數(shù)據(jù)集由大疆提供——基于大疆無(wú)人機(jī)拍攝出的目標(biāo)檢測(cè)的數(shù)據(jù)集,比賽從準(zhǔn)確率、速率、網(wǎng)絡(luò)效率等方面綜合考量之后,給參賽隊(duì)伍一個(gè)相應(yīng)的分?jǐn)?shù),以上這些是關(guān)于比賽的大概介紹。
在比賽中,算法方面主要是兩個(gè)工作,第一個(gè)是神經(jīng)網(wǎng)絡(luò)的選取,這個(gè)工作需要在一非常小的BP上配置神經(jīng)網(wǎng)絡(luò),所以首選儲(chǔ)存空間小、效率高的這種來(lái)作為特征提取的基本網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)訓(xùn)練過(guò)程中,主要進(jìn)行了兩個(gè)部分的優(yōu)化,首先是將神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,第二個(gè)優(yōu)化是針對(duì)硬件優(yōu)化的,將ShuffleNet V2變成8的倍數(shù),方便后面進(jìn)行配置。
算法方面的第二個(gè)工作主要是介紹網(wǎng)絡(luò)的量化,網(wǎng)絡(luò)的量化也分為兩個(gè)主要的部分,首先是將一些特殊的層進(jìn)行融合,如圖示左邊部分。其次是8bit的量化過(guò)程,如圖示右邊部分。
下面介紹一下量化過(guò)程中的一些關(guān)鍵點(diǎn),第一個(gè)點(diǎn)就是神經(jīng)網(wǎng)絡(luò)越小,量化難度越高,來(lái)看一下下圖所示右邊部分,是當(dāng)時(shí)我們?yōu)榱蓑?yàn)證這個(gè)說(shuō)法做的一個(gè)實(shí)驗(yàn)。第二個(gè)點(diǎn)就是上一頁(yè)的cabs函數(shù),這個(gè)函數(shù)主要是保護(hù)權(quán)重和輸出在要求的范圍內(nèi)不產(chǎn)生溢出,最好是先讓網(wǎng)絡(luò)訓(xùn)練一段時(shí)間,在權(quán)重和輸出都比較穩(wěn)定的時(shí)候再把函數(shù)加入進(jìn)去。第三個(gè)點(diǎn)就是ratio_a,指的是輸出值,這個(gè)值的統(tǒng)計(jì)是一個(gè)非常精細(xì)的過(guò)程。第四個(gè)需要注意的點(diǎn)就是,在完成離線的量化工作之后,在實(shí)際操作中,需要跳過(guò)round函數(shù)的梯度。
關(guān)于量化這個(gè)領(lǐng)域,建議大家讀一下以下這些論文,如下圖。
我這部分講完了,接下來(lái)是趙老師來(lái)介紹。
在我們的網(wǎng)絡(luò)和參數(shù)訓(xùn)練完成之后,就需要設(shè)計(jì)一套硬件加速處理器,以便讓神經(jīng)網(wǎng)絡(luò)能夠高效的運(yùn)行。為了實(shí)現(xiàn)上述目標(biāo),我們?cè)O(shè)計(jì)了一個(gè)通用的,可以支持幾乎所有網(wǎng)絡(luò)的加速器,將它命名為HiPU。這個(gè)加速器主要包括這樣幾個(gè)模塊,首先是一般的控制模塊,除此之外有矩陣運(yùn)算和矢量運(yùn)算。在HiPU里面,主要是處理卷積、Depth-wise卷積、padding、pooling、跟channel相關(guān)的shuffle操作以及concat操作。
先看一下幾個(gè)基本操作,如下圖右側(cè)所示,是HiPU的基本結(jié)構(gòu)圖。
接下來(lái)看一下計(jì)算過(guò)程,以卷積為例,當(dāng)數(shù)據(jù)已經(jīng)放在MRa、MRb中之后,通過(guò)計(jì)算器發(fā)出開(kāi)始卷積的命令,然后conv_ctrl模塊會(huì)把一個(gè)卷積拆解成很多矩陣運(yùn)算和矢量運(yùn)算的指令,MPU和VPU內(nèi)部會(huì)把數(shù)據(jù)讀上來(lái),計(jì)算完之后再送到VPU做一次運(yùn)算的結(jié)尾部分,算完之后再寫(xiě)回到MRa之中,流程大概就是這樣。DW卷積也是類(lèi)似,如圖所示。
接下來(lái)看一下相關(guān)的幾個(gè)優(yōu)化,首先我們并不是算完一層就立刻返回,以module_c為例,先做一個(gè)切分,把前一半的數(shù)據(jù)直接傳到后面,后一半的數(shù)據(jù)分別經(jīng)過(guò)1x1的卷積,然后經(jīng)過(guò)3x3的卷積,再經(jīng)過(guò)1x1的卷積,和之前的數(shù)據(jù)做一個(gè)shuffle之后輸出。在這個(gè)過(guò)程中,并不是說(shuō)做一個(gè)卷積就算完了就立刻輸出。繼續(xù)講第二個(gè)優(yōu)化,在此之前說(shuō)一下我們這種做法的問(wèn)題,問(wèn)題是一次需要讀入8個(gè)輸入channel的數(shù)據(jù),但是輸入層只有RGB三個(gè)通路,如果要處理這樣的數(shù)據(jù),就必須要補(bǔ)上5個(gè)channel的0,計(jì)算效率也就只有八分之三。針對(duì)這個(gè)問(wèn)題,如果第一層卷積是3x3的,可以考慮做這樣一個(gè)變換,把相關(guān)的數(shù)據(jù)排列過(guò)來(lái),如下圖,這樣的做法可以讓卷積效率提高很多。
除此之外我們?cè)倏匆幌伦鳛橄到y(tǒng)的優(yōu)化,系統(tǒng)分為PS側(cè)和PL側(cè),大部分卷積運(yùn)算都是放在PL側(cè)進(jìn)行的,最后一層的輸出是放在PS側(cè)來(lái)做的。在PL側(cè)做大量卷積運(yùn)算的時(shí)候,PS側(cè)是空閑著的,但是現(xiàn)在在做當(dāng)前圖的卷積運(yùn)算的時(shí)候,PS側(cè)會(huì)進(jìn)行下一張圖的預(yù)讀取,通過(guò)這種方式可以顯著地減少讀圖所消耗的時(shí)間。除此之外是對(duì)計(jì)算Calc bbox的優(yōu)化,通過(guò)外擴(kuò)C函數(shù),把計(jì)算時(shí)間從2毫秒降到0.6毫秒,而且,讀圖像的時(shí)間也可以減少。最后還有一個(gè)問(wèn)題,之前使用的SD卡并不是最好的SD卡,會(huì)出現(xiàn)這種PS側(cè)一直在讀圖,但是PL側(cè)已經(jīng)算完了的尷尬情況,于是增加了一個(gè)門(mén)控時(shí)鐘來(lái)降低功耗。
接下來(lái)是HiPU的一個(gè)總結(jié)。我們的HiPU可以在單倍頻和雙倍頻模式下工作在233MHz,峰值算力為268Gops。資源占比中,LUT站到62%左右,還有繼續(xù)提升的空間。編程API為C以及RISC-V風(fēng)格的匯編。支持的主要操作如下圖所示:
下圖是HiPU在不同的配置環(huán)境下執(zhí)行這次比賽的任務(wù)的性能分析:
介紹一下我們的Roadmap,如圖所示:
最后請(qǐng)欣賞我們?cè)O(shè)計(jì)的2個(gè)Demo:
今天的介紹主要就是這些,謝謝大家。
以上就是本期嘉賓的全部分享內(nèi)容。更多公開(kāi)課視頻請(qǐng)到雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng)) AI 研習(xí)社社區(qū)http://ai.yanxishe.com/觀看。關(guān)注微信公眾號(hào):AI 研習(xí)社(okweiwu),可獲取最新公開(kāi)課直播時(shí)間預(yù)告。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。