如果說(shuō)上期SkrSkr隊(duì)伍的設(shè)計(jì)像是德智體美勞全面發(fā)展的“五好學(xué)生”,那么冠軍隊(duì)伍的設(shè)計(jì)則更像是“不偏科的特長(zhǎng)生”。
作品跳出前兩屆Top3隊(duì)伍的設(shè)計(jì)思路,充分結(jié)合FPGA數(shù)據(jù)流架構(gòu)的優(yōu)勢(shì),逐步優(yōu)化設(shè)計(jì),最終在幀率上達(dá)到212fps,首次參賽一舉奪魁。
作品全HLS設(shè)計(jì),采用PYNQ框架,其提高幀率的優(yōu)化流程在其他HLS設(shè)計(jì)中亦值得借鑒。
01
從2018年設(shè)立DAC-SDC開始,每年都會(huì)吸引全球百支知名研究團(tuán)隊(duì)參與角逐,與計(jì)算機(jī)視覺類的國(guó)際知名目標(biāo)檢測(cè)比賽不同,DAC-SDC對(duì)高精度、高效率的追求不僅僅停留在算法層面,其更注重考察基于軟硬件協(xié)同的系統(tǒng)構(gòu)建能力,即參賽設(shè)計(jì)不僅要提高復(fù)雜場(chǎng)景中小物體精準(zhǔn)檢測(cè)的能力,還需要考慮整個(gè)硬件系統(tǒng)在圖像處理速度和功耗方面的要求。而且隨著技術(shù)迭代速度的加快,該賽項(xiàng)的平臺(tái)和要求也在不斷改進(jìn)。2018、2019年該賽項(xiàng)由Nvidia、Xilinx 和 DJI 大疆創(chuàng)新贊助,賽項(xiàng)分為GPU和FPGA兩個(gè)方向。2020年只保留了FPGA方向。從選用平臺(tái)的角度來(lái)對(duì)比,2018年以Zynq7020作為目標(biāo)平臺(tái);2019年選用邏輯資源較多的ZU3作為目標(biāo)平臺(tái),邏輯資源的增加提升了大賽的可發(fā)揮空間。2020年仍延用19年的目標(biāo)平臺(tái)Ultra96。關(guān)于賽事詳情請(qǐng)參考 快訊|中國(guó)團(tuán)隊(duì)包攬頂會(huì)DAC-SDC競(jìng)賽冠亞軍
2018年比賽情況
TX2 GPU和Zynq7020 的對(duì)比結(jié)果顯示,在同等精度條件下FPGA的處理速度較低,但FPGA平臺(tái)所需的功耗僅為GPU平臺(tái)的不到1/4。在2018年的設(shè)計(jì)中,Top3均采用了“自頂向下”的DNN設(shè)計(jì)思路(沿用目標(biāo)檢測(cè)常規(guī)算法),而后再考慮算法在硬件層面的優(yōu)化。其中FPGA組的冠軍來(lái)自清華大學(xué)汪玉教授團(tuán)隊(duì),其采用了深鑒科技的硬件加速器架構(gòu) DPU、全棧式工具鏈 DNNDK 和深度壓縮技術(shù)的基礎(chǔ)上,從算法、軟件和硬件對(duì)整個(gè)目標(biāo)檢測(cè)系統(tǒng)進(jìn)行了全棧式的協(xié)同優(yōu)化。通過(guò)采用硬件友好的 SSD 網(wǎng)絡(luò)和多線程優(yōu)化技術(shù),結(jié)合深度壓縮和定點(diǎn)訓(xùn)練,在保證識(shí)別精度的前提下,滿足了低功耗和實(shí)時(shí)性的要求。
2019年比賽情況
FPGA組升級(jí)到邏輯資源較多的ZU3(Ultra96)平臺(tái)。與2018年相比,在精度和速度方面的表現(xiàn)均有一定的提升。特別值得一提的是,2019年 GPU和FPGA的冠軍來(lái)自同一團(tuán)隊(duì),其由UIUC Deming Chen教授課題組聯(lián)合了 IBM、Inspirit IoT和新加坡 ADSC 的研究人員組成。該網(wǎng)絡(luò)架構(gòu)采用“自底向上”的DNN設(shè)計(jì)思路,以硬件資源限制為約束進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)搜索得到架構(gòu)的優(yōu)化設(shè)計(jì),而后將其部署在目標(biāo)平臺(tái)上。因此,冠軍團(tuán)隊(duì)的工作實(shí)質(zhì)上是同一網(wǎng)絡(luò)架構(gòu)(SkyNet)在不同平臺(tái)的優(yōu)化設(shè)計(jì)實(shí)現(xiàn)。
縱觀前兩年的工作,2018年解決的問(wèn)題主要集中在限定資源條件下如何部署DNN模型;2019年冠軍組的工作則體現(xiàn)了限定資源條件下如何搜索最優(yōu)模型架構(gòu)。上述工作更多考慮的是算法的本身和資源的約束,而沒有充分發(fā)揮FPGA平臺(tái)自身優(yōu)勢(shì)。
02
我們的工作
基本設(shè)計(jì)思路
我們團(tuán)隊(duì)主要從FPGA的架構(gòu)特點(diǎn)入手對(duì)任務(wù)處理進(jìn)行優(yōu)化設(shè)計(jì)。FPGA的優(yōu)勢(shì)在于其靈活、高效地并行化設(shè)計(jì)架構(gòu),適于處理流式、計(jì)算密集型任務(wù),適于不同字節(jié)寬度的調(diào)節(jié)等。針對(duì)本賽項(xiàng)待處理的目標(biāo)檢測(cè)任務(wù)特點(diǎn),我們選用了卷積神經(jīng)網(wǎng)絡(luò)算法,其中包含多層結(jié)構(gòu),需要依次計(jì)算各層,且計(jì)算密集。結(jié)合待處理任務(wù)的特點(diǎn),為了充分發(fā)揮FPGA的優(yōu)勢(shì),我們提出了以下設(shè)計(jì)思路:
l 算法設(shè)計(jì)優(yōu)化:壓縮神經(jīng)網(wǎng)絡(luò)的參數(shù)量,且采用低bit量化技術(shù),使得參數(shù)量較少且每個(gè)參數(shù)所需要的儲(chǔ)存空間減少,從而使所有的參數(shù)能夠置于FPGA片內(nèi)BRAM中,減少加速過(guò)程中參數(shù)頻繁調(diào)入/出帶來(lái)的開銷。
l 硬件設(shè)計(jì)優(yōu)化:基于FPGA資源構(gòu)建高效流水結(jié)構(gòu),將卷積神經(jīng)網(wǎng)絡(luò)中的所有層都置于片上,使得所有層能夠以流水線的形式并行進(jìn)行計(jì)算;設(shè)計(jì)高效的低bit的矩陣計(jì)算單元,在有限資源的約束下最大化并行度。
基于上述設(shè)計(jì)構(gòu)想,數(shù)據(jù)輸入加速器能直接輸出計(jì)算結(jié)果,中間結(jié)果不必搬運(yùn)到外部RAM,減少了不必要的時(shí)延和能耗。低bit計(jì)算減少了單個(gè)計(jì)算單元的資源開銷,從而提高了整體并行度,進(jìn)而提高了整個(gè)神經(jīng)網(wǎng)絡(luò)計(jì)算的速率。
設(shè)計(jì)方案
1、目標(biāo)檢測(cè)算法的設(shè)計(jì)
基于上述基本設(shè)計(jì)思想,我們自行構(gòu)建了適于Ultra96平臺(tái)資源限定條件的網(wǎng)絡(luò)模型。其中主干網(wǎng)絡(luò)選用類VGG架構(gòu),為了降低所需的參數(shù)量和計(jì)算量,我們嚴(yán)格控制了各層濾波器的數(shù)量,后端采用類yolo 架構(gòu)設(shè)計(jì),整個(gè)網(wǎng)絡(luò)模型如下圖2所示。與2019年的第一名相比,我們的算法雖然精度略低,但計(jì)算量和參數(shù)量都有大幅度地降低。
2、網(wǎng)絡(luò)量化設(shè)計(jì)
量化技術(shù)是整個(gè)解決方案中重要的一個(gè)環(huán)節(jié)。我們量化了整個(gè)神經(jīng)網(wǎng)絡(luò),包括權(quán)值量化,激活量化等。量化方法如下:

