<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加速神經網絡

OpenFPGA ? 來源:OpenFPGA ? 2024-01-24 09:51 ? 次閱讀

之前介紹的項目《優秀的 Verilog/FPGA開源項目介紹(十四)- 使用FPGA實現LeNet-5 深度神經網絡模型》最后我們分析了,純FPGA實現神經網絡的缺點,以及現在FPGA廠家的加速方案,這里引用一下:

到底純FPGA適不適合這種大型神經網絡的設計?這個問題其實我們不適合回答,但是FPGA廠商是的實際操作是很有權威性的,現在不論是Intel還是Xilinx都沒有在自己傳統的FPGA上推廣AI,都是在基于FPGA的SoC上推廣(Vitis和OpenVINO,前者Xilinx后者Intel),總結來看就是:純 RTL 硬件設計不是AI的好選擇。特別是對于大規模網絡,權重和中間結果需要存儲在外部存儲器中。并且數據迭代器會更加復雜。設計周期長,AI相關領域迭代速度快,綜上以上幾點,可以很容易給你們指引一條道路。

目前主流的解決方案就是使用通用或專用處理器來做控制工作,讓硬件來執行計算(加速的概念),今天就介紹兩個針對以上解決方案的開源項目,這兩個項目是用FPGA進行硬件加速的必備項目。

AI算法流程

在進行項目介紹前,我們先介紹一下軟件架構和工具集。這個后面會影響理解。

一個完整的深度學習框架中主要分為下面幾個流程:

6951b9b8-ba50-11ee-8b88-92fbcf53809c.png

有一些是我們不太關心的部分(對于FPGA實現應用),即數據收集等,所以上訴流程再簡單分為幾個主要部分,即訓練(training)和推理(inference)、部署(deployment)。

訓練(Training)

使用訓練模型(Caffe、TensorFlow、MxNET、ONNX等)根據訓練數據得到相關的參數。舉個例子,我現在想要設備識別貓和狗,我首先需要收集貓和狗的圖片(這些圖片稱為訓練數據集(training dataset)),但是這些數據集在進行訓練前要有標簽(即每張照片是狗,那張照片是貓),選擇好訓練模型后,將上訴數據給訓練模型進行訓練,訓練模型不是萬能的,雖然能通過訓練不斷的優化參數,但是在訓練完還不一定能達到你想要的識別率(比如100張圖片有50張能識別),接下來就是通過優化參數,讓另外50張錯的也變成對的。這整個過程就稱之為訓練(Traning)。

推理(Inference)

這個過程比較簡單,就是把上面訓練好的模型,去識別不是訓練集里的圖片(這種圖片就叫做現場數據(live data)),如果對這些現場數據的識別也非常NICE,那么證明你的網絡訓練的是非常好的,如果不是特別好,就需要把訓練數據集增加,重復這一過程,直到現場數據也達到比較好的效果。把訓練好的模型拿出來進行現場實驗推理的過程,稱為推理(Inference)。

部署(deployment)

部署的理解很簡單,就是經過上面兩個步驟的模型應用,把它放在某個硬件平臺上運行,這個過程稱之為部署(deployment)。

其實各大廠家推出自己的架構/工具都是基于上訴流程,不同點就是會針對自家的硬件做細節優化。

現在常見的模型推理部署框架有很多,比如:英特爾的OpenVINO,英偉達TensorRT,谷歌的Mediapipe,Xilinx Vitis。

Intel FPGA OpenVINO

介紹

OpenVINO是Intel推出的用于優化和部署 AI 推理的開源工具包。

695c6afc-ba50-11ee-8b88-92fbcf53809c.png

提升計算機視覺、自動語音識別、自然語言處理和其他常見任務中的深度學習性能

使用通過 TensorFlow、PyTorch 等流行框架訓練的模型

減少資源需求并在從邊緣到云的一系列英特爾平臺上高效部署

6965a496-ba50-11ee-8b88-92fbcf53809c.png

來源:知乎@火狐貍

上圖就是OpenVINO的組成,針對第一節的 AI算法流程 理解起來不是很難。其中,模型優化器是線下模型轉換,推理引擎是部署在設備上運行的AI負載。

因為OpenVINO還有針對自己CPU的架構,沒有對FPGA部分過多介紹,所以一些細節會在下一個項目介紹。

視頻介紹

關于OpenFPGA在FPGA方面的加速應用,可以查看下面的兩個官方中文視頻介紹,這里就不再贅述。

