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

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

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