91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA做深度學(xué)習(xí)加速的技能總結(jié)

汽車玩家 ? 來(lái)源:AI加速微信公眾號(hào) ? 作者:安平博 ? 2020-03-08 16:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

1. 一張圖

AI加速是一個(gè)同時(shí)涉及到軟件和硬件的領(lǐng)域,下面一張簡(jiǎn)單的圖羅列了AI加速器所有知識(shí)。

FPGA做深度學(xué)習(xí)加速的技能總結(jié)

2. RTL

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

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

3) 架構(gòu)的通用性。基本上架構(gòu)都是基于指令集的,指令集主要依據(jù)加速器的計(jì)算核來(lái)定義的,算是復(fù)雜指令集。一個(gè)指令包含了參數(shù)的存儲(chǔ)位置,需要數(shù)量,計(jì)算方式等等。由于深度網(wǎng)絡(luò)操作數(shù)量比較單一,比如LSTM基本上就包括矩陣乘法、加法、向量乘法、激活等。大概也就有不超過(guò)10個(gè)指令就能涵蓋一個(gè)LSTM網(wǎng)絡(luò)了。為了適配這樣的指令,架構(gòu)大概包含以下結(jié)構(gòu):

外部總線:主要用于和外部ddr進(jìn)行數(shù)據(jù)交互。

內(nèi)部存儲(chǔ):儲(chǔ)存要用到的參數(shù)和數(shù)據(jù),及時(shí)供給計(jì)算核。Cache緩存是為了解決讀取DDR帶寬瓶頸問(wèn)題。

指令解析:獲取指令進(jìn)行解析,發(fā)送給相應(yīng)模塊進(jìn)行處理。

內(nèi)部總線:為每個(gè)計(jì)算核提供數(shù)據(jù)讀寫通路。

計(jì)算核:張量計(jì)算核,用于加速神經(jīng)網(wǎng)絡(luò)計(jì)算。

計(jì)算核互聯(lián)線:實(shí)現(xiàn)不同計(jì)算核之間的直接互聯(lián),可以實(shí)現(xiàn)不同計(jì)算核的pipeline。

Batch:包含了計(jì)算核、指令解析、計(jì)算核互聯(lián)線等。當(dāng)然如果內(nèi)部cache并不是用的很多,一個(gè)batch也可以包含有內(nèi)部cache。這些batch實(shí)際上可以看做神經(jīng)網(wǎng)絡(luò)運(yùn)行的線程,多個(gè)batch就支持多線程神經(jīng)網(wǎng)絡(luò)計(jì)算。比如一個(gè)LSTM網(wǎng)絡(luò)可以在有batch=2的硬件上同時(shí)進(jìn)行兩個(gè)句子的運(yùn)算。

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

3. 驗(yàn)證

驗(yàn)證主要包括兩個(gè)方面,一個(gè)是對(duì)指令集正確性進(jìn)行驗(yàn)證,另外一個(gè)是對(duì)RTL代碼進(jìn)行仿真。指令集的驗(yàn)證需要有一個(gè)CMODEL來(lái)對(duì)編譯器生成指令的正確性進(jìn)行校驗(yàn),校驗(yàn)準(zhǔn)確才能夠給硬件使用。因?yàn)榉抡姝h(huán)境也需要隨機(jī)化指令來(lái)對(duì)RTL代碼進(jìn)行校驗(yàn),所以cmodel也會(huì)用于仿真環(huán)境中。我以UVM為例來(lái)說(shuō)明,其基本結(jié)構(gòu)如下:

指令隨機(jī)化:對(duì)指令進(jìn)行約束,生成隨機(jī)指令;

指令驅(qū)動(dòng):將指令轉(zhuǎn)換成文件,提供給cmodel,以及初始化到ddr文件中;

參數(shù)隨機(jī)化:隨機(jī)化權(quán)重等參數(shù);

參數(shù)驅(qū)動(dòng):將參數(shù)初始化為ddr文件;

AXI驅(qū)動(dòng):這個(gè)包含AXI讀寫ddr文件的驅(qū)動(dòng),用于和DUT進(jìn)行交互;

Monitor:監(jiān)測(cè)DUT行為,和cmodel的數(shù)據(jù)進(jìn)行對(duì)比;

FPGA做深度學(xué)習(xí)加速的技能總結(jié)

4. 驅(qū)動(dòng)

