在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

EdgeBoard中“活靈活現”的算子

張慧娟 ? 來源:電子發燒友網 ? 2019-12-27 22:43 ? 次閱讀

背景介紹

數據、算法和算力是人工智能技術的三大要素。其中,算力體現著人工智能(AI)技術具體實現的能力,實現載體主要有CPUGPU、FPGAASIC四類器件。CPU基于馮諾依曼架構,雖然靈活,卻延遲很大,在推理和訓練過程中主要完成其擅長的控制和調度類任務。GPU以犧牲靈活性為代價來提高計算吞吐量,但其成本高、功耗大,尤其對于推理環節,并行度的優勢并不能完全發揮。專用ASIC芯片開發周期長,資金投入大,由于其結構固化無法適應目前快速演進的AI算法。FPGA因其高性能、低功耗、低延遲、靈活可重配的特性,被廣泛地用作AI加速,開發者無需更換芯片,即可實現優化最新的AI算法,為產品贏得寶貴的時間。

由此,百度基于FPGA打造了EdgeBoard嵌入式AI解決方案,能夠提供強大的算力,支持定制化模型,適配各種不同的場景,并大幅提高設備端的AI推理能力,具有高性能、高通用、易集成等特點。本文將主要介紹EdgeBoard中神經網絡算子在FPGA中的實現。

FPGA加速的關鍵因素

FPGA實現AI加速有兩大關鍵因素,一是FPGA內部資源,二是內存訪問帶寬。FPGA內部資源主要包括LUT,FF,RAM以及DSP等,FPGA本質上是可編程邏輯電路,可用邏輯電路的多少取決于芯片內部資源,這也就決定了芯片的峰值算力和可容納的算子種類數。

深度學習中,90%以上的計算都集中在conv、dw-conv和pooling等少數的幾個算子上。所以,并不是FPGA中添加的加速算子數量越多越好,而是要注重算子的加速質量:一是用更少的資源實現更多的功能;二是提高耗時占比大的算子性能。

在實踐中,添加新算子前需要平衡該算子在網絡中所耗時間的占比以及其在FPGA中所消耗的資源。當然可以通過選取更大規模的片子來突破這種限制,但是端上設備受限于成本、功耗等因素,只能平衡多種因素選擇一個合適規模的芯片,然后通過多種設計方法和技巧來提高加速性能。本文接下來就將介紹在EdgeBoard中如何優化設計DSP資源提升算力,以及如何通過算子復用和融合技術實現對多算子的支持。

提升內存訪問帶寬是提高AI加速性能的另一關鍵因素,因為FPGA與內存的數據交互在整個計算過程中占比很高,有時甚至超過了計算本身所消耗的時間。直接提高內存訪問帶寬的方法包括提高DDR位寬、增加傳輸所用的高速接口資源、提高DMA傳輸的時鐘頻率等。另外也可以通過復用FPGA芯片上的內存資源(RAM)以及計算和傳輸交疊執行(overlap)等方法,減少與外部DDR存儲的交互,降低數據傳輸的開銷。這些設計方法較為常見,本文不做詳細介紹。

兩大關鍵技術實現四倍算力提升

FPGA中的計算主要依靠DSP實現,高效使用DSP是保證FPGA算力的關鍵。EdgeBoard FPGA中的DSP采用DSP48E2架構,如圖1所示,包括一個27-bit的預加法器(pre-adder),一個27x18的乘法器(mult)和一個48-bit的ALU。

pIYBAF4GGlqANWgQAALCxIkVvjw982.png

圖1. DSP48E2結構圖

在EdgeBoard的FPGA設計中,充分利用DSP48E2本身的特點,采用supertile和INT8移位計算技術,實現了四倍算力提升。

Supertile

一般來講,Xilinx Ultrascale系列FPGA運行的最高頻率在300MHz到400MHz之間,但DSP是FPGA中的硬核,可以運行在更高的頻率上。如圖2所示,SLB-M與DSP這樣構成的基本單元,被稱之為Supertile,FPGA內部Supertile的布局如圖3所示。Supertile技術的核心在于使DSP運行于兩倍邏輯頻率上,使整個系統算力達到倍增的效果。這主要得益于芯片結構中SLICEM與DSP位置臨近,使用專有的布線資源,延遲縮短,可以支撐SLICEM以雙倍邏輯運行的頻率向DSP提供數據。另外,神經網絡中存在著數據復用,通過filter和image數據的復用和交織,一次取數多次使用,從而減少數據的搬運次數,提升計算效率。

o4YBAF4GGoGAfPdfAAJbA5YEqE8540.png

