雷鋒網 AI 科技評論按:由電子自動化設計頂級會議 DAC 2019 主辦的「低功耗目標檢測系統設計挑戰賽」於美國拉斯維加斯落下帷幕。在比賽中,西安交通大學人工智慧與機器人研究所團隊 XJTU-Tripler 憑藉對算法和架構的特殊優化,最終斬獲 FPGA 賽道的亞軍;同時作為國內唯一一個進入前三的隊伍,他們計劃開源比賽相關工具,並且提供後續支持。針對他們在本次比賽中所取得的優異成績,雷鋒網 AI 科技評論將對他們的獨家採訪整理如下。
西安交通大學——XJTU-Tripler
Q:XJTU-Tripler 團隊師承何處?
上一屆「低功耗目標檢測系統設計挑戰賽」分別由清華大學與中科院在比賽中取得了傲人的成績。而這次國內唯一一個進入前三的隊伍,來自西安交通大學——XJTU-Tripler 團隊。
XJTU-Tripler 團隊是來自西安交通大學人工智慧與機器人研究所任鵬舉副教授所在的認知計算架構團隊。團隊的主要工作是專注於人工智慧晶片設計的相關工作,其研究意義在於打通算法到落地產品的整個過程。整個團隊的平均年齡只有 25 歲,是相當充滿激情與活力的年輕團隊。
在本次比賽中,共有 10 人參賽,其中趙博然,趙文哲,夏天,陳飛,樊瓏,宗鵬陳負責 AI 加速器 HiPU 的設計、PS 側的 ARM 與 HiPU 的交互、Pynq 上系統軟體開發以及 HiPU 硬體代碼仿真;魏亞東,塗志俊負責算法底層搭建、神經網絡算法的量化以及和硬體組的對接;趙之旭,董志偉負責目標檢測算法的優化。
Q:團隊與 DAC 的淵源?
儘管這支團隊非常年輕化,但他們所取得的一些成績卻絲毫都不含糊。
去年,他們也參加了2018年全球自動化系統設計大賽(DAC)TX2 賽道的比賽,實現了 tensorflow 到 tensorRT 的自動編譯,並將編譯器代碼開源至 https://github.com/zhaozhixu/LightNet(可以通過這個編譯器完成個人模型在嵌入式GPU上的加速)。
儘管那是他們第一次參加這樣的比賽,但最終他們在激烈的競爭中脫穎而出,取得了 TX2 組第四名的優良成績。而經過一年的沉澱,不管是在技術上還是思想上,他們也都更成熟;今年他們憑藉著對算法和架構的獨特優化,最終斬獲 FPGA 賽道的亞軍。
Q:是什麼驅使 XJTU-Tripler 團隊參加這類比賽?
我們都知道,在學生階段多參加一些比賽和社會實踐,於個人而言,一定意義非凡。這不光可以將所學到的理論轉化為輸出,把知識落到實處;同時也會鍛鍊個人的許多能力,比如團隊協作、應變能力、社會認知敏感度等等。而鍛鍊所得的這些能力,將來能幫助我們更好去適應社會的一系列需求。
除此之外,團隊成員亞東還告訴我們:如何選擇適合自己和團隊的比賽,也是一個非常值得深思的問題。對於人工智慧與機器人領域,目前大多數比賽比如 ImageNet 比賽往往需要大量的集群去進行算法的迭代,而準確率越高的網絡往往需要越大的算力去支持,所以參加這樣的比賽,所需考量的成本是較高的。但 DAC 比賽相對來講,它更關注神經網絡算法在嵌入式端的落地,這不僅解決了成本問題,同時還和團隊一直追求的打通算法到落地這樣的目標相契合。所以,XJTU-Tripler 把握住了這樣的機會。
賽場時分
Q:在比賽中,XJTU-Tripler 團隊遇到的最大困難是什麼?
XJTU-Tripler 團隊負責人告訴我們:在這次比賽中,一共遇到了兩個比較大的難題。
第一個難題是在於算法知識層面。在比賽的過程中,算法和架構需要核對網絡每一層的所有輸出以確保最終的輸出結果無誤,因此對於各種算法的充分理解則需要花費大量的時間與精力。其中令團隊印象比較深刻的是像 tf.round 函數,和平時接觸較多的 round 函數是有細微區別的,如果不注意這些小細節,在調試過程中就很容易出現各種各樣的問題;再比如 tensorflow 中的 padding 方案,也和平時學的有所出入;所以遇到這種問題時,一定得對每個細節嚴格把關,並且吃透網絡中的各類函數。
一方面,這會考驗每個團隊成員的學習能力,需要我們在短時間內,掌握比平時多幾倍的知識量;另一方面,還考驗著成員之間的合作與互助,因為額外的工作量只有經過良好的分工與協助,才能高效高質的完成。
第二個難題是在工作量層面。在網絡量化的過程中,層之間沒有完全解耦,前後層之間的交互會大大增加實際的壓縮工作;而解決這個問題,要麼選擇修改硬體架構,要麼只能硬著頭皮挨個層去核對。而無論哪種方式,對團隊而言,都是一項極大的挑戰。而最終團隊從各方面進行仔細的考量後,選擇了後者,最終花費了將近三分之一的時間(比預想時間更短),完成了這些工作。
Q:比賽中遇到哪些實力較為強勁的對手?
XJTU-Tripler 團隊一致表示:此次碰到的最強勁的對手當屬 UIUC,也就是這次的冠軍隊伍。
他們的優勢集中在網絡設計方面,通過採用了一個規模很小的網絡達到了檢測精度超高的效果,算法優化方面表現十分強大;並且可以在賽方提供的數據集上取得很高的準確率。儘管最後他們的 FPGA 代碼優化還有所欠缺,比 TX2 慢了 4 倍有餘,但是算法優化結果依舊非常令人震驚。
Q:XJTU-Tripler 團隊的優勢及創新點?
與其他競賽組相比,團隊本次的參賽方案採用了 Verilog 底層設計語言進行開發。
從原理上來講,與其他採用 HLS 工具鏈的方案相比,採用這種設計語言完成的 AI 加速器算力更強,並且支持的算子靈活度更高,這將有利於加快任務執行速度;而從結果來看,執行相同的網絡,這樣的設計方案在 FPGA 上執行的速度確實能夠比在 TX2 上快很多。
淺析技術
在網絡參數量化過程部分,為了適應 FPGA 的定點運算,待所有參數訓練完成後,則需要對所有參數進行量化操作。該團隊將網絡參數和 feature map 均量化為 8bit 定點。
網絡參數的量化流程
經過量化後,最終目標檢測網絡 ShuffleDet 的卷積層數約為 74 層,權重約為 1.94MB,Bias 約為 78KB。量化前的全精度準確率為 67.1%,量化後的精度為 61.5%,量化操作帶來的精度損失為 5.6%。
Q:在這部分中提到量化後產生了一定的精度損失,這會對最終的結果帶來什麼影響?
8bits 量化後造成了 0.056 的 IoU 損失(-8.3%),但 FPGA 上的設計實現帶來了 28.87 的幀率提升(+131%)和 8309J 的能量減少(-46.56%)。量化精度掉的較多將會直接影響到最終的分數。
Q:本次比賽的主體網絡結構採用了 ShuffleNet V2,它與和 shuffleDet 之間的差別是什麼?
亞東:「ShuffleNet V2 是 Face++提出的網絡,論文中這個網絡被應用於分類任務,本次比賽我們主體的網絡結構採用了 ShuffleNet V2 這個高效的網絡,用於檢測圖像基礎特徵的提取。
在 ShuffleNet V2 之後,我們會增加多個模塊用於進一步增加網絡深度,同時在網絡的最後加入一個目標檢測的模塊用於回歸目標的類別以及標定框。」
獲獎背後的秘密
Q:參加此次比賽對於你們個人、或者實驗室來說,有何助益?
XJTU-Tripler 團隊表示:「這次 DAC2019 比賽涉及了算法設計、算法優化、神經網絡量化、並行程序設計、處理器設計、協處理器設計、軟硬體接口設計、系統速度和功耗優化優化等多個方面,比賽極大地增強了我們團隊的神經網絡加速系統的設計能力,同時提高了很多寶貴的設計經驗。
至於獲得經驗和收穫,第一、戰略上目標決定位置——求上得中求中得下,戰術上設計反饋決定和設計對標決定設計高度;第二、好的設計是面向需求的各個方面的折中,某一方面的優勢不一定對於產品本身來說是好事;第三也是最重要的:大多數艱難的問題答案都在人,尤其在於頂尖人才,而頂尖人才的競爭必將是成敗之爭。因此,對於每個人來講,只有盡力讓自己變得更加優秀,才會擁有更強的競爭力!」
Q:大賽後有什麼技術方面的乾貨想要分享給大家嗎?
「算法方面:推薦臺大李弘毅老師的深度學習課程,建議大家可以多抽出時間來閱讀最新的感興趣的 paper,全方面提升個人知識庫;
邏輯設計方面:推薦伯克利大學的公開課 CS152;
代碼開放方面:推薦 git,VScode。」
未來設想
Q:後續對於此次的參賽方案有什麼進一步的優化打算?
「未來該團隊的設計需要在以下幾個方面繼續加強:首先,輕量級算法設計與訓練。團隊將投入更多的精力去分析各個網絡結構在量化後的優劣;其次,硬體設計需要繼續迭代,下一版設計會提高靈活性以支持更多模型,同時精簡運算邏輯以在 ZU3 上實現更高的峰值算力。
除了繼續提升和優化 FPGA 的設計外,我們會進行原型晶片設計和流片。同時,我們也會將 DAC19 競賽相關的代碼進行開源。」
Q:開源後,你們將如何維護呢?
「該方案中注釋較少,整體代碼不夠簡潔和系統,另外還有很多臨時添加的解決方案。我們首先可以確保該工程可以完整地工作在 Ultra96 這個開發板上,後續會根據大家的反饋,逐漸提高可讀性。
我們項目主分支會進一步增加支持的網絡,優化代碼邏輯,並在合適的時候移植到開源版本當中。該方案已經在實際項目中落地實踐了,主要應用於場景有端側、低功耗、目標檢測。」
雷鋒網 AI 科技評論