背景:深鑒科技的DNNDK,是一個基于Xilinx FPGA的SDK端的深度學習開發工具包,能夠快速的實現深度學習的硬件化。
目的:了解深鑒科技DNNDK內容。
參考內容:
http://www.deephi.com/technology/dnndk
deephi_dnndk_1.10_betadocs user Guide
本篇目錄
1. 概覽
1.1 DNNDK基于什么?
1.2DP-8000開發板
2. DNNDK Framework
3. DPU應用部署
3.1模型壓縮
3.2模型編譯
4. DPU編程
4.1DPU Kernel
4.2DPU Task
4.3DPU Node
4.4DPU Tensor
5. 混合編譯
6. 運行
7. 重要信息
7.1 板子是否為xilinx的開發板?
7.2 源碼是否公開?
正文
1概覽
DNNDK (Deep Neural Network Development Kit) - DeePhi deep learning SDK, is designed as an integrated framework, which aims to simplify & accelerate DL (Deep Learning) applications development and deployment on DeePhi DPU (Deep Learning Processing Unit) platform. (Click DNNDK for more information.)
1.1 DNNDK基于什么?
深鑒科技基于 XILINX FPGA芯片 (包括 ZYNQ-7020,ZU2,ZU3,ZU9, KU115等)實現了多個DPU開發平臺(2018年將對外提供深鑒自主研發的對外提供深鑒自主研發的 DPU Soc芯片) ,DNNDK對所有 DPU開發平臺向用 戶提供統一的工具鏈和戶編程接口 APIs。
1.2DP-8000開發板
運用zynq7020芯片,開發板與FPGA芯片是不一樣的。
A complete set of solid optimization toolchains, covering compression, compilation and runtime
Lightweight standard C/C++ programming APIs
Easy-to-use & flat/gentle learning curve
2DNNDK Framework
DNNDK組成:
DEep ComprEssioN Tool (DECENT),深度壓縮工具:提供剪枝和定點化運算。
Deep Neural Network Compiler (DNNC), 神經網絡編譯器:將網絡算法編譯到DPU平臺高效運行。運用DECENT后的caffe網絡模型作為輸入。
Deep Neural Network Assembler (DNNAS), 神經網絡集成器:將DPU指令流會編程標準的ELF二進制文件
Neural Network Runtime (N2Cube), 神經網絡運行,運行時支持環境,神經網絡的加載,資源管理,調度。N2Cube核心組件包括四個部分 : DPU驅動程序 (Driver),加載器 (Loader)、性能分析器 (Profiler)及編程開發庫編程開發庫 (Library)。
DPU Simulator and Profiler. 深度學習處理單元模擬器。simulator用于驗證二進制指令流,只是深鑒科技內部使用,沒有對外發布。
3DPU應用部署
1. 模型壓縮 (主機)
2. 模型編譯 (主機)
3. DPU編程開發 (主機或開發板)
4. 混合編譯 (開發板)
5. 運行 (開發板)
3.1模型壓縮
DECENT工具:
3.2模型編譯
編譯器前端( Parser)主要處理網絡模型的分析與轉換,解析輸入網絡模型的拓撲結構并將其為 DNNC內部與深度學習框架生成的計算圖用IR表示。
中端為優化器 (Optimizer),它基于內部IR實施各種編譯優化遍 ,包括融合計算圖中不同節點間的操作 、高效調度指令 、充分復用 DPU片上數據等 。
代碼生成器 (Code-generator)為DNNC編譯后端, 主要負責把經過中端優化后的計算圖IR映射成為高效運行在DPU上的指令流 。
4DPU編程
4.1DPU Kernel
將神經網絡實現為FPGA上實體(可以看作IPcore)。DPU Kernel可以理解為在DPU平臺上部署的平臺上部署的一個深度學習網絡模型的實 體。每個神經網絡對應 一個 DPU匯編文件,通過調用DPU運行N2Cube時的dpuLoadKernel()成為一個可運行實體。 DPU的運行時將其加載到特定內存空間并為其分配硬件資源。 然后通過調用 dpuCreateTask()將其實例化為多個DPU Task。
4.2DPU Task
DPU Task是 DPU Kernel的一個運行實例 。每個 DPU Task中處理一個具體的計算任務。每個 DPU Task之間的內存空間相互獨立,使得我們可以通過多線程來運行多個 DPU Task,以此來提高系統效率和吞吐量 。
4.3DPU Node
DPU Node是DPU上運行網絡模型的一個組成部分 。每個 DPU Node都有其對應的輸入、出以及其對應的輸入、出以及相關參數。DPU Node依靠其名稱來索引,我們可以依靠其名稱來索引,我們可以通過 DNNDK提供的 API來獲取每個 Node的相關信息 的相關信息 。
4.4DPU Tensor
DPU Tensor是多維數據的集合 ,用來存儲網絡在運行過程中的數據信息。我們可以通過DNNDK提供的 API獲取某個 Tensor對應的屬性,如 Height, Width,Channel以及地址信息。
5混合編譯
6運行
DPU運行時主要包含四部分:加載器 (Loader)、性能 、性能分析器( Profiler)、庫( Library)和 DPU驅動( DPU Driver)。
7重要信息
7.1 板子是否為xilinx的開發板?
不是Xilinx的開發板,只是包含Xilinx的FPGA芯片7z020,開發板是深鑒科技的開發板DP-8000,但是有DPU及相應工具的情況下可以運用Xilinx的開發板來實現。
7.2 源碼是否公開?
僅僅公開了主函數和.h頭文件,并沒有公開驅動和IPcore的源碼。
相當于對DPU的定義封裝到安裝文件和二進制文件中,無法看到源碼。
責任編輯:lq
-
神經網絡
+關注
關注
42文章
4808瀏覽量
102822 -
Xilinx
+關注
關注
73文章
2182瀏覽量
124377 -
驅動程序
+關注
關注
19文章
859瀏覽量
48856
原文標題:深鑒科技DNNDK概覽
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
AI開發工具分類與功能
云計算開發工具包的功能
極海發布G32R5xx SDK,簡化MCU軟件遷移
最新Simplicity SDK軟件開發工具包發布
基于EasyGo Vs工具包和Nl veristand軟件進行的永磁同步電機實時仿真

FPGA仿真工具包軟件EasyGo Vs Addon介紹

評論