圖2. Supertile結構

pIYBAF4GGpmAcHmZAABy2kcadTk302.png

圖3. DSP和SLICEM在FPGA中的位置

INT8移位計算技術

利用DSP48E2的結構特點,一個DSP完成兩路INT8的乘加。在進行8bit數據計算時,將a左移18位,置于輸入的高8位,低19位補0,從DSP的A端輸入,b維持在低8位,從DSP的D端輸入,如圖4所示。a與b兩者先進行累加,然后與c相乘后,結果將分別位于輸出的高(a*c)、低(b*c)兩部分,該計算過程如圖5所示。

o4YBAF4GGraAO9-5AACbwK6Y2uI962.png

圖4. DSP移位示意圖

pIYBAF4GGtCAYXkMAADFGqK_sUU377.png

圖5. 單DSP實現兩路INT8相乘


在實踐中,我們把a,b兩路作為filter數據輸入,c作為image數據輸入。這樣DSP在一個時鐘周期內就同時完成了兩路的計算,再次使算力翻倍。結合前面提到的supertile倍頻設計,兩種設計使得單個DSP的算力提升四倍。因為一次計算過程有乘、加兩個操作(operations),所以單個DSP在一個時鐘周期高效的完成了8個operations。

多算子復用

深度學習中主要有兩類運算,一類是指數運算,另一類是乘加運算。前者主要位于激活函數層,后者是深度學習涉及最多也是最基礎的運算。乘加運算根據kernel的維度不同,又可分為向量型和矩陣型,在EdgeBoard中劃分為三個運算單元,分別為向量運算單元(VPU: vector processing unit)、矩陣運算單元(MPU: matrix processing unit)和指數激活運算單元(EXP-ACT: exponential activation unit)。

向量運算單元

向量運算單元VPU負責實現dw-conv(depth-wise convolution),完成3維輸入圖像(H x W x C)和3維卷積核(K1 x K2 x C)的乘加操作。其中一個卷積核負責輸入圖像的一個通道,卷積核的數量與上一層的通道數相同,該過程如圖6所示。圖7表示的是一個通道內以kernel 2x2和stride 2為例的計算過程。

o4YBAF4GGuyASosZAACrEowH6TM007.png

圖6. dw-conv示意圖

pIYBAF4GGv6ATzBQAABniruvslY915.png

圖7. dw-conv的計算

EdgeBoard通過復用VPU一套計算資源實現了average/max pooling,elementwise add/sub,scale,batch-normalize,elementwise-mul和dropout等多種算子。

Average pooling可以看作是卷積核參數固定的dw-conv,即將求和后取平均(除以卷積核面積)的操作轉換成先乘以一個系數(1/卷積核面積)再求和。如圖8所示,該例子中卷積核大小為2x2,卷積核參數即為1/4。卷積核固定的參數可以類似于dw-conv下發卷積核的方式由SDK封裝后下發,也可以通過SDK配置一個參數完成,然后在FPGA中計算轉換,這樣節省卷積核參數傳輸的時間。另外,max-pooling算子與average pooling的計算過程類似,只需要將求均值操作換成求最大值的操作,其余挖窗、存取數等過程保持不變。

pIYBAF4GGx6AJyn3AABzKCFFkQ8256.png

圖8. Pooling復用dw-conv

Elementwise add/sub完成兩幅圖像對應元素的相加或相減,不同于dw-conv的是它有兩幅輸入圖像。如果我們控制兩幅圖像的輸入順序,將兩幅圖像按行交錯拼成一幅圖像,然后取卷積核為2x1,行stride為1,列stride為2,pad均設置成0,則按照dw-conv的計算方式就完成了elementwise的計算。通過在FPGA中設置當前像素對應的kernel值為1或-1,就可以分別實現對應elementwise add和elementwise sub兩個算子。該過程如圖9所示。

o4YBAF4GGzaAcb6mAADR-LFCzbU921.png

圖9. ew-add/sub復用dw-conv

Scale算子主要在圖像預處理時使用,將輸入圖像每一個通道的全部像素點乘以該通道對應的scale值,然后加上bias。如果我們將dw-conv的卷積核大小設成1x1,行列stride都設置成1,pad設置成0,卷積核參數值設成scale,就可以通過dw-conv完成scale算子的功能。通過分析發現,batch-normalize,elementwise-mul和dropout等算子都可以通過scale算子來實現。

二. 矩陣運算單元