Xilinx FPGA Vitis AI

2019年10月,Xilinx正式發布了統一開發軟件平臺Vitis。Vitis平臺無需用戶深入掌握硬件專業知識,即軟件和算法自動適配到Xilinx的硬件架構。Xilinx Vitis AI是針對自家硬件平臺推出的針對AI模型的硬件實現。Vitis AI 提供的工具鏈能在數分鐘內完成優化、量化和編譯操作,在賽靈思器件上高效地運行預先訓練好的AI模型。

介紹

6971e44a-ba50-11ee-8b88-92fbcf53809c.png

上圖就是Vitis AI的整體架構,主要分為AI Model Zoo、AI 優化器、AI 量化器、AI 編譯器、AI 配置器、AI 庫、XRT、以及核心DPU。

整個流程和上圖類似,下面針對每個部分簡單介紹(Intel的類似)。

AI Model Zoo

這個就是最流行框架 Pytorch、Tensorflow、Tensorflow 2 和 Caffe 的現成深度學習模型的集合,也就是我們可以簡單及快速的進行AI模型的訓練和優化。

AI 優化器、AI 量化器、AI 編譯器

69817f40-ba50-11ee-8b88-92fbcf53809c.png

AI 優化器功能簡介

這三個作用就是將訓練好的模型進行優化,其中AI 優化器是在犧牲很少的精度情況下降模型的復雜度;AI 量化器的作用其實和FPGA的結構有關(FPGA無法處理浮點數據),AI 量化器就是將32 位浮點權值和激活量轉換為 INT8 這樣的定點數據。

69872576-ba50-11ee-8b88-92fbcf53809c.png

AI 量化器功能簡介

AI 編譯器的作用就是將 AI 模型進行高級優化,主要包括指令集、數據流、層融合和指令排程等,并可盡量重復使用片上內存。

6995fc2c-ba50-11ee-8b88-92fbcf53809c.png

AI 編譯器功能簡介

AI 配置器、AI 庫

69a190be-ba50-11ee-8b88-92fbcf53809c.png

AI 配置器功能簡介

AI 配置器主要是輔助開發人員對AI模型的方案實施的效率和利用率進行分析的性能分析器。

AI 庫功能簡介

AI庫主要功能就是將DPU和上層進行鏈接(基于帶有統一 API 的 Vitis AI Runtime 構建)。

XRT、DPU

這兩個是Xilinx的“王牌”了,其中DPU大家應該不陌生,是DNNDK的升級版本(DNNDK官方應該已經不維護了)。

XRT

69d4b02a-ba50-11ee-8b88-92fbcf53809c.png

Xilinx 運行時庫 (XRT) 是 Vitis 統一軟件平臺和 Vitis AI 開發環境的一個重要組成部分,其可幫助開發人員繼續使用熟悉的編程語言(如 C/C++、Python 以及高層次特定域框架 TensorFlow 和咖啡等)在 Xilinx 靈活應變的平臺上部署。

主要功能如下圖所示:

DPU

6a14d592-ba50-11ee-8b88-92fbcf53809c.png

詳細介紹:PG338 PG366

Xilinx深度學習處理器單元 (DPU) 是一個專門用于卷積神經網絡的可編程引擎。該單元包含寄存器配置模塊、數據控制器模塊和卷積計算模塊。在 DPU 中部署的卷積神經網絡包括 VGG、ResNet、GoogLeNet、YOLO、SSD、MobileNet 以及 FPN 等。

6a2de0aa-ba50-11ee-8b88-92fbcf53809c.png

6a46dd1c-ba50-11ee-8b88-92fbcf53809c.png

總結

今天介紹了兩個最重要的FPGA加速神經網絡的開源項目,而且經過幾年的發展越發穩定,總結一下就是,如果想用FPGA加速神經網絡就快點去看看吧,這里在簡單推薦一下這兩個項目的入門開發板。

695c6afc-ba50-11ee-8b88-92fbcf53809c.png

Intel C5P 開發板

Intel OpenVINO入門開發板

Xilinx Kria KV260開發板

最后,還是感謝各個大佬開源的項目,讓我們受益匪淺。后面有什么感興趣方面的項目,大家可以在后臺留言或者加微信留言,今天就到這,我是爆肝的碎碎思,期待下期文章與你相見。