我們對(duì)所有的權(quán)值(W)和激活后的數(shù)據(jù)進(jìn)行了歸一化處理,使得所有的數(shù)據(jù)在尺度上是統(tǒng)一的。而后將權(quán)值和特征圖數(shù)據(jù)都量化到了4bit,雖然算法精度上有所降低,平均IoU從0.701降低了到0.649,但所需參數(shù)的儲(chǔ)存空間降為原來(lái)的八分之一。我們只需要花費(fèi)0.105 MB片上空間就能將所有參數(shù)置于片上,而Ultra 96 v2板上FPGA芯片中共有0.95 MB BRAM空間。
3、 自定義數(shù)據(jù)流的AI加速器設(shè)計(jì)
根據(jù)待處理任務(wù)特點(diǎn),我們基于目標(biāo)平臺(tái)(Ultra96)資源特點(diǎn),設(shè)計(jì)和實(shí)現(xiàn)一套“硬件函數(shù)庫(kù)”,將pytorch中的CNN算法映射到FPGA中(如下圖5)。其中,我們將pytorch中的卷積計(jì)算(Conv2d_Q)拆分成兩個(gè)部分——滑動(dòng)窗口單元(SWU)和矩陣向量乘單元(MVU),SWU負(fù)責(zé)將卷積計(jì)算展開為矩陣向量計(jì)算,MVU則負(fù)責(zé)接收SWU輸出的數(shù)據(jù)流并計(jì)算。為減少片上存儲(chǔ)空間(緩存)使用量,我們將原CNN算法中的批正則化層(BatchNorm2d)與激活量化層(ReLu_Q)合為一個(gè)模塊Bn_Relu進(jìn)行處理。為了便于構(gòu)建流水處理架構(gòu),原pytorch中采用的四個(gè)層(卷積層、批正則化層、激活量化層和池化層)就變?yōu)槲覀兌x的新四層(SWU層、MVU層、Bn_Relu層和MaxPool層),且每層中的Bn_Relu和MaxPool是可選的(圖中用虛線框標(biāo)出),每層都有獨(dú)立緩存空間存儲(chǔ)對(duì)應(yīng)層參數(shù)。同時(shí),為了提高效率,每層內(nèi)部也最大程度展開為流水形式。
我們將所有層都置于片上,當(dāng)上一層有計(jì)算輸出時(shí),下一層立即開始計(jì)算,各層同時(shí)運(yùn)行。通過(guò)計(jì)算量分配各層所需要的邏輯資源,使得每層的時(shí)延趨向一致,使加速器運(yùn)行效率最大化。
系統(tǒng)框架及優(yōu)化設(shè)計(jì)
基于上述設(shè)計(jì)思想,最終實(shí)現(xiàn)的系統(tǒng)框圖如下。其中,我們采用DMA搬運(yùn)數(shù)據(jù),CPU負(fù)責(zé)任務(wù)調(diào)度工作。為了實(shí)現(xiàn)加速器IP與CPU之間的并行,我們?cè)谕獠縍AM中開辟了兩塊緩沖區(qū)輪流為加速器提供圖片數(shù)據(jù)。
由于計(jì)時(shí)規(guī)則在五月份做出了調(diào)整,將讀入圖片的時(shí)間和功耗也計(jì)入在內(nèi),而我們?cè)谖逶掳嫣峤淮a的速度瓶頸主要卡在讀圖(Load image)時(shí)延。針對(duì)這個(gè)問(wèn)題,我們對(duì)于系統(tǒng)待處理的任務(wù)重新進(jìn)行了更為細(xì)致的優(yōu)化部署。由于待處理任務(wù)分為四個(gè)部分:Load image、Resize image(簡(jiǎn)寫為Resize)、Compute CNN(簡(jiǎn)寫為CNN)、Calculate bounding box(簡(jiǎn)寫為Calc bbox)。我們分別在PS端進(jìn)行多核并行優(yōu)化處理,在PS-PL端進(jìn)行了負(fù)載均衡處理,從而優(yōu)化了任務(wù)在PS和PL端的部署,該過(guò)程對(duì)最終成績(jī)中FPS提升貢獻(xiàn)很大。
我們的成績(jī)
基于上述設(shè)計(jì),最終的實(shí)現(xiàn)的加速方案性能如下:

