精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA在做深度學習加速時需要的技能

454398 ? 來源:AI加速微信公眾號 ? 作者:AI加速微信公眾號 ? 2020-10-10 16:25 ? 次閱讀

前言

深度學習加速器已經兩年了,從RTL設計到仿真驗證,以及相應的去了解了Linux驅動,深度學習壓縮方法等等。今天來捋一捋AI加速器都涉及到哪些領域,需要哪些方面的知識??梢杂糜贏I加速器的主要有三種不同架構的器件種類:CPUGPU,AI芯片/FPGA。CPU是一個通用架構芯片,其計算能力和數據帶寬相對受到限制,面對大計算量的深度學習就顯露出其缺點了。GPU含有大量的計算陣列,可以適用于大規模運算,而且其生態較為成熟和完整,所以現在包攬了所有的深度學習訓練和絕大部分深度學習推理。要說有沒有缺陷,經常被拿來比較的就是其功耗較大,而且并不是完全針對于深度學習網絡的結構,所以還并不能完全利用其計算和存儲資源。為了更有針對性的加速深度學習網絡,AI芯片(FPGA)近兩年也出現了。Intel、阿里平頭哥、騰訊、百度等都開始設計自己的AI加速芯片,使用FPGA的有賽靈思、曠視科技等。FPGA用于深度學習加速和AI芯片的架構具有通用性,兩者可以看做相同架構,只是用于不同硬件器件。而且通常AI芯片的前期驗證也是用FPGA完成的。這篇文章就捋一捋FPGA在做深度學習加速時需要的技能。

1. 一張圖

AI加速是一個同時涉及到軟件和硬件的領域,下面一張簡單的圖羅列了AI加速器所有知識。

2. RTL

RTL部分設計主要考慮到以下幾個方面:
1) 考察神經網絡每個部分的計算量和參數數據,選擇適合在FPGA上進行加速的部分。比如對于CNN網絡,卷積運算占據整個網絡的絕大部分計算,因此會占據FPGA中的絕大部分DSP資源。但是在卷積運算之間還存在激活函數、歸一化等操作,這些雖然計算量不大,但是會對整個加速形成瓶頸,因此如何能夠與卷積運算形成流水對性能影響也很大;

2) 設計加速算法。只要考慮好這兩點就解決了主要問題:一個是計算資源利用率,另外一個是miss ratio。計算資源利用率包括FPGA上空間資源利用率,還包括計算資源的時間利用率??臻g利用率越高,說明算力越高,時間利用率越高表明有效計算越高,加速效果越好。Miss ratio反映了片上cache存儲的參數是否能夠及時供給計算使用。如果能及時供給使用,那么從片外加載數據的時間就可以被壓縮。

3) 架構的通用性?;旧霞軜嫸际腔谥噶罴?,指令集主要依據加速器的計算核來定義的,算是復雜指令集。一個指令包含了參數的存儲位置,需要數量,計算方式等等。由于深度網絡操作數量比較單一,比如LSTM基本上就包括矩陣乘法、加法、向量乘法、激活等。大概也就有不超過10個指令就能涵蓋一個LSTM網絡了。為了適配這樣的指令,架構大概包含以下結構:

外部總線:主要用于和外部ddr進行數據交互。

內部存儲:儲存要用到的參數和數據,及時供給計算核。Cache緩存是為了解決讀取DDR帶寬瓶頸問題。

指令解析:獲取指令進行解析,發送給相應模塊進行處理。

內部總線:為每個計算核提供數據讀寫通路。

計算核:張量計算核,用于加速神經網絡計算。

計算核互聯線:實現不同計算核之間的直接互聯,可以實現不同計算核的pipeline。

Batch:包含了計算核、指令解析、計算核互聯線等。當然如果內部cache并不是用的很多,一個batch也可以包含有內部cache。這些batch實際上可以看做神經網絡運行的線程,多個batch就支持多線程神經網絡計算。比如一個LSTM網絡可以在有batch=2的硬件上同時進行兩個句子的運算。

線程控制:用于控制多batch操作。

3. 驗證

