赞
踩
背景:深鉴科技的DNNDK,是一个基于xilinx FPGA的SDK端的深度学习开发工具包,能够快速的实现深度学习的硬件化。
目的:了解深鉴科技DNNDK内容。
DNNDK™ (Deep Neural Network Development Kit)是深鉴科技面向AI异构计算平台 DPU (Deep learning Processor Unit,深度学习专用处理器)自主研发的原创深度学习SDK, 涵盖了神经网络Inference阶段模型压缩、编译优化和高效运行时支持等各种功能需求,为 DPU平台各种深度学习应用开发和部署提供的一套高效全栈式解决方案。
DNNDK组成:
1. 模型压缩 (主机)
2. 模型编译 (主机)
3. DPU编程开发 (主机或开发板)
4. 混合编译 (开发板)
5. 运行 (开发板)
深度神经网络(DNN,Deep Neural Network)模型通常存在大量的信息冗余,从模型的参数数量到参数的表示精度都存在缩减的空间。依托世界领先的神经网络模型压缩领域研究 成果,深鉴科技研发了深度压缩工具DECENT(Deep Compression Tool),创新性的结合了剪枝(Prune)、量化(Quantization)等一系列压缩技术,在保证基本不损失算法精度的前提下可将网络模型的计算量和规模压缩数倍至数十倍,从而实现DPU平台深度学习应用更优的性能、更高的能效比、更低的系统内存带宽需求。
编译器前端( Parser)主要处理网络模型的分析与转换,解析输入网络模型的拓扑结构并将其为 DNNC内部与深度学习框架生成的计算图用IR表示。
中端为优化器 (Optimizer),它基于内部IR实施各种编译优化遍 ,包括融合计算图中不同节点间的操作 、高效调度指令 、充分复用 DPU片上数据等 。
代码生成器 (Code-generator)为DNNC编译后端, 主要负责把经过中端优化后的计算图IR映射成为高效运行在DPU上的指令流 。
DPU Kernel
将神经网络实现为FPGA上实体(可以看作IPcore)。
DPU Kernel可以理解为在DPU平台上部署的平台上部署的一个深度学习网络模型的实 体。每个神经网络对应 一个DPU汇编文件,通过调用DPU运行N2Cube时的dpuLoadKernel()成为一个可运行实体。 DPU的运行时将其加载到特定内存空间并为其分配硬件资源。 然后通过调用dpuCreateTask()将其实例化为多个DPU Task。
DPU Task
DPU Task是DPU Kernel的一个运行实例 。每个DPU Task中处理一个具体的计算任务。 每个DPU Task之间的内存空间相互独立,使得我们可以通过多线程来运行多个DPU Task,以此来提高系统效率和吞吐量 。
DPU Node
DPU Node是DPU上运行网络模型的一个组成部分 。每个 DPU Node都有其对应的输入、出以及其对应的输入、出以及相关参数。 DPU Node依靠其名称来索引,我们可以依靠其名称来索引,我们可以通过 DNNDK提供的 API来获取每个 Node的相关信息 的相关信息 。
DPU Tensor
DPU Tensor是多维数据的集合 ,用来存储网络在运行过程中的数据信息。 我们可以通过DNNDK提供的 API获取某个 Tensor对应的属性,如 Height, Width,Channel以及地址信息。
DPU运行时主要包含四部分:加载器 (Loader)、性能 、性能分析器( Profiler)、库( Library)和 DPU驱动( DPU Driver)。
下载安装SDSOC 2018.3以上版本的软件。
安装依赖项:
- $ apt-get install -y --force-yes build-essential autoconf libtool
- libopenblasdev libgflags-dev libgoogle-glog-dev libopencv-dev
- libprotobuf-dev protobufcompiler libleveldb-dev liblmdb-dev libhdf5-dev
- libsnappy-dev libboost-all-dev libyaml-cpp-dev libssl-dev lsb-core
根据开发平台安装DNNDK主机工具,将下载的DNNDK开发工具解压,在host_x86目录包含了DECENT和DNNC工具,使用脚本进行安装
$ sudo ./install.sh <baord_name>
其中是支持的开发板名,暂且使用ZCU102。
- $ sudo ./install.sh ZCU102
- Inspect system enviroment...
- [system version]
- Description: Ubuntu 16.04.6 LTS
- 16.04
- /usr/local/cuda/version.txt not exist !
- Begin to install DeePhi DNNDK tools(CPU version) on host ...
- cp: omitting directory 'cuda_8.0.61_GA2_cudnn_v7.0.5'
- cp: omitting directory 'cuda_9.0_cudnn_v7.0.5'
- cp: omitting directory 'cuda_9.1_cudnn_v7.0.5'
- Complete installation successfully.
下载DNNDK在SDSOC中的开发包:https://www.xilinx.com/products/design-tools/ai-inference/ai-developer-hub.html#edge
开发包中包含有四个目录:
- deephi_dnndk_sdsoc_2018.3
- |-- dnndk_prebuilt
- | |-- bin
- | |-- bootfiles_zcu102
- | |-- bootfiles_zcu104
- | |-- lib
- | |-- resnet50
- | |-- scripts
- | '-- video
- |-- dnndk_ws
- | |-- dpucore_zu7
- | |-- dpucore_zu9
- | |-- gstsdxfacedetect
- | |-- gstsdxgesturedetect
- | |-- gstsdximgclassifier
- | |-- gstsdxpedestriandetect
- | |-- gstsdxtrafficdetect
- | |-- include
- | |-- lib
- | '-- resnet50
- '-- host_x86
- |-- install.sh
- |-- models
- '--pkgs
dnnphi_prebuilt:该目录包含预置的可执行文件和脚本用于运行例程:
deephi_ws:DPU例程的工作目录
host_x86:包含深度压缩工具(DECENT)、深度神经网络编译器工具(DNNC)和训练好的浮点resnet50 Caffe模型。
安装DNNDK包:
运行install.sh文件可以自动安装host_x86中的工具到本地系统中,可以指定需要安装的平台。
sudo ./install
根据自己的开发板下载官方的reVISION平台,注意,除了DNNDK中自带的ZCU102和ZCU104开发板外,其他的官方平台都不能直接运行DNNDK。
4.4 安装DPU IP
vivado中默认没有集成DPU IP,需要先从Xilinx官网下载
zcu102-dpu-trd-2018-2-1903.zip
如果要商用必须购买。
参考内容:
[1] http://www.deephi.com/technology/dnndk
[2] ug1327-dnndk-user-guide.pdf
[3] ug1331-dnndk-sdsoc-ug.pdf
[4] pg338-dpu.pdf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。