基於FPGA的通用CNN加速設計

2021-01-05 電子發燒友

  要做一些計算加速的工作,入手先要想好幾個問題: 要加速的是什麼應用,應用的瓶頸是什麼,再針對這個瓶頸,參考前人工作選擇合適的方案。過早地執著於fpga的技術細節容易護士許多的細節。現在software define network/flash/xxx,已然大勢所趨。

  WHEN?深度學習異構計算現狀

  隨著網際網路用戶的快速增長,數據體量的急劇膨脹,數據中心對計算的需求也在迅猛上漲。同時,人工智慧、高性能數據分析和金融分析等計算密集型領域的興起,對計算能力的需求已遠遠超出了傳統CPU處理器的能力所及。

  異構計算被認為是現階段解決此計算溝壑的關鍵技術,目前 「CPU+GPU」以及「CPU+FPGA」 是最受業界關注的異構計算平臺。它們具有比傳統CPU並行計算更高效率和更低延遲的計算性能優勢。面對如此巨大的市場,科技行業大量企業投入了大量的資金和人力,異構編程的開發標準也在逐漸成熟,而主流的雲服務商更是在積極布局。

  WHY?通用CNN FPGA加速

  業界可以看到諸如微軟等巨頭公司已經部署大批量的FPGA來做AI inference加速,FPGA相較於其他器件的優勢是什麼呢?

  Flexibility:可編程性天然適配正在快速演進的ML算法

  DNN、CNN、LSTM、MLP、reinforcement learning以及決策樹等等

  任意精度動態支持

  模型壓縮、稀疏網絡、更快更好的網絡

  Performance:構建實時性AI服務能力

  相較於GPU/CPU數量級提升的低延時預測能力

  相較於GPU/CPU數量級提升的單瓦特性能能力

  Scale

  板卡間高速互聯IO

  Intel CPU-FPGA構架

  與此同時,FPGA的短板也非常的明顯,FPGA使用HDL硬體描述語言來進行開發,開發周期長,入門門檻高。以單獨的經典模型如Alexnet以及Googlenet為例,針對一個模型進行定製的加速開發,往往需要數月的時間。業務方以及FPGA加速團隊需要兼顧算法迭代以及適配FPGA硬體加速,十分痛苦。

  一方面需要FPGA提供相較於CPU/GPU有足夠競爭力的低延時高性能服務,一方面需要FPGA的開發周期跟上深度學習算法的迭代周期,基於這兩點我們設計開發了一款通用的CNN加速器。兼顧主流模型算子的通用設計,以編譯器產生指令的方式來驅動模型加速,可以短時間內支持模型切換;同時,對於新興的深度學習算法,在此通用基礎版本上進行相關算子的快速開發迭代,模型加速開發時間從之前的數月降低到現在的一到兩周之內。

  HOW?通用CNN FPGA架構

  基於FPGA的通用CNN加速器整體框架如下,通過Caffe/Tensorflow/Mxnet等框架訓練出來的CNN模型,通過編譯器的一系列優化生成模型對應的指令;同時,圖片數據和模型權重數據按照優化規則進行預處理以及壓縮後通過PCIe下發到FPGA加速器中。FPGA加速器完全按照指令緩衝區中的指令集驅動工作,加速器執行一遍完整指令緩衝區中的指令則完成一張圖片深度模型的計算加速工作。每個功能模塊各自相對獨立,只對每一次單獨的模塊計算請求負責。加速器與深度學習模型相抽離,各個layer的數據依賴以及前後執行關係均在指令集中進行控制。

  簡單而言,編譯器的主要工作就是對模型結構進行分析優化,然後生成FPGA高效執行的指令集。編譯器優化的指導思想是:更高的MAC dsp計算效率以及更少的內存訪問需求。

  接下來我們以Googlenet V1模型為例,對加速器的設計優化思路做簡單的分析。Inception v1的網絡,將1x1、3x3、5x5的conv和3x3的pooling stack在一起,一方面增加了網絡的width,另一方面增加了網絡對尺度的適應性。下圖為模型中Inception的基本結構。

  數據依賴關係分析

  此部分主要分析挖掘模型中可流水化以及可並行化的計算。流水化的設計可以提高加速器中的計算單元利用率,並行化的計算可以在同一時刻利用儘量多的計算單元。

  關於流水,分析部分包括數據從DDR加載到FPGA片上SRAM的操作與PE進行計算的流水,通過此項優化將內存訪問的時間overlap;DSP計算整列的計算控制過程,保證DSP利用率的提升。

  關於並行,需要重點分析PE計算陣列與激活、pooling以及歸一化等「後處理」模塊之間的並行關係,如何確定好數據依賴關係以及防止衝突是此處設計關鍵。在Inception中,可以從其網絡結構中看到,branch a/b/c的1x1的卷積計算與branch d中的pooling是可以並行計算的,兩者之間並不存在數據依賴關係。通過此處優化,3x3 max pooling layer的計算就可以被完全overlap。

  模型優化

  在設計中主要考慮兩個方面:尋找模型結構優化以及支持動態精度調整的定點化。

  FPGA是支持大量計算並行的器件,從模型結構上尋找更高維度的並行性,對於計算效率以及減少內存訪問都十分有意義。在Inception V1中,我們可以看到branch a\ branch b\ branch c的第一層1x1卷積層,其輸入數據完全一致,且卷積layer的stride以及pad均一致。那我們是否可以在output feature map維度上對齊進行疊加?疊加後對input data的訪存需求就降低到了原來的1/3。

  另一方面,為了充分發揮FPGA硬體加速的特性,模型的Inference過程需要對模型進行定點化操作。在fpga中,int8的性能可以做到int16的2倍,但是為了使公司內以及騰訊雲上的客戶可以無感知的部署其訓練的浮點模型,而不需要retrain int8模型來控制精度損失,我們採用了支持動態精度調整的定點化int16方案。通過此種方法,用戶訓練好的模型可以直接通過編譯器進行部署,而幾乎無任何精度損失。

  內存架構設計

  帶寬問題始終是計算機體系結構中制約性能的瓶頸之一,同時內存訪問直接影響加速器件功耗效率。

  為了最大化的減少模型計算過程中的DDR訪存,我們設計了如下的內存架構:

  Input buff以及output buffer ping-pong設計,最大化流水以及並行能力

  支持Input buff和output buffer自身之間的inner-copy操作

  Input buff和output buffer之間的cross-copy操作

  通過這種架構,對於大多數目前主流模型,加速器可以做到將中間數據全部hold在FPGA片上,除了模型權重的加載外,中間無需消耗任何額外的內存操作。對於無法將中間層feature map完全存儲在片上的模型,我們在設計上,在Channel維度上引入了slice分片的概念,在feature map維度上引入了part分片的概念。通過編譯器將一次卷積或是pooling\Norm操作進行合理的拆分,將DDR訪存操作與FPGA加速計算進行流水化操作,在優先保證DSP計算效率的前提下儘量減少了DDR的訪存需求。

  計算單元設計

  基於FPGA的通用CNN加速器的核心是其計算單元,本加速器當前版本基於Xilinx Ku115晶片設計,PE計算單元由4096個工作在500MHz的MAC dsp核心構成,理論峰值計算能力4Tflops。其基本組織框架如下圖所示。

  

  KU115晶片由兩個DIE對堆疊而成,加速器平行放置了兩組處理單元PE。每個PE由4組32x16=512的MAC計算DSP核心組成的XBAR構成,設計的關鍵在於提升設計中的數據復用降低帶寬,實現模型權重複用和各layer feature map的復用,提升計算效率。

  應用場景及性能對比

  當前深度學習主流使用GPU做深度學習中的Training過程,而線上Inference部署時需綜合考慮實時性、低成本以及低功耗特性選擇加速平臺。按深度學習落地場景分類,廣告推薦、語音識別、圖片/視頻內容實時監測等屬於實時性AI服務以及智慧交通、智能音箱以及無人駕駛等終端實時低功耗的場景,FPGA相較於GPU能夠為業務提供強有力的實時高性能的支撐。

  對於使用者而言,平臺性能、開發周期以及易用性究竟如何呢?

  加速性能

  以實際googlenet v1模型為例,CPU測試環境:2個6核CPU(E5-2620v3),64G內存。

  將整機CPU打滿,單張基於KU115的加速器相較於CPU性能提升16倍,單張圖片檢測延時從250ms降低到4ms,TCO成本降低90%。

  同時,FPGA預測性能略強於Nvidia的GPU P4,但延時上有一個數量級的優化。

  開發周期

  通用的CNN FPGA加速架構,能夠支持業務快速迭代持續演進中的深度學習模型,包括Googlenet/VGG/Resnet/ShuffleNet/MobileNet等經典模型以及新的模型變種。

  對於經典模型以及基於標準layer自研的算法變種,現有加速架構已經可以支持,可以在一天內通過編譯器實現模型對應指令集,實現部署上線。

  對於自研的特殊模型,例如不對稱卷積算子和不對稱pooling操作等,需要根據實際模型結構在本平臺上進行相關算子迭代開發,開發周期可縮短在一到兩周之內進行支持。

  易用性

  FPGA CNN加速器對底層加速過程進行封裝,向上對加速平臺的業務方提供易用SDK。業務方調用簡單的API函數即可完成加速操作,對業務自身邏輯幾乎無任何改動。

  如果線上模型需要改動,只需調用模型初始化函數,將對應的模型指令集初始化FPGA即可,加速業務可以在幾秒內進行切換。

  結語

  基於FPGA的通用CNN加速設計,可以大大縮短FPGA開發周期,支持業務深度學習算法快速迭代;提供與GPU相媲美的計算性能,但擁有相較於GPU數量級的延時優勢。通用的RNN/DNN平臺正在緊張研發過程中,FPGA加速器為業務構建最強勁的實時AI服務能力。

  在雲端,2017年初,我們在騰訊雲首發了國內第一臺FPGA公有雲伺服器,我們將會逐步把基礎AI加速能力推出到公有雲上。

  AI異構加速的戰場很大很精彩,為公司內及雲上業務提供最優的解決方案是架平FPGA團隊持續努力的方向。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 在使用CNN算法的雲數據中心,Altera FPGA實現的加速功能具有優異的...
    Altera公司今天宣布,微軟採用Altera Arria® 10 FPGA (現場可編程門陣列)實現基於CNN (卷積神經網絡)算法的數據中心加速功能,其每瓦性能非常優異。這些算法通常用於圖像分類、圖像識別,以及自然語言處理等。
  • 基於FPGA的通用光纖通信系統設計
    基於上述分析,本文設計了一套基於FPGA的通用光纖通信系統。對通信部分邏輯進行了設計封裝,且在接收端預留了應用接口,用戶可以根據不同應用場合加入其他設計,具有一定的通用價值。系統採用總線接口,方便與各類計算機及嵌入式設備進行通信,設備結構簡捷輕便。最後,光纖通信部分邏輯為自主設計,通信協議靈活,不依賴於搭載了串行收發器的晶片。
  • 基於FPGA的高速PID控制器設計與仿真
    其設計技術成熟,長期以來形成了典型的結構,參數整定方便,結構更改靈活,能滿足一般控制的要求。本設計使用Altera公司的Cyclone系列FPGA器件EP1C3作為硬體開發平臺,對運動控制中常用的增量式數字PID控制算法進行優化處理,提高了運算速度和迴路的調節時間。
  • 基於SoC+FPGA平臺快速動態加載驅動開發及實現
    實際測試基於高速SPI接口的FPGA固件動態加載功能快速穩定,對同類型嵌入式平臺的FPGA固件動態加載驅動開發具有借鑑意義。本文引用地址:http://www.eepw.com.cn/article/201605/291764.htm引言  OMAP-L138雙核處理器是TI公司推出的新一代低功耗單片系統(SoC),廣泛應用於通信、工業、醫療診斷和音視頻嵌入式設備,其內部集成的ARM核與DSP核協同工作,既能滿足基於嵌入式作業系統的通用應用程式開發,又能滿足專屬複雜算法的高效實時運行
  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    一、引言本文引用地址:http://www.eepw.com.cn/article/245960.htm本方案是用VHDL語言來實現的基於RS232按位串行通信總線的行列式矩陣鍵盤接口電路,具有復位和串行數據的接收與發送功能,根據發光二極體led0
  • 基於FPGA的八通道超聲探傷系統設計
    摘要:文中提出了一種基於FPGA的八通道超聲探傷系統設計方案。該系統利用低功耗可變增益運放和八通道ADC構成高集成度的前端放大和數據採集模塊;採用FPGA和ARM作為數位訊號處理的核心和人機互動的通道。
  • 基於Modelsim FLI接口的FPGA仿真技術
    1、Modelsim 及 FLI接口介紹本文引用地址:http://www.eepw.com.cn/article/273718.htm  Modelsim是 Model Technology(Mentor Graphics的子公司)的 HDL 硬體描述語言仿真軟體,可以實現 VHDL, Verilog,以及 VHDL-Verilog 混合設計的仿真
  • 一種基於FPGA的視頻圖像畫面分割器設計
    摘要:為了解決在一個屏幕上收看多個信號源的問題,對基於FPGA技術的視頻圖像畫面分割器進行了研究。研究的主要特色在於構建了以FPGA為核心器件的視頻畫面分割的硬體平臺,首先,將DVI視頻信號,經視頻解碼晶片轉換為數字視頻圖像信號後送入異步FIFO緩衝。
  • 基於FPGA的Gzip解壓縮硬體設計
    >  (2)對待解壓縮文件進行文件頭處理,獲取壓縮方法、壓縮標誌、文件名等信息;  (3)處理每個塊剛開始的3bits,根據處理結果選擇進入相應的解壓縮模式(stored模式、fixed模式、dynamic模式); fpga
  • 基於FPGA+Python的定點平方根實現
    Python是一種簡單易學並且功能強大的程式語言,並具有強大的軟硬體描述能力,MyHDL採用Python擴展包的形式使其能支持硬體設計和仿真並在仿真結果符合要求後可將軟體算法自動轉換為相應的Verilog 或VHDL硬體描述。本文試圖採用這種新的基於Python的軟硬體設計方法在FPGA上實現定點平方根。
  • 加速雲基於FPGA的加速解決方案搞定高算力AI應用場景
    兩大IP庫深度學習加速庫FDNN是國內首個支持通用卷積神經網絡的FPGA加速庫,基於RTL級代碼,包含卷積、池化、全連接、非線性函數等參數可配置的深度學習基礎庫,兼容CAFFE由於FPGA具有很高的性能功耗比,而且基於門級電路設計使得FPGA是一個超低延時和確定延時的方案,FPGA可編程及動態可重構可以適應深度學習未來算法變化,IO可編程性可以滿足更多業務需求。為此,加速雲推出一整套基於FPGA的深度學習加速方案,包括SC-OPM/SC-OPF/SC-OPS加速卡及FDNN加速庫,滿足客戶對深度學習高性能、靈活性加速要求。
  • 「每周FPGA案例」基於FPGA的超聲波測距系統設計
    1.1 總體設計1.1.1 概述學習了明德揚至簡設計法和明德揚設計規範,本人用FPGA設計了一個測距系統。該系統採用超聲波進行測量距離再在數碼管上顯示。在本案例的設計過程中包括了超聲波的驅動、三線式數碼管顯示等技術。
  • 基於FPGA技術的全方位移動機器人運動控制系統的方案設計
    且FPGA設計簡單,使用方便,開發周期短,能夠實現真正的SOPC系統。  1 全方位移動機器人運動模型  設世界坐標系下機器人的速度為ε=[vx,vy,φ],則當vx=O,vy≠0,φ=O時,機器人做前後方向的直線運動,當vx≠0,vy=0,φ=0時,機器人做左右方向的直線運動,當vx=0,vy=0,φ≠0時,機器人做自轉運動。
  • fpga應用領域_fpga應用三個主要方向
    fpga的優勢   1)通信高速接口設計。FPGA可以用來做高速信號處理,一般如果AD採樣率高,數據速率高,這時就需要FPGA對數據進行處理,比如對數據進行抽取濾波,降低數據速率,使信號容易處理,傳輸,存儲。   2)數位訊號處理。包括圖像處理,雷達信號處理,醫學信號處理等。優勢是實時性好,用面積換速度,比CPU快的多。
  • 紫光國微:公司的參股子公司紫光同創從事FPGA業務,為國內該領域的...
    請問貴公司是否是國內唯一一家自主eda的fpga的廠商?貴公司對fpga未來市場預估大概是多少?fpga應用領域是否有一定的成長性?貴公司是否會研發除fpga外的集成電路也能應用的eda?貴公司有何戰略性計劃?公司回答表示,感謝您對公司的關注。公司的參股子公司紫光同創從事FPGA業務,為國內該領域的龍頭企業。
  • 高雲半導體FPGA系列面世 為國產FPGA注入活力
    廣東高雲半導體科技股份有限公司(簡稱高雲半導體)在IC-China上召開新產品發布會,宣布推出擁有我國完全自主智慧財產權的現場可編程門陣列(FPGA)朝雲™產品系列、現場可編程門陣列(FPGA)雲源™設計軟體、基於現場可編程門陣列(FPGA)的IP軟核平臺
  • 基於FPGA的實時中值濾波器硬體實現
    文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。文獻[3]、[4]提出了鄰域圖像幀存的存儲結構,該結構充分利用了圖像幀存的數據結構轉換特性,並行高速提供鄰域圖像數據,配以FPGA作為並行處理器,高速實時地實現了中值濾波。但是以上研究都是基於標清圖像的中值濾波器,處理的圖像大小一般為256×256、512×512的灰度圖等,很少有實現高清圖像的中值濾波器。
  • Altera啟動全球 SoC FPGA開發者論壇
    本文引用地址:http://www.eepw.com.cn/article/280214.htm  ASDF包括硬體設計和軟體開發兩個技術主題開發人員將詳細了解精細粒度異構計算使用FPGA架構,能夠定製加速功能滿足特殊任務需求,從而提高了系統性能,降低了功耗。在這為期一天的活動中,開發人員以及創新企業將與Altera和ARM生態系統專家交流怎樣使用SoC FPGA開發可定製的、獨具優勢的加速器。
  • 基於FPGA的司機眼球跟蹤疲勞檢測報警系統
    基於FPGA的司機眼球跟蹤疲勞報警系統可以很好的解決上述問題,且相較於傳統的DSP實現具有集成度高、處理速度快、功能更強大、方便改進內部設計等諸多優點。1、研究意義視頻實時跟蹤作為一個應用性研究方向,其應用愈加廣泛,如軍事、航空、防盜、視頻會議等場合,特別是重要場合的安檢系統成為新的應用領域。
  • 基於FPGA的3G/HD/SD-SDI信號光纖傳輸系統的設計
    編者按:介紹了基於FPGA和高速串行復接/解復接技術,將3G/HD/SD-SDI信號通過光纖實現無損長距離傳輸的方法。與傳統的傳輸方案相比,此方案可以完成傳輸高清視頻的平滑升級,並向下兼容現有的視頻傳輸網絡,降低了網絡的改造升級成本。