矩陣運算單元MPU負責實現convolution,完成3維輸入圖像(H x W x C)和4維卷積核(N x K1 x K2 x C)的乘加操作,單個卷積核的通道數和輸入圖像的通道數相同,而卷積核的數量N決定了輸出的通道數,如圖10所示。full connection 算子實現的1維輸入數組(長度C)和2維權重(N x C)的乘加操作。將 full connection輸入數組擴展成 H x W x C, 輸出擴展成 N x K1 x K2 x C, 其中H, W, K1和K2均設置成1,這樣 full connection就可以調用convolution來實現。另外,在計算 deconv 時,通過SDK對卷積核進行分拆、重排,就可以通過調用conv來實現deconv,同樣帶來了極大的收益。

pIYBAF4GG06ASbybAADFAKeezr4763.png

圖10. Conv算子示意圖


三.指數激活運算單元
指數激活運算單元EXP-ACT實現的基礎是sigmoid,由于在FPGA中進行指數型運算比較耗資源,如何復用該計算單元就變得非常有意義。通過分析發現,可以把 tanh 和兩通道softmax 轉換成 sigmoid 的形式,這樣一個指數運算單元就支持了3種算子,實現資源利用的最大化。

多算子融合

在推理時做BatchNorm運算非常耗時,通過SDK將BatchNorm+Scale的線性變換參數融合到卷積層,替換原來的weights和bias,這樣4個算子可以融合成單個算子conv + batchnorm + scale + relu,對于dw-conv同樣如此。相對于每計算完一個算子就將數據送回內存,這種算子融合大大減少了內存的讀寫操作,有效提高了處理幀率。
此外,我們將scale、bias和relu為代表的激活函數層放到各算子之后的鏈路上,然后統一送到DMA傳輸模塊,如圖11所示。這不僅使得各算子復用了這些邏輯,節省了大量片內資源,也使得各算子都可以具備這些功能,且都能以最大帶寬進行DMA傳輸。在實踐中,我們將這些功能做成可選項,由軟件根據當前網絡算子的需要進行選擇,在節省資源的同時,既保證了通用性,又兼顧了靈活性。

o4YBAF4GG2mAbygEAABF6Py2tNQ409.png

圖11. EdgeBoard內部結構和鏈路圖


福利
據可靠小道消息:EdgeBoard正在打折中,歷史最低價,降價1000元,有興趣可以看看:https://aim.baidu.com/product/5b8d8817-9141-4cfc-ae58-640e2815dfd4

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

    關注

    1974

    文章

    3656

    瀏覽量

    324394
