自動編程DNN加速器!只需3步,雲端終端通用

新智元專欄

作者:張曉帆

【新智元導讀】美國伊利諾伊大學、IBM中國研究院等的最新研究,提出一種基於FPGA的DNN推理加速器DNNBuilder,獲得電子設計自動化領域學術頂會ICCAD的最佳論文。實驗證明,DNNBuilder生成的加速器擁有現時最先進的性能和效率,超越了同類加速器。本文帶來論文作者的詳細解讀。

FPGA 編程耗時耗力,即使對專業人員來說也頗有難度。如何才能加速深度神經網絡模型在FPGA上的部署?

有沒有想過,要是有個能“一鍵自動生成”FPGA上DNN模型實現的工具就好了?

你還別說,現在還真有一款這樣的工具,而且雲端和邊緣的設備都適用!

相關研究論文獲得了第37屆電子設計自動化頂會 International Conference on Computer Aided Design(ICCAD)的最佳論文獎

獲獎團隊研究成員來自美國伊利諾伊大學(UIUC)、IBM中國研究院及IBM T. J. Watson研究中心。該團隊同時隸屬於IBM和UIUC聯合成立的認知計算AI系統研究中心(C3SR.com)。

全文地址:

https://zhangxf218.wixsite.com/mysite

DNN推理加速挑戰巨大

DNN應用已被廣泛部署於雲端和終端設備中,如人臉識別、語音識別(翻譯)、產品推薦、物體檢測等。這些應用需要大量計算與存儲資源,以滿足其高吞吐率、低能耗和低延時要求。

可見,不論是雲端還是終端計算, DNN的推理過程都需要作加速處理才能適應日常使用需求。在加速器的設計上,設計者無可避免地會遇到多種挑戰,包括:

  1. 流式數據(如視頻輸入輸出)要求加速器具備高吞吐率和低延時的DNN推理性能;
  2. 不平衡的DNN網絡要求加速器設計擁有合理的資源分配策略以平衡不同網絡層的資源需求;
  3. 高分辨率圖片和視頻輸入要求加速器能應對由此帶來的巨大片上數據緩存壓力

使用FPGA,高效靈活的DNN加速方案

本文作者提出使用基於FPGA的DNN推理加速器去應對上述挑戰。

FPGA可提供比基於CPU或GPU解決方案更低的延時和能耗,也能提供比專用集成電路(ASIC)更高的靈活度和更短的產品上市週期,是非常理想的DNN加速平臺。

可是,設計一個基於FPGA的高性能DNN推理加速器還是充滿了困難,它需要寄存器傳輸級(RTL)編程技巧,硬件驗證知識和豐富的硬件資源分配經驗等硬件設計相關知識,對於在算法層面關注深度學習的研究人員來說是非常不友好的。

爲此,作者認爲業界需要一種更加便捷的端到端DNN加速器自動生成方案——DNNBuilder

只需三步,獲得高性能DNN加速器

圖 1 DNN推理加速器自動生成流程

DNNBuilder只需DesignGenerationExecution三步就能自動生成基於FPGA的高性能DNN推理加速器,並能把加速器快捷部署到雲端或終端不同的FPGA上而不要求使用者瞭解RTL編程或硬件資源分配策略。

其中,DNNBuilder的第一步支持熱門的深度學習框架(如Caffe,Tensorflow),使用者能繼續使用原有的網絡設計和訓練工具去定製DNN,並可像往常一樣使用GPU加速訓練過程。特別的一點是,本文作者在Design步驟中增加了網絡更新接口以接收該加速器在硬件性能方面的反饋,並以此引導使用者對DNN作相應優化(如增減層數、調整量化方案等)。

DNNBuilder的第二步操作會接收上一步訓練好的網絡定義及權重數據文件,並開始分析網絡結構和提取關鍵參數,如網絡層數、網絡層種類、通道數等。根據對網絡的理解,DNNBuilder會綜合考慮DNN每層複雜度、權重數據可重用程度和可用的FPGA硬件資源,自動生成性能優化策略。隨後,DNNBuilder會根據優化策略配置預製的高度參數化的RTL IP,並使用這些IP搭建整個DNN加速器。

在DNNBuilder的最後一步,使用者可以把生成的二進制文件下載至FPGA,運行DNN推理加速器。

三大硬件設計創新

本文提出了多個DNN加速器架構創新,令自動生成的加速器也擁有現時最高的吞吐率、最少的輸出響應時間和極佳的可拓展性。論文着重介紹的有三個創新點,包括“列緩存方案(a column-based cache scheme)”、“細粒度流水線結構(a fine-grained layer-based pipeline structure)”和“高性能RTL IP (optimized and reconfigurable DNN-specific RTL IPs)”。

1)列緩存方案能在使用高清輸入的情況下大幅減少存放特徵圖(feature map)所需的緩存空間,其核心思想是通過緩存若干slices代替緩存整個3維特徵圖(圖2左),從而減少FPGA片上存儲器(Block RAM)的使用量。

