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

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

3天內不再提示

基于FPGA的神經網絡加速硬件和網絡設計的協同

電子設計 ? 來源:AI加速 ? 作者:AI加速 ? 2020-11-21 10:36 ? 次閱讀

引言

很久沒有看基于FPGA神經網絡實現的文章了,因為神經網絡加速設計做的久了就會發現,其實架構都差不多。大家都主要集中于去提高以下幾種性能:FPGA算力,網絡精度,網絡模型大小。FPGA架構也差不多這幾個模塊:片上緩存,卷積加速模塊,pool模塊,load,save,指令控制模塊。硬件架構上并不是太難,難的反而是軟件編譯這塊。因為其要去適應不同的網絡模型,還要能兼容FPGA硬件的變化,同時要為客戶提供一個容易操作的接口。這些在目前情景下還比較困難。首先是FPGA硬件的變化太多,各個模塊可配參數的變化(比如卷積模塊并行數的變化),另外一個是網絡模型多種多樣以及開源的網絡模型平臺也很多(tensorflow,pytorch等)。網絡壓縮也有很多種算法,這些算法基本上都會導致網絡模型精度的降低。一般基于FPGA的網絡加速設計都會強調模型被壓縮了多少以及FPGA上可以跑得多快,卻很少集中于去改善精度。

這篇文獻從概念上提出了硬件和網絡的協同設計,是很好的一個思路。因為之前神經網絡加速硬件設計和網絡壓縮是分開的,只是在網絡壓縮的時候盡可能考慮到硬件的特點,讓網絡模型更加適合硬件架構。這篇論文其實也是在做這樣類似的工作,我并不認為它真正的實現了硬件和網絡設計的協同(雖然其標榜自己如此)。但是它確實給我們提供了一個新的研究思路:如何從一開始就設計一個能夠適用于硬件的網絡。好的,廢話不多說,來看論文。

1. 來自作者的批判

發表論文,總是要先去總結以往論文的優缺點,然后指出其中不足,凸顯自己的優勢。這篇文章也花費了很大篇幅來批判了過去研究的不足??偨Y起來有以下幾點:

1) 過去的研究都是用一些老的網絡,比如VGG,resnet,alexnet等,這些網絡已經落伍了,市場上已經不怎么用了;

2) 過去用的數據集也小,比如CIFAR10這類,包含的圖片種類和數量都太少,不太適合商業應用;

3) 壓縮老的網絡的技術手段不再適用于最新的網絡,比如像squeezeNet網絡,它就比alexnet網絡小50倍,但是能達到和alexnet一樣的精度;

4) 以往的類似resnet的網絡,有skip連接的,并不適合在FPGA上部署,因為增加了數據遷移;

5) 以往網絡的卷積核較大,如3x3,5x5等,也不適合硬件加速;

6) 以前網絡壓縮集中于老的那些網絡,這些網絡本身就有很大的冗余,所以壓縮起來很容易,而最新的網絡比如ShuffleNet等壓縮起來就沒有那么容易了,但是這樣的報道很少;

總之,意思就是之前的文章都撿軟柿子捏,而且比較落后了。那么我們來看看在這樣狂妄口氣之下的成果如何。

2. shuffleNetV2到DiracDeltNet

shuffleNetV2是新發展出來的一個神經網絡,它的網絡模型中參數更?。ū萔GG16小60倍),但是精度只比VGG16低2%。shuffleNet不再像resnet將skip連接的數據求和,而是skip連接的數據進行concat,這樣的操作降低了加法操作。Skip連接可以擴展網絡的深度和提高深層網絡精度。但是加法skip不利于FPGA實現,一個是加法消耗資源和時間,另外一個是skip數據增加了遷移時間。Concat連接也和加法skip有相同的功能,增加網絡深度和精度。

作者對shuffleNetV2網絡結構進行了更有利于FPGA部署的微調。有以下三個方面:

1) 將所有3x3卷積(包括3x3depth-wise卷積)都替換為shift和1x1卷積。這樣替換是能夠降低feature map數據的遷移,比如3x3的卷積每個圖像數據要使用3次,而1x1只需要搬移一次,降低了邏輯復雜性,也提高了運算速度。Shift操作是將某個范圍的pixel移動到中間作為結果,這樣的操作減少了乘法運算次數。這種替換會導致精度降低,但是可以減少FPGA運算次數。

2) 將3x3的maxpooling操作降低為2x2的。

3) 調整了channel的順序來適應FPGA。




3. 量化

為了進一步降低網絡參數量,作者采用了DoReFa-Net網絡的量化方式,對全精度權重進行了量化。同時作者還對activation進行了量化。量化結果如下:


精度損失很小。

文獻中使用了很多對網絡修改的微調技術,細節很多,可以看出對這樣一個已經很少參數的網絡來說,要進一步壓縮確實要花費很大功夫。這可能不太具有普遍性。這些微調應該會花費很多時間和精力。

4. 硬件架構

硬件主要實現的操作很少,只有一下幾種:
1)1x1卷積
2)2x2的ma-pooling
3)shift
4)shuffle和concat

所以硬件架構上也變得很簡潔,文章中說兩個人用HLS只做了一個月。


使用資源很少。


看以下和其他人的結果對比:


結論

這篇論文在shuffleNet網絡的基礎上,基于FPGA的特點進行了網絡修改。包括網絡結構和量化,最終的精度都高于以往的幾個網絡。結果還是不錯的,只是這樣手動微調網絡并不是很具有普遍性,而且涉及到很多微調技術,也不一定適合每個網絡。但是作者確實提供了一個思路:如何去設計一個能夠用于FPGA的網絡,而且還可以保證很好的精度。

文獻

1. Yifan Yang, Q.H., Bichen Wu, Tianjun Zhang, Liang Ma, Giulio Gambardella, Michaela Blott, Luciano Lavagno, Kees Vissers, John Wawrzynek, Kurt Keutzer, Synetgy Algorithm-hardware Co-design for ConvNet Accelerators on Embedded FPGAs. arXiv preprint, 2019.

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

    關注

    1608

    文章

    21367

    瀏覽量

    594687
  • 神經網絡
    +關注

    關注

    42

    文章

    4591

    瀏覽量

    99295
