背景:深鑒科技的DNNDK,是一個(gè)基于Xilinx FPGA的SDK端的深度學(xué)習(xí)開發(fā)工具包,能夠快速的實(shí)現(xiàn)深度學(xué)習(xí)的硬件化。
目的:了解深鑒科技DNNDK內(nèi)容。
參考內(nèi)容:
http://www.deephi.com/technology/dnndk
deephi_dnndk_1.10_betadocs user Guide
本篇目錄
1. 概覽
1.1 DNNDK基于什么?
1.2DP-8000開發(fā)板
2. DNNDK Framework
3. DPU應(yīng)用部署
3.1模型壓縮
3.2模型編譯
4. DPU編程
4.1DPU Kernel
4.2DPU Task
4.3DPU Node
4.4DPU Tensor
5. 混合編譯
6. 運(yùn)行
7. 重要信息
7.1 板子是否為xilinx的開發(fā)板?
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等)實(shí)現(xiàn)了多個(gè)DPU開發(fā)平臺(tái)(2018年將對(duì)外提供深鑒自主研發(fā)的對(duì)外提供深鑒自主研發(fā)的 DPU Soc芯片) ,DNNDK對(duì)所有 DPU開發(fā)平臺(tái)向用 戶提供統(tǒng)一的工具鏈和戶編程接口 APIs。
1.2DP-8000開發(fā)板
運(yùn)用zynq7020芯片,開發(fā)板與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),深度壓縮工具:提供剪枝和定點(diǎn)化運(yùn)算。
Deep Neural Network Compiler (DNNC), 神經(jīng)網(wǎng)絡(luò)編譯器:將網(wǎng)絡(luò)算法編譯到DPU平臺(tái)高效運(yùn)行。運(yùn)用DECENT后的caffe網(wǎng)絡(luò)模型作為輸入。
Deep Neural Network Assembler (DNNAS), 神經(jīng)網(wǎng)絡(luò)集成器:將DPU指令流會(huì)編程標(biāo)準(zhǔn)的ELF二進(jìn)制文件
Neural Network Runtime (N2Cube), 神經(jīng)網(wǎng)絡(luò)運(yùn)行,運(yùn)行時(shí)支持環(huán)境,神經(jīng)網(wǎng)絡(luò)的加載,資源管理,調(diào)度。N2Cube核心組件包括四個(gè)部分 : DPU驅(qū)動(dòng)程序 (Driver),加載器 (Loader)、性能分析器 (Profiler)及編程開發(fā)庫編程開發(fā)庫 (Library)。
DPU Simulator and Profiler. 深度學(xué)習(xí)處理單元模擬器。simulator用于驗(yàn)證二進(jìn)制指令流,只是深鑒科技內(nèi)部使用,沒有對(duì)外發(fā)布。
3DPU應(yīng)用部署
1. 模型壓縮 (主機(jī))
2. 模型編譯 (主機(jī))
3. DPU編程開發(fā) (主機(jī)或開發(fā)板)
4. 混合編譯 (開發(fā)板)
5. 運(yùn)行 (開發(fā)板)
3.1模型壓縮
DECENT工具:
3.2模型編譯
編譯器前端( Parser)主要處理網(wǎng)絡(luò)模型的分析與轉(zhuǎn)換,解析輸入網(wǎng)絡(luò)模型的拓?fù)浣Y(jié)構(gòu)并將其為 DNNC內(nèi)部與深度學(xué)習(xí)框架生成的計(jì)算圖用IR表示。
中端為優(yōu)化器 (Optimizer),它基于內(nèi)部IR實(shí)施各種編譯優(yōu)化遍 ,包括融合計(jì)算圖中不同節(jié)點(diǎn)間的操作 、高效調(diào)度指令 、充分復(fù)用 DPU片上數(shù)據(jù)等 。
代碼生成器 (Code-generator)為DNNC編譯后端, 主要負(fù)責(zé)把經(jīng)過中端優(yōu)化后的計(jì)算圖IR映射成為高效運(yùn)行在DPU上的指令流 。
4DPU編程
4.1DPU Kernel
將神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)為FPGA上實(shí)體(可以看作IPcore)。DPU Kernel可以理解為在DPU平臺(tái)上部署的平臺(tái)上部署的一個(gè)深度學(xué)習(xí)網(wǎng)絡(luò)模型的實(shí) 體。每個(gè)神經(jīng)網(wǎng)絡(luò)對(duì)應(yīng) 一個(gè) DPU匯編文件,通過調(diào)用DPU運(yùn)行N2Cube時(shí)的dpuLoadKernel()成為一個(gè)可運(yùn)行實(shí)體。 DPU的運(yùn)行時(shí)將其加載到特定內(nèi)存空間并為其分配硬件資源。 然后通過調(diào)用 dpuCreateTask()將其實(shí)例化為多個(gè)DPU Task。
4.2DPU Task
DPU Task是 DPU Kernel的一個(gè)運(yùn)行實(shí)例 。每個(gè) DPU Task中處理一個(gè)具體的計(jì)算任務(wù)。每個(gè) DPU Task之間的內(nèi)存空間相互獨(dú)立,使得我們可以通過多線程來運(yùn)行多個(gè) DPU Task,以此來提高系統(tǒng)效率和吞吐量 。
4.3DPU Node
DPU Node是DPU上運(yùn)行網(wǎng)絡(luò)模型的一個(gè)組成部分 。每個(gè) DPU Node都有其對(duì)應(yīng)的輸入、出以及其對(duì)應(yīng)的輸入、出以及相關(guān)參數(shù)。DPU Node依靠其名稱來索引,我們可以依靠其名稱來索引,我們可以通過 DNNDK提供的 API來獲取每個(gè) Node的相關(guān)信息 的相關(guān)信息 。
4.4DPU Tensor
DPU Tensor是多維數(shù)據(jù)的集合 ,用來存儲(chǔ)網(wǎng)絡(luò)在運(yùn)行過程中的數(shù)據(jù)信息。我們可以通過DNNDK提供的 API獲取某個(gè) Tensor對(duì)應(yīng)的屬性,如 Height, Width,Channel以及地址信息。
5混合編譯
6運(yùn)行
DPU運(yùn)行時(shí)主要包含四部分:加載器 (Loader)、性能 、性能分析器( Profiler)、庫( Library)和 DPU驅(qū)動(dòng)( DPU Driver)。
7重要信息
7.1 板子是否為xilinx的開發(fā)板?
不是Xilinx的開發(fā)板,只是包含Xilinx的FPGA芯片7z020,開發(fā)板是深鑒科技的開發(fā)板DP-8000,但是有DPU及相應(yīng)工具的情況下可以運(yùn)用Xilinx的開發(fā)板來實(shí)現(xiàn)。
7.2 源碼是否公開?
僅僅公開了主函數(shù)和.h頭文件,并沒有公開驅(qū)動(dòng)和IPcore的源碼。
相當(dāng)于對(duì)DPU的定義封裝到安裝文件和二進(jìn)制文件中,無法看到源碼。
責(zé)任編輯:lq
- 神經(jīng)網(wǎng)絡(luò)
-
Xilinx
+關(guān)注
關(guān)注
73文章
2184瀏覽量
125229 -
驅(qū)動(dòng)程序
+關(guān)注
關(guān)注
19瀏覽量
49097
原文標(biāo)題:深鑒科技DNNDK概覽
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
IQM 宣布 Resonance 量子云平臺(tái)重大升級(jí),推出全新軟件開發(fā)工具包
AI開發(fā)工具分類與功能
云計(jì)算開發(fā)工具包的功能
極海發(fā)布G32R5xx SDK,簡化MCU軟件遷移
Labview聲音和振動(dòng)工具包示例文件Sound Level
最新Simplicity SDK軟件開發(fā)工具包發(fā)布
基于EasyGo Vs工具包和Nl veristand軟件進(jìn)行的永磁同步電機(jī)實(shí)時(shí)仿真

云計(jì)算開發(fā)工具包括什么
FPGA加速深度學(xué)習(xí)模型的案例
FPGA仿真工具包軟件EasyGo Vs Addon介紹

評(píng)論