。
跟前兩年的結(jié)果相比,雖然我們的精度(IoU)略有損失,但在速度方面我們有了大幅度地提升。
03
總結(jié)
上述是我們?cè)?020DAC-SDC中所做的一些努力。這是我們團(tuán)隊(duì)第一次參加DAC-SDC國(guó)際大賽,從關(guān)注該賽項(xiàng)到今天,我們一邊摸索一邊前進(jìn),很感謝組委會(huì)提供了這樣的平臺(tái)給我們實(shí)踐鍛煉和摸索提升的機(jī)會(huì)。身處計(jì)算機(jī)體系結(jié)構(gòu)發(fā)展的黃金時(shí)代是我們這代人的幸運(yùn),相信未來(lái)系統(tǒng)設(shè)計(jì)必然將向著更精準(zhǔn)、更高效、更低耗的方向邁進(jìn),我們也希望能夠通過(guò)努力與各位同仁共同見證這個(gè)時(shí)代的輝煌。同時(shí),我們的設(shè)計(jì)也已經(jīng)開源在:https://github.com/heheda365/ultra_net
04
團(tuán)隊(duì)介紹
2020DAC-SDC Top-3的BJUT_Runner團(tuán)隊(duì)來(lái)自北京工業(yè)大學(xué)信息學(xué)部張文博老師和包振山老師帶領(lǐng)的異構(gòu)計(jì)算研究小組。參加本次比賽的團(tuán)隊(duì)成員包括:詹康(圖中右下)、郭俊南和宋秉彥(圖中左下)。受2020年新型冠狀病毒疫情(COVID-19)影響,在整個(gè)參賽環(huán)節(jié),團(tuán)隊(duì)成員一直采用在線研討方式進(jìn)行溝通(下圖為本組指導(dǎo)教師和所有成員在線合影)。
原文標(biāo)題:打破常規(guī),深度結(jié)合FPGA架構(gòu)優(yōu)勢(shì)|2020DAC- SDC冠軍作品開源與技術(shù)分享
文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1660文章
22428瀏覽量
636935 -
dac
+關(guān)注
關(guān)注
44文章
2723瀏覽量
197167 -
開源
+關(guān)注
關(guān)注
3文章
4227瀏覽量
46219
原文標(biāo)題:打破常規(guī),深度結(jié)合FPGA架構(gòu)優(yōu)勢(shì)|2020DAC- SDC冠軍作品開源與技術(shù)分享
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
MD657B高速DAC特性與替代型號(hào)分析
MD662H高速DAC替代方案全解析:采樣率、復(fù)用與性能權(quán)衡
使用簡(jiǎn)儀科技產(chǎn)品構(gòu)建高速數(shù)據(jù)流盤與回放系統(tǒng)解決方案
采用Prefetch+Cache架構(gòu)有什么優(yōu)勢(shì)?
歐姆龍推出全新數(shù)據(jù)流邊緣控制器DX1
在以下嵌入式軟件設(shè)計(jì)模型中,屬于數(shù)據(jù)流模型的是,哪里有設(shè)計(jì)模型的介紹?
誰(shuí)家在低成本MCU中集成CPLD/FPGA,這有何優(yōu)勢(shì)呢?
如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫測(cè)試
25年11月上海FPGA算法實(shí)現(xiàn)與應(yīng)用技術(shù)高級(jí)研修分享
用IS8000軟件和WT5000功率分析儀的DS波形數(shù)據(jù)流功能分析形數(shù)據(jù)
Altera FPGA與高速ADS4249和DAC3482的LVDS接口設(shè)計(jì)
2020DAC- SDC冠軍作品分享,充分結(jié)合FPGA數(shù)據(jù)流架構(gòu)的優(yōu)勢(shì)
評(píng)論