只要這些被緩存的數據可提供足夠數量的卷積滑窗操作,不同網絡層之間的操作就能繼續下去。如當前的網絡層爲卷積層(卷積核=3x3,stride=1),緩存4個slices就能滿足2次滑窗操作,當需要做第三次滑窗時,只需要傳入1個新的slice替代舊數據即可。

此設計可行的根本原因是特徵圖數據生命週期短,可在計算後立刻丟棄以節省空間。實驗表明(見圖2右),在運行高清輸入的YOLO加速器時,在使用列緩存方案可減少7至320倍的片上緩存使用量(平均減少43倍)。

2)細粒度流水線結構可在保留傳統流水線結構高吞吐率特性的同時,大幅度減少DNN加速器的計算延時。

與使用傳統流水線結構的加速器類似,該結構會在FPGA上例化DNN中需要使用參數的主要網絡層(如卷積層、全連接層),每一主要網絡層會對應加速器的一級流水;而不同的地方是此方案讓各層重疊,從而大幅度降低輸出需要等待的時間。

一個使用傳統流水結構的加速器對一個9層的DNN作推理運算需要等待457.24ms才能獲得結果,而在使用本文提出的結構後,運行同樣的網絡推理僅需等待59.04ms(圖3右),延時下降幅度達7.7倍

圖 3傳統流水線結構(左)及本文提出的細粒度流水結構(右)

3)高性能RTL IP是構建DNN加速器的最基本模塊。通過分解這些DNN網絡層,核心功能可以被映射到對應所需的RTL IP上,並通過這些IP搭建加速器(圖4左)。

由於這些IP是高度可配置的,DNNBuilder可通過生成優化策略去合理配置這些IP,以滿足不同網絡層對硬件資源和運行性能的要求。

圖4右展示了DNNBuilder使用的卷積IP。它的輸入和輸出數據處理並行度均可被配置(分別對應CPF和KPF)。此外IP中數據通路的位寬都是靈活的可變的(如輸入輸出位寬,bias和weight的位寬等),這樣DNNBuilder就可以精確控制每一個IP相應的資源消耗及可獲取的性能。

圖4

自動化:確保最優資源分配

DNNBuilder可對FPGA的計算及存儲資源作分配並生成優化策略,爲RTL IP的參數配置提供依據。

在計算資源分配方面,作者在文中提及了資源分配的理論基礎(圖5左公式):即在使用流水線結構的加速器中,只有每一級流水的延時相當時,加速器才能獲得最大吞吐率。

根據算法理論,作者設計了基於FPGA的DNN推理加速器的資源分配算法(見原文Algorithm 1)。

此外,本文還討論了FPGA外部存儲器訪存帶寬的分配問題。作者使用Roofline模型(圖5右)闡述了可通過改變CTC指數 (Computation to communication Ratio) 增加數據重用的機會,從而減少帶寬資源消耗。CTC指數的增減可通過調整列緩存方案中slices多寡實現。根據此思路,作者在原文Algorithm2中詳細描述了帶寬資源分配方案。

終極殺器:DNNBuilder

爲評估自動生成加速器的性能,作者選擇了KU115(中端FPGA)和ZC706(嵌入式FPGA)這兩款設備作爲目標FPGA,讓DNNBuilder分別對應雲端和終端計算場景生成DNN推理加速器。

首先,作者與最近使用同款ZC706 FPGA的設計作比較(表1)。DNNBuilder生成的設計獲得最高的吞吐率(GOPS)和最優秀的功率效率(GOPS/W)。

表1 DNN推理加速器性能對比(終端FPGA設備)

隨後,作者選擇了與其他運行在雲端FPGA的加速器作對比(表2)。在使用Xilinx的一款中端FPGA KU115,DNNBuilder所生成設計能獲得超過2TOPS(16比特量化)和4TOPS(8比特量化)吞吐率,超越其他設計。在功率效率方面,DNNBuilder也領先其他對手。

表2 DNN推理加速器性能對比(雲端FPGA設備)

本文作者還以AlexNet作爲基準測試,對比了基於GPU和FPGA的DNN推理加速器(表3)。此對比同樣分成兩組,分別使用雲端(TitanX GPU vs. KU115 FPGA)與終端設別 (TX2 GPU vs. ZC706 FPGA)。DNNbuilder所生成的基於FPGA的加速器在效率方面超過了基於GPU的設計。

表3 GPU與FPGA的DNN推理性能對比

結論

本文作者提出了DNNBuilder,它是一種基於FPGA的高性能DNN加速器自動生成方案。作者通過三個硬件設計創新(列緩存方案、細粒度流水線結構和高性能RTL IP)和自動化資源分配方案,確保生成的加速器擁有現時最先進的性能和效率。實驗表明,DNNBuilder生成的加速器在運行VGG-16時吞吐率可達4022 GOPS,效率達180.2 GOPS/W,超越了同類加速器。

論文下載地址:

https://docs.wixstatic.com/ugd/c50250_77e06b7f02b44eacb76c05e8fbe01e08.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章