收藏 人收藏

    評論

    相關推薦

    如何用FPGA加速神經網絡

    到底純FPGA適不適合這種大型神經網絡的設計?這個問題其實我們不適合回答,但是FPGA廠商是的實際操作是很有權威性的,現在不論是Intel還是Xilinx都沒有在自己傳統的FPGA上推
    的頭像 發表于 01-24 09:51 ?638次閱讀
    如何用<b class='flag-5'>FPGA</b><b class='flag-5'>加速</b><b class='flag-5'>神經網絡</b>

    卷積神經網絡的優點

    卷積神經網絡的優點? 卷積神經網絡(Convolutional Neural Network,CNN)是一種基于深度學習的神經網絡模型,在圖像識別、語音識別、自然語言處理等領域有著廣泛的應用。相比
    的頭像 發表于 12-07 15:37 ?3289次閱讀

    基于FPGA的RBF神經網絡硬件實現

    電子發燒友網站提供《基于FPGA的RBF神經網絡硬件實現.pdf》資料免費下載
    發表于 10-23 10:21 ?0次下載
    基于<b class='flag-5'>FPGA</b>的RBF<b class='flag-5'>神經網絡</b>的<b class='flag-5'>硬件</b>實現

    淺析深度神經網絡壓縮與加速技術

    深度神經網絡是深度學習的一種框架,它是一種具備至少一個隱層的神經網絡。與淺層神經網絡類似
    的頭像 發表于 10-11 09:14 ?446次閱讀
    淺析深度<b class='flag-5'>神經網絡</b>壓縮與<b class='flag-5'>加速</b>技術

    FPGA加速神經網絡的矩陣乘法

    電子發燒友網站提供《FPGA加速神經網絡的矩陣乘法.pdf》資料免費下載
    發表于 09-15 14:50 ?0次下載
    <b class='flag-5'>FPGA</b><b class='flag-5'>加速</b><b class='flag-5'>神經網絡</b>的矩陣乘法

    《 AI加速器架構設計與實現》+第一章卷積神經網絡觀后感

    對應的神經網絡有哪些,也看到了自己在k210中用到的FAST RCNN和RestNet18分類網絡,需要保證硬件實現和算法一致,這樣才事半功倍,否則,可能會差別比較大。對于神經網絡算法
    發表于 09-11 20:34

    人工神經網絡和bp神經網絡的區別

    人工神經網絡和bp神經網絡的區別? 人工神經網絡(Artificial Neural Network, ANN)是一種模仿人腦神經元網絡結構和功能的計算模型,也被稱為
    的頭像 發表于 08-22 16:45 ?3590次閱讀

    卷積神經網絡和深度神經網絡的優缺點 卷積神經網絡和深度神經網絡的區別

    深度神經網絡是一種基于神經網絡的機器學習算法,其主要特點是由多層神經元構成,可以根據數據自動調整神經元之間的權重,從而實現對大規模數據進行預測和分類。卷積
    發表于 08-21 17:07 ?2913次閱讀

    卷積神經網絡的介紹 什么是卷積神經網絡算法

    卷積神經網絡的介紹 什么是卷積神經網絡算法 卷積神經網絡涉及的關鍵技術 卷積神經網絡(Convolutional Neural Network,CNN)是一種用于圖像分類、物體識別、語
    的頭像 發表于 08-21 16:49 ?1532次閱讀

    卷積神經網絡的基本原理 卷積神經網絡發展 卷積神經網絡三大特點

    卷積神經網絡的基本原理 卷積神經網絡發展歷程 卷積神經網絡三大特點? 卷積神經網絡的基本原理 卷積神經網絡(Convolutional Ne
    的頭像 發表于 08-21 16:49 ?1621次閱讀

    卷積神經網絡概述 卷積神經網絡的特點 cnn卷積神經網絡的優點

    卷積神經網絡概述 卷積神經網絡的特點 cnn卷積神經網絡的優點? 卷積神經網絡(Convolutional neural network,CNN)是一種基于深度學習技術的
    的頭像 發表于 08-21 16:41 ?2137次閱讀

    卷積神經網絡的應用 卷積神經網絡通常用來處理什么

    卷積神經網絡的應用 卷積神經網絡通常用來處理什么 卷積神經網絡(Convolutional Neural Network,簡稱CNN)是一種在神經網絡領域內廣泛應用的
    的頭像 發表于 08-21 16:41 ?4365次閱讀

    卷積神經網絡原理:卷積神經網絡模型和卷積神經網絡算法

    一。其主要應用領域在計算機視覺和自然語言處理中,最初是由Yann LeCun等人在20世紀80年代末和90年代初提出的。隨著近年來計算機硬件性能的提升和深度學習技術的發展,CNN在很多領域取得了重大的進展和應用。 一、卷積神經網絡模型 (一)卷積層(Convolution
    的頭像 發表于 08-17 16:30 ?1043次閱讀

    什么是神經網絡?為什么說神經網絡很重要?神經網絡如何工作?

    神經網絡是一個具有相連節點層的計算模型,其分層結構與大腦中的神經元網絡結構相似。神經網絡可通過數據進行學習,因此,可訓練其識別模式、對數據分類和預測未來事件。
    的頭像 發表于 07-26 18:28 ?2608次閱讀
    什么是<b class='flag-5'>神經網絡</b>?為什么說<b class='flag-5'>神經網絡</b>很重要?<b class='flag-5'>神經網絡</b>如何工作?

    基于 FPGA 的目標檢測網絡加速電路設計

    了對 HLS 的理解,開始初步掌握使用 HLS 進行并行性編程的方法。我們學習了 PYNQ 框架,在 PYNQ-Z2 上實現神經網絡加速 電路,有了軟硬件協同開發的經歷。除此之外,我們
    發表于 06-20 19:45
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>