驗證主要包括兩個方面,一個是對指令集正確性進行驗證,另外一個是對RTL代碼進行仿真。指令集的驗證需要有一個CMODEL來對編譯器生成指令的正確性進行校驗,校驗準確才能夠給硬件使用。因為仿真環境也需要隨機化指令來對RTL代碼進行校驗,所以cmodel也會用于仿真環境中。我以UVM為例來說明,其基本結構如下:

指令隨機化:對指令進行約束,生成隨機指令;

指令驅動:將指令轉換成文件,提供給cmodel,以及初始化到ddr文件中;

參數隨機化:隨機化權重等參數;

參數驅動:將參數初始化為ddr文件;

AXI驅動:這個包含AXI讀寫ddr文件的驅動,用于和DUT進行交互;

Monitor:監測DUT行為,和cmodel的數據進行對比;

4. 驅動

驅動主要是完成ddr的初始化,線程控制的配置以及中斷響應等。首先將權重等參數初始化到ddr中,然后通過axi總線配置FPGA的寄存器,同時對FPGA產生的中斷進行響應。獲取ddr中結果數據等。一般如zynq等SoC器件,因為集成了arm核,所以驅動相對簡單。如果軟件端在服務器,那么還需要PCIE等驅動來支持和服務器的交互。以SoC器件為例,linux驅動正常工作需要以下步驟:
1. 制作RTL硬件工程,生成bit文件和hardware配置文件;

2. 利用SDK生成fsbl文件,這個主要完成對zynq器件的一些基本硬件配置;

3. 制作linux的uboot、kernel、devicetree等文件;

4. 用fsbl、bit、uboot、kernel、devicetree制作boot.bin;

5. 選擇linux文件系統,如linaro等。制作SD卡鏡像,燒寫到SD卡中,啟動SoC器件;

5. 編譯器

編譯器主要能夠根據深度學習模型來生成指令,并優化指令。以TVM為例,它基于計算圖,對接市場上主流的深度學習框架:tensorflow、pytorch等,將這些模型進行計算圖的轉化,然后基于這些計算圖來進行圖的優化和指令優化。TVM目標是通用性,所以其兼容CPU、GPU、TPU,同時還要對接更多的深度學習框架。所以其很龐大。針對FPGA自身的AI加速器,可以以這個為借鑒,開發自己的compiler。同時依據自身硬件特點進行指令的優化。

計算圖是基本很多編譯器采用的圖結構,其貫穿了指令優化和生成始終。計算圖中的節點包含了數據信息和相應操作。這些節點相互連接形成了一個網絡計算的依賴關系。計算圖是一個基于tensor操作的圖,它并不像通用CPU編譯器的細化的標量操作。因為FPGA加速器中計算核一般都是張量操作。這是和CPU不同的。而且這樣的計算圖也相對簡潔。

一個張量操作的實現有很多可能,因為依據數據之間的依賴關系和維度大小,可以對張量運算進行分解為多步操作。這些分解有很多。因此優化一個計算圖就會面臨很多這樣可能的步驟。這被稱為schedule,優化就是在這些schedule空間中找出最優的那個順序。TVM中提出了一個基于機器學習模型的優化方法,去搜尋schedule空間,找到最適于硬件的圖。然后生成指令。

6. 模型壓縮

模型壓縮有很多方法,根據壓縮目標主要包括量化和剪枝。量化就是將浮點定點化,剪枝就是去除一些冗余的連接或者數據。從一些文獻調研的結果有以下一些方式:

1) 二值化網絡;

2) 向量壓縮方法;

3) 知識蒸餾;

4) CP分解;

5) 降維分解;

6) 深度壓縮;

7) 自動化搜索空間;

7. 軟件部署

因為FPGA并不適合加速神經網絡的所有部分或者還沒有相應IP來加速一些模塊,那么這些操作就會放在CPU上進行,比如對于LSTM網絡,前邊的embedding層還有后端的softmax或者類別生成。這些都更適合在CPU上做。因此軟件部署來調用FPGA硬核IP,和FPGA進行交互。同時還有一些數據準備、打印等操作,客戶展示。這些都是軟件部署要做的。

總結

一個AI加速涉及到了算法、軟件、驅動、硬件方面,因此通常做AI加速的團隊都比較龐大,包含了算法到硬件的各種人才。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 加速器
    +關注

    關注

    2

    文章

    795

    瀏覽量

    37772
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4703

    瀏覽量

    128725
  • AI
    AI
    +關注

    關注

    87

    文章

    30239

    瀏覽量

    268475
  • 深度學習
    +關注

    關注

    73

    文章

    5493

    瀏覽量

    120998
