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