驅(qū)動(dòng)主要是完成ddr的初始化,線程控制的配置以及中斷響應(yīng)等。首先將權(quán)重等參數(shù)初始化到ddr中,然后通過(guò)axi總線配置FPGA的寄存器,同時(shí)對(duì)FPGA產(chǎn)生的中斷進(jìn)行響應(yīng)。獲取ddr中結(jié)果數(shù)據(jù)等。一般如zynq等SoC器件,因?yàn)榧闪?a target="_blank">arm核,所以驅(qū)動(dòng)相對(duì)簡(jiǎn)單。如果軟件端在服務(wù)器,那么還需要PCIE等驅(qū)動(dòng)來(lái)支持和服務(wù)器的交互。以SoC器件為例,linux驅(qū)動(dòng)正常工作需要以下步驟:
1. 制作RTL硬件工程,生成bit文件和hardware配置文件;

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

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

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

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

5. 編譯器

編譯器主要能夠根據(jù)深度學(xué)習(xí)模型來(lái)生成指令,并優(yōu)化指令。以TVM為例,它基于計(jì)算圖,對(duì)接市場(chǎng)上主流的深度學(xué)習(xí)框架:tensorflow、pytorch等,將這些模型進(jìn)行計(jì)算圖的轉(zhuǎn)化,然后基于這些計(jì)算圖來(lái)進(jìn)行圖的優(yōu)化和指令優(yōu)化。TVM目標(biāo)是通用性,所以其兼容CPU、GPU、TPU,同時(shí)還要對(duì)接更多的深度學(xué)習(xí)框架。所以其很龐大。針對(duì)FPGA自身的AI加速器,可以以這個(gè)為借鑒,開發(fā)自己的compiler。同時(shí)依據(jù)自身硬件特點(diǎn)進(jìn)行指令的優(yōu)化。

計(jì)算圖是基本很多編譯器采用的圖結(jié)構(gòu),其貫穿了指令優(yōu)化和生成始終。計(jì)算圖中的節(jié)點(diǎn)包含了數(shù)據(jù)信息和相應(yīng)操作。這些節(jié)點(diǎn)相互連接形成了一個(gè)網(wǎng)絡(luò)計(jì)算的依賴關(guān)系。計(jì)算圖是一個(gè)基于tensor操作的圖,它并不像通用CPU編譯器的細(xì)化的標(biāo)量操作。因?yàn)镕PGA加速器中計(jì)算核一般都是張量操作。這是和CPU不同的。而且這樣的計(jì)算圖也相對(duì)簡(jiǎn)潔。

一個(gè)張量操作的實(shí)現(xiàn)有很多可能,因?yàn)橐罁?jù)數(shù)據(jù)之間的依賴關(guān)系和維度大小,可以對(duì)張量運(yùn)算進(jìn)行分解為多步操作。這些分解有很多。因此優(yōu)化一個(gè)計(jì)算圖就會(huì)面臨很多這樣可能的步驟。這被稱為schedule,優(yōu)化就是在這些schedule空間中找出最優(yōu)的那個(gè)順序。TVM中提出了一個(gè)基于機(jī)器學(xué)習(xí)模型的優(yōu)化方法,去搜尋schedule空間,找到最適于硬件的圖。然后生成指令。

6. 模型壓縮

模型壓縮有很多方法,根據(jù)壓縮目標(biāo)主要包括量化和剪枝。量化就是將浮點(diǎn)定點(diǎn)化,剪枝就是去除一些冗余的連接或者數(shù)據(jù)。從一些文獻(xiàn)調(diào)研的結(jié)果有以下一些方式:

1) 二值化網(wǎng)絡(luò);

2) 向量壓縮方法;

3) 知識(shí)蒸餾;

4) CP分解;

5) 降維分解;

6) 深度壓縮;

7) 自動(dòng)化搜索空間;

7. 軟件部署

因?yàn)镕PGA并不適合加速神經(jīng)網(wǎng)絡(luò)的所有部分或者還沒(méi)有相應(yīng)IP來(lái)加速一些模塊,那么這些操作就會(huì)放在CPU上進(jìn)行,比如對(duì)于LSTM網(wǎng)絡(luò),前邊的embedding層還有后端的softmax或者類別生成。這些都更適合在CPU上做。因此軟件部署來(lái)調(diào)用FPGA硬核IP,和FPGA進(jìn)行交互。同時(shí)還有一些數(shù)據(jù)準(zhǔn)備、打印等操作,客戶展示。這些都是軟件部署要做的。

總結(jié)