收藏 人收藏

    評論

    相關推薦

    相比GPU和GPP,FPGA深度學習的未來?

    相比GPU和GPP,FPGA在滿足深度學習的硬件需求上提供了具有吸引力的替代方案。憑借流水線并行計算的能力和高效的能耗,FPGA將在一般的深度
    發表于 07-28 12:16 ?7472次閱讀

    FPGA深度學習應用中或將取代GPU

    對神經網絡進行任何更改,也不需要學習任何新工具。不過你可以保留你的 GPU 用于訓練?!?Zebra 提供了將深度學習代碼轉換為 FPGA
    發表于 03-21 15:19

    FPGA深度學習能走多遠?

    ,共同進步。 歡迎加入FPGA技術微信交流群14群! 交流問題(一) Q:FPGA深度學習能走多遠?現在用FPGA
    發表于 09-27 20:53

    【詳解】FPGA深度學習的未來?

    的固定架構之外進行模型優化探究。同時,FPGA在單位能耗下性能更強,這對大規模服務器部署或資源有限的嵌入式應用的研究而言至關重要。本文從硬件加速的視角考察深度學習
    發表于 08-13 09:33

    為什么說FPGA是機器深度學習的未來?

    都出現了重大突破。深度學習是這些領域中所最常使用的技術,也被業界大為關注。然而,深度學習模型需要極為大量的數據和計算能力,只有更好的硬件
    發表于 10-10 06:45

    什么是深度學習?使用FPGA進行深度學習的好處?

    (Operations / Watt),因此需要根據系統要求進行仔細評估。FPGA 還具有能夠將整個系統安裝在單個芯片上的優勢。例如,將連接到FPGA的相機輸入連接到深度
    發表于 02-17 16:56

    FPGA工程師需要具備哪些技能?

    設計思路、硬件語言、EDA工具、數字信號處理、通信協議、測試驗證等方面來看,FPGA工程師需要具備多方面的技能。除了上述技能之外,他們還需要
    發表于 11-09 11:03

    FPGA深度學習的未來

    FPGA深度學習的未來,學習資料,感興趣的可以看看。
    發表于 10-26 15:29 ?0次下載

    Xilinx FPGA如何通過深度學習圖像分類加速機器學習

    了解Xilinx FPGA如何通過深度學習圖像分類示例來加速重要數據中心工作負載機器學習。該演示可通過Alexnet神經網絡模型
    的頭像 發表于 11-28 06:54 ?3779次閱讀

    FPGA深度學習領域的應用

    本文從硬件加速的視角考察深度學習FPGA,指出有哪些趨勢和創新使得這些技術相互匹配,并激發對FPGA如何幫助
    的頭像 發表于 06-28 17:31 ?6884次閱讀

    微軟推出基于FPGA深度學習加速平臺

    微軟團隊推出了一個新的深度學習加速平臺,其代號為腦波計劃(Project Brainwave),機器之心將簡要介紹該計劃。
    發表于 09-03 14:36 ?1956次閱讀

    FPGA深度學習加速技能總結

    深度學習加速器已經兩年了,從RTL設計到仿真驗證,以及相應的去了解了Linux驅動,深度學習壓縮方法等等。
    的頭像 發表于 03-08 16:29 ?8753次閱讀
    <b class='flag-5'>FPGA</b>做<b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>加速</b>的<b class='flag-5'>技能</b>總結

    FPGA說起的深度學習

    這是新的系列教程,在本教程中,我們將介紹使用 FPGA 實現深度學習的技術,深度學習是近年來人工智能領域的熱門話題。
    的頭像 發表于 03-03 09:52 ?1478次閱讀

    fpga學習需要具備哪些課程

    FPGA(Field Programmable Gate Array)學習需要具備一系列的課程知識和實踐技能
    的頭像 發表于 03-14 15:51 ?1135次閱讀

    FPGA加速深度學習模型的案例

    FPGA(現場可編程門陣列)加速深度學習模型是當前硬件加速領域的一個熱門研究方向。以下是一些FPGA
    的頭像 發表于 10-25 09:22 ?150次閱讀