收藏 人收藏

    評論

    相關推薦

    AI邊緣計算平臺EdgeBoard如何實現靈活、快速部署?

    EdgeBoard計算卡產品可以分為FZ9、FZ5、FZ3三個系列,是基于Xilinx XCZU9EG、XAZU5EV、XAZU3EG研發而來,分別具有高性能,視頻硬解碼,低成本等特點,同時還有不同的DDR容量版本。
    發表于 03-26 14:46 ?3840次閱讀

    意大利AD F10 低音揚聲器測評:聲音活靈活現 AD幫你實現

    `在發燒音響系統,超低音是必不可少的重要單元;在簡單的音改,車主如果不想拆改原車的喇叭,那么加多一個超低音,也會讓原本平庸的原車音響系統變得緊湊、有力,表現豐富了起來,因此市面上低音產品眾多
    發表于 08-12 10:09

    EdgeBoard FZ5 邊緣AI計算盒及計算卡

    科技攜手百度,推出系列高性能及高性價比EdgeBoard 邊緣AI計算卡/計算盒,助力AI項目落地???b class='flag-5'>靈活適配海量的且不斷迭代的AI模型,并提供強大的運行算力。開發者可以采用EdgeBoard邊緣AI計算盒
    發表于 08-31 14:12

    【米爾百度大腦EdgeBoard邊緣AI計算盒試用連載】第六篇 EdgeBoard的浮點運算能力

    的運算速度比較,有的是最近測試的,有的則是以前測試的結果,直接引用,沒有復測。 從分析可以看到,酷睿I7的運算能力確實強大,是EdgeBoard運算能力的30倍左右,然而EdgeBoard并未使用其
    發表于 04-29 12:12

    邊緣檢測的幾種微分算子

    一、邊緣檢測邊緣檢測的幾種微分算子:一階微分算子:Roberts、Sobel、Prewitt二階微分算子:Laplacian、Log/Marr非微分算子:Canny一階微分
    發表于 07-26 08:29

    EdgeBoard神經網絡算子在FPGA的實現方法是什么?

    FPGA加速的關鍵因素是什么?EdgeBoard神經網絡算子在FPGA的實現方法是什么?
    發表于 09-28 06:37

    EdgeBoard是什么?有何作用

    EdgeBoard是基于FPGA打造的嵌入式AI解決方案,能夠提供強大的算力,并支持定制化模型,適配各種不同的場景,并大幅提高設備的AI推理能deeplab力,具有高性能、高通用、易集成等特點
    發表于 12-14 08:45

    LOG算子在FPGA的實現

    介紹了一種高斯拉普拉斯LOG算子在FPGA的實現方案!并通過對一幅BMP圖像的處理!論證了在FPGA實現的LOG算子的圖像增強效果
    發表于 05-16 17:12 ?50次下載
    LOG<b class='flag-5'>算子</b>在FPGA<b class='flag-5'>中</b>的實現

    星球大戰SpheroBB-8機器人試玩 跟一個機器人交互的感覺也是非常溫暖和奇妙的

    這大概是我第一眼看到Sphero BB-8時腦中浮現的畫面,在無聲無息的暗影下,他那顆活靈活現的小腦袋仿佛能裝下一萬個賣萌的畫面。
    的頭像 發表于 02-28 11:33 ?2847次閱讀

    EdgeBoard為程序員打造的一款深度學習加速套件

    摘要: 簡介 市面上基于嵌入式平臺的神經網絡加速平臺有很多,今天給大家帶來是百度大腦出品的EdgeBoard。按照官網文檔 的介紹,EdgeBoard是基于Xilinx Zynq
    發表于 07-16 21:46 ?1372次閱讀

    AI助力,老片修復一直在路上

    這樣的畫面大大地滿足了網友們的好奇心。視頻一經發布,在24小時內就有了將近50萬的點贊量,10萬+次的轉發和接近3萬的留言。修復后的視頻把當時的北京城演繹得活靈活現
    的頭像 發表于 06-03 10:53 ?3005次閱讀

    液晶廣告機的三大主要功能及優勢詳細說明

    1.廣告機打破傳統廣告的模式,產品展示活靈活現。廣告機作為一種新型的媒介,可以24小時不間斷的播放精彩的視頻及音頻,能引導消費者主動過來了解觀察,隨時都存在成交機會。
    發表于 02-04 08:00 ?0次下載

    自定義算子開發

    一個完整的自定義算子應用過程包括注冊算子、算子實現、含自定義算子模型轉換和運行含自定義op模型四個階段。在大多數情況下,您的模型應該可以通過使用hb_mapper工具完成轉換并順利部署
    的頭像 發表于 04-07 16:11 ?2825次閱讀
    自定義<b class='flag-5'>算子</b>開發

    EdgeBoard使用指南

    電子發燒友網站提供《EdgeBoard使用指南.pdf》資料免費下載
    發表于 09-15 10:56 ?0次下載
    <b class='flag-5'>EdgeBoard</b>使用指南

    百度大腦EdgeBoard介紹

    對于開發者而言,EdgeBoard是一款面向各個層次的AI開發者的硬件平臺,可以直接運載神經網絡模型,提供強大的運行算力,并具備模型剪枝和量化加速的功能。它具備強大的計算能力和靈活的擴展性,可以支持
    的頭像 發表于 05-15 09:50 ?549次閱讀
    百度大腦<b class='flag-5'>EdgeBoard</b>介紹
    主站蜘蛛池模板: 性 色 黄 一级| 在线不卡一区| 大黄网站在线观看| 欧美日韩伦理| 精品午夜久久影视| 超级香蕉97视频在线观看一区| 把小嫩嫩曰出白浆| 爱逼色| 亚洲欧美视频在线播放| 国产男女怕怕怕免费视频| 亚洲网色| 日本三级网址| 久久狠狠色噜噜狠狠狠狠97| 国产1区2区三区不卡| 午夜国产大片免费观看| 美女大黄三级视频在线观看| 99久久国产综合精品国| 伊人久久亚洲综合天堂| 四虎影视精品| 欧美激情91| 国产精品主播在线观看| 日本免费网站在线观看| 久久久免费精品视频| 你懂的在线免费视频| 国产一级特黄生活片| 97久久人人| 黄色日比| 欧美激情二区三区| 五月婷婷免费视频| 免费爱爱视频| 欧美色天使| 电影一区二区三区| 奇米奇米| 在线精品国产成人综合第一页| www亚洲成人| 人人免费人人专区| 成人国产在线视频| 欧美黄色片在线| 中文字幕一区二区三区四区| 亚洲国产日韩精品怡红院| 免费在线观看一级毛片|