審核編輯:湯梓紅

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

    關注

    1608

    文章

    21367

    瀏覽量

    594696
  • 神經網絡
    +關注

    關注

    42

    文章

    4591

    瀏覽量

    99297
  • Xilinx
    +關注

    關注

    70

    文章

    2129

    瀏覽量

    119652
  • 開源
    +關注

    關注

    3

    文章

    3026

    瀏覽量

    41779

原文標題:想用FPGA加速神經網絡,這兩個開源項目你必須要了解

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    脈沖耦合神經網絡FPGA上的實現誰會?

    脈沖耦合神經網絡(PCNN)在FPGA上的實現,實現數據分類功能,有報酬。QQ470345140.
    發表于 08-25 09:57

    【PYNQ-Z2申請】基于PYNQ的卷積神經網絡加速

    項目名稱:基于PYNQ的卷積神經網絡加速試用計劃:申請理由:本人研究生在讀,想要利用PYNQ深入探索卷積神經網絡的硬件加速,在PYNQ上實現圖像的快速處理項目計劃:1、在PC端實現Ln
    發表于 12-19 11:37

    基于賽靈思FPGA的卷積神經網絡實現設計

    作者:Nagesh Gupta 創始人兼 CEOAuviz Systems Nagesh@auvizsystems.com憑借出色的性能和功耗指標,賽靈思 FPGA 成為設計人員構建卷積神經網絡
    發表于 06-19 07:24

    卷積神經網絡如何使用

    卷積神經網絡(CNN)究竟是什么,鑒于神經網絡在工程上經歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發表于 07-17 07:21

    【案例分享】ART神經網絡與SOM神經網絡

    今天學習了兩個神經網絡,分別是自適應諧振(ART)神經網絡與自組織映射(SOM)神經網絡。整體感覺不是很難,只不過一些最基礎的概念容易理解不清。首先ART神經網絡是競爭學習的一個代表,
    發表于 07-21 04:30

    如何設計BP神經網絡圖像壓縮算法?

    (Digital Signal Processor)相比,現場可編程門陣列(Field Programma-ble Gate Array,FPGA)在神經網絡的實現上更具優勢。DSP處理器在處理時采用指令順序執行
    發表于 08-08 06:11

    如何移植一個CNN神經網絡FPGA中?

    訓練一個神經網絡并移植到Lattice FPGA上,通常需要開發人員既要懂軟件又要懂數字電路設計,是個不容易的事。好在FPGA廠商為我們提供了許多工具和IP,我們可以在這些工具和IP的基礎上做
    發表于 11-26 07:46

    基于FPGA神經網絡的性能評估及局限性

    FPGA實現神經網絡關鍵問題分析基于FPGA的ANN實現方法基于FPGA神經網絡的性能評估及局限性
    發表于 04-30 06:58

    何用ARM和FPGA搭建神經網絡處理器通信方案?

    某人工神經網絡FPGA處理器能夠對數據進行運算處理,為了實現集數據通信、操作控制和數據處理于一體的便攜式神經網絡處理器,需要設計一種基于嵌入式ARM內核及現場可編程門陣列FPGA的主
    發表于 05-21 06:35

    如何構建神經網絡?

    原文鏈接:http://tecdat.cn/?p=5725 神經網絡是一種基于現有數據創建預測的計算系統。如何構建神經網絡?神經網絡包括:輸入層:根據現有數據獲取輸入的層隱藏層:使用反向傳播優化輸入變量權重的層,以提高模型的預測
    發表于 07-12 08:02

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

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

    如何使用stm32cube.ai部署神經網絡?

    何用stm32cube.ai簡化人工神經網絡映射?如何使用stm32cube.ai部署神經網絡?
    發表于 10-11 08:05

    請問一下fpga加速神經網絡為什么要用arm核呢

    請問一下fpga加速神經網絡為什么要用arm核呢?用其他的不行嗎
    發表于 07-25 14:37

    FPGA去實現大型神經網絡的設計

    1、加速神經網絡的必備開源項目  到底純FPGA適不適合這種大型神經網絡的設計?這個問題其實我們不適合回答,但是FPGA廠商是的實際操作是很
    發表于 10-24 16:10

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

    電子發燒友網站提供《FPGA加速神經網絡的矩陣乘法.pdf》資料免費下載
    發表于 09-15 14:50 ?0次下載
    <b class='flag-5'>FPGA</b><b class='flag-5'>加速</b><b class='flag-5'>神經網絡</b>的矩陣乘法
    亚洲欧美日韩精品久久_久久精品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>