一個(gè)AI加速涉及到了算法、軟件、驅(qū)動(dòng)、硬件方面,因此通常做AI加速的團(tuán)隊(duì)都比較龐大,包含了算法到硬件的各種人才。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1660

    文章

    22406

    瀏覽量

    636159
  • AI
    AI
    +關(guān)注

    關(guān)注

    91

    文章

    39707

    瀏覽量

    301324
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5598

    瀏覽量

    124392
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    算法工程師需要掌握一系列跨學(xué)科的技能,涵蓋數(shù)學(xué)基礎(chǔ)、編程能力、算法理論、工程實(shí)踐以及業(yè)務(wù)理解等多個(gè)方面。 以下是具體技能學(xué)習(xí)建議: 線性代數(shù)核心內(nèi)容:矩陣運(yùn)算、特征值分解、向量空間等。應(yīng)用場(chǎng)
    發(fā)表于 02-27 10:53

    Microsemi IGLOO2 FPGA與SmartFusion2 SoC FPGA深度剖析

    Microsemi IGLOO2 FPGA與SmartFusion2 SoC FPGA深度剖析 作為一名電子工程師,在日常的設(shè)計(jì)工作中,FPGA與SoC
    的頭像 發(fā)表于 02-09 17:20 ?305次閱讀

    機(jī)器學(xué)習(xí)深度學(xué)習(xí)中需避免的 7 個(gè)常見錯(cuò)誤與局限性

    ,并驗(yàn)證輸出結(jié)果,就能不斷提升專業(yè)技能,養(yǎng)成優(yōu)秀數(shù)據(jù)科學(xué)家的工作習(xí)慣。需避免的機(jī)器學(xué)習(xí)深度學(xué)習(xí)數(shù)據(jù)錯(cuò)誤在訓(xùn)練數(shù)據(jù)驅(qū)動(dòng)的人工智能模型時(shí),我們會(huì)遇到一些常見錯(cuò)誤和局
    的頭像 發(fā)表于 01-07 15:37 ?182次閱讀
    機(jī)器<b class='flag-5'>學(xué)習(xí)</b>和<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>中需避免的 7 個(gè)常見錯(cuò)誤與局限性

    【團(tuán)購(gòu)】獨(dú)家全套珍藏!龍哥LabVIEW視覺深度學(xué)習(xí)實(shí)戰(zhàn)課(11大系列課程,共5000+分鐘)

    深度學(xué)習(xí)技能的工程師起薪18K,3-5年經(jīng)驗(yàn)可達(dá)35-50K ? 行業(yè)分布:電子制造(38%)、汽車零部件(22%)、半導(dǎo)體(19%)、醫(yī)療器械(11%)為主要就業(yè)領(lǐng)域 本次團(tuán)購(gòu)?fù)ㄟ^(guò)整合11大系列課程
    發(fā)表于 12-04 09:28

    【團(tuán)購(gòu)】獨(dú)家全套珍藏!龍哥LabVIEW視覺深度學(xué)習(xí)實(shí)戰(zhàn)課程(11大系列課程,共5000+分鐘)

    深度學(xué)習(xí)技能的工程師起薪18K,3-5年經(jīng)驗(yàn)可達(dá)35-50K ? 行業(yè)分布:電子制造(38%)、汽車零部件(22%)、半導(dǎo)體(19%)、醫(yī)療器械(11%)為主要就業(yè)領(lǐng)域 本次團(tuán)購(gòu)?fù)ㄟ^(guò)整合11大系列課程
    發(fā)表于 12-03 13:50

    從0到1,10+年資深LabVIEW專家,手把手教你攻克機(jī)器視覺+深度學(xué)習(xí)(5000分鐘實(shí)戰(zhàn)課)

    “告別檢測(cè)系統(tǒng)能力缺陷!10+年LabVIEW視覺資深專家手把手教你:5000+分鐘高清教程(含工具、算法原理、實(shí)戰(zhàn)操作、項(xiàng)目?jī)?yōu)化全流程講解)”——從傳統(tǒng)視覺算法→深度學(xué)習(xí)建模→工業(yè)級(jí)部署"
    的頭像 發(fā)表于 12-02 08:07 ?518次閱讀
    從0到1,10+年資深LabVIEW專家,手把手教你攻克機(jī)器視覺+<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>(5000分鐘實(shí)戰(zhàn)課)

    如何深度學(xué)習(xí)機(jī)器視覺的應(yīng)用場(chǎng)景

    深度學(xué)習(xí)視覺應(yīng)用場(chǎng)景大全 工業(yè)制造領(lǐng)域 復(fù)雜缺陷檢測(cè):處理傳統(tǒng)算法難以描述的非標(biāo)準(zhǔn)化缺陷模式 非標(biāo)產(chǎn)品分類:對(duì)形狀、顏色、紋理多變的產(chǎn)品進(jìn)行智能分類 外觀質(zhì)量評(píng)估:基于學(xué)習(xí)的外觀質(zhì)量標(biāo)準(zhǔn)判定 精密
    的頭像 發(fā)表于 11-27 10:19 ?218次閱讀

    如何在FPGA部署AI模型

    如果你已經(jīng)在用 MATLAB 深度學(xué)習(xí),那一定知道它的訓(xùn)練和仿真體驗(yàn)非常絲滑。但當(dāng)模型要真正落地到 FPGA 上時(shí),往往就會(huì)卡?。涸趺窗丫W(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重優(yōu)雅地搬到硬件里?
    的頭像 發(fā)表于 09-24 10:00 ?4419次閱讀
    如何在<b class='flag-5'>FPGA</b>部署AI模型

    如何在機(jī)器視覺中部署深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

    人士而言往往難以理解,人們也常常誤以為需要扎實(shí)的編程技能才能真正掌握并合理使用這項(xiàng)技術(shù)。事實(shí)上,這種印象忽視了該技術(shù)為機(jī)器視覺(乃至生產(chǎn)自動(dòng)化)帶來(lái)的潛力,因?yàn)?b class='flag-5'>深度學(xué)習(xí)并非只屬于計(jì)算機(jī)科學(xué)家或程序員。 從頭開始:什么
    的頭像 發(fā)表于 09-10 17:38 ?897次閱讀
    如何在機(jī)器視覺中部署<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>神經(jīng)網(wǎng)絡(luò)

    Andes晶心科技推出新一代深度學(xué)習(xí)加速

    高效能、低功耗 32/64 位 RISC-V 處理器核與 AI 加速解決方案的領(lǐng)導(dǎo)供貨商—Andes晶心科技(Andes Technology)今日正式發(fā)表最新深度學(xué)習(xí)加速器 Ande
    的頭像 發(fā)表于 08-20 17:43 ?2326次閱讀

    深度學(xué)習(xí)對(duì)工業(yè)物聯(lián)網(wǎng)有哪些幫助

    深度學(xué)習(xí)作為人工智能的核心分支,通過(guò)模擬人腦神經(jīng)網(wǎng)絡(luò)的層級(jí)結(jié)構(gòu),能夠自動(dòng)從海量工業(yè)數(shù)據(jù)中提取復(fù)雜特征,為工業(yè)物聯(lián)網(wǎng)(IIoT)提供了從數(shù)據(jù)感知到智能決策的全鏈路升級(jí)能力。以下從技術(shù)賦能、場(chǎng)景突破
    的頭像 發(fā)表于 08-20 14:56 ?1021次閱讀

    自動(dòng)駕駛中Transformer大模型會(huì)取代深度學(xué)習(xí)嗎?

    [首發(fā)于智駕最前沿微信公眾號(hào)]近年來(lái),隨著ChatGPT、Claude、文心一言等大語(yǔ)言模型在生成文本、對(duì)話交互等領(lǐng)域的驚艷表現(xiàn),“Transformer架構(gòu)是否正在取代傳統(tǒng)深度學(xué)習(xí)”這一話題一直被
    的頭像 發(fā)表于 08-13 09:15 ?4181次閱讀
    自動(dòng)駕駛中Transformer大模型會(huì)取代<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>嗎?

    FPGA在機(jī)器學(xué)習(xí)中的具體應(yīng)用

    隨著機(jī)器學(xué)習(xí)和人工智能技術(shù)的迅猛發(fā)展,傳統(tǒng)的中央處理單元(CPU)和圖形處理單元(GPU)已經(jīng)無(wú)法滿足高效處理大規(guī)模數(shù)據(jù)和復(fù)雜模型的需求。FPGA(現(xiàn)場(chǎng)可編程門陣列)作為一種靈活且高效的硬件加速平臺(tái)
    的頭像 發(fā)表于 07-16 15:34 ?2883次閱讀

    嵌入式AI技術(shù)之深度學(xué)習(xí):數(shù)據(jù)樣本預(yù)處理過(guò)程中使用合適的特征變換對(duì)深度學(xué)習(xí)的意義

    ? 作者:蘇勇Andrew 使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)機(jī)器學(xué)習(xí),網(wǎng)絡(luò)的每個(gè)層都將對(duì)輸入的數(shù)據(jù)一次抽象,多層神經(jīng)網(wǎng)絡(luò)構(gòu)成深度學(xué)習(xí)的框架,可以深度理解數(shù)
    的頭像 發(fā)表于 04-02 18:21 ?1511次閱讀

    如何排除深度學(xué)習(xí)工作臺(tái)上量化OpenVINO?的特定層?

    無(wú)法確定如何排除要在深度學(xué)習(xí)工作臺(tái)上量化OpenVINO?特定層
    發(fā)表于 03-06 07:31