0、资料
1、正文
1.1、vitis
-
vitis是赛灵思统一软件开发平台,边云设备都可在上面开发。其有4个组成部分(从下到上):
- 1、目标平台(target platform):基本软件和基本硬件(zynq-7000, zynqUltarScale + MPsoc, Alveo, Versal ACAPs)
- 2、核心开发包(core development kit):
- 图像和命令行开发工具(vitis 编译器,vitis 分析器和vitis 调试器):构建加速算法+分析性能瓶颈+进一步调试(C/C++/open GL)
- xilinx runtime library(xrt):提供api,便于应用代码和硬件中部署的加速器进行通信
- 3、vitis 加速库:开源的性能优化的软件库,包括视频图像处理库、数学和线性代数库以及其他三方库
- 4、特定领域开发环境:caffe、tensorflow
-
vitis层级结构如下图:
-
-
vitis 加速流程如下图:
-
1.2、vitis_ai
-
vitis_ai 是基于fpga中的dpu(深度学习处理单元)统一的全栈式ai推断解决方案,其主要包含3个主要部分:
- 1、vitis_ai model zoo,支持tf、caffe和pytorch,包括自动驾驶、监控和金融等领域的已训练好的模型,可用于快速概念验证和生产。
- 2、vitis_ai development kit,提供了5种工具用于部署网络。 5种工具如下:
- ai 优化器:通过fine_turn的方法减少模型计算量,可以提高5-20倍计算速度。
- ai 量化器(vai_q_tensorflow/caffe):
- 将float32的模型转化为int8模型,甚至更低精度。
- 执行层融合和其他硬件友好型策略,加速网络推断效率。
- ai 编译器(vai_c_tensorflow/caffe,可支持model zoo和自定义模型):
- 生成在dpu ip上运行的高效代码
- 提供api,实现机器学习预处理和调用dpu进行网络前向推断。
- ai 检测器:用于分析ai性能,集成到vitis analyzer种
- ai library
- 3、deeplearning proccessing unit(dpu):高效执行前向计算。不同类型的dpu处理不同网络,如cnn/lstm/bert/mlp等。
- vitis ai 层级结构如下图:
1.3、创建加速应用
- 4个步骤:
- 1、创建基准应用以验证设计理念和检查性能;
- 2、选择合适的方法,在可编程逻辑中构建内核(RTL IP/HLS 库/vitis 库),并加速软件函数;
- 3、评测应用,找出瓶颈,迭代优化;
- 4、确定版本,部署和发布。
- 备注:硬件设计和软件设计是可以同步工作的。
1.4、总结
- vitis ai是基于vitis开发的面向机器学习的加速库,与ffmpeg等库是并列的。
- vitis ai的特点:针对深度学习开发的统一的全栈式开发工具。
- 统一:
- 1、软件:与具体算法类型无关,仅与深度学习框架有关;
- 2、硬件:端和边的dpu,不论硬件具体型号;
- 全栈式:包含模型和优化工具,而不是简单的api;
- 统一:
2、补充
-
ai library = ai library 运行时 + ai library 加速库
-
ai library 运行时:
- 基于XRT上开发的api,是基础核心,统一的开发接口;
- excute_async(), wait(), get_tensor_format(), get_input_tensor(), get_output_tensor();
-
ai library 加速库:
- 基于ai library 运行时进一步封装,可以帮助算法预处理,前向和算法后处理3个环节;
-
-
云端:指的是带有pcie插槽显卡(fpga)的机器,外部是有个CPU的(x86/arm),cpu与fpga是使用pcie连接的。
-
边端:cpu与fpga是在同个芯片上的,不是使用pcie连接的,而是使用asi连接。
-
vitis 和 vitis ai的联系:
- vitis是帮助不具备硬件经验的软件工作者进行fpga开发,而vitis_ai是针对深度学习做的高级加速库和设计工具。
- 单纯深度学习模型和软件开发讲,仅需要vitis ai不需要vitis,但是若使用dpu和平台集成,则vitis ai 需要 vitis。
-
- 任务
- 负责目标平台与主机cpu的通信
- 管理硬件资源,如内存资源
- 由XRT封装得到的其他库:
- 编译器,V++
- 分析器
- 调试器
- 任务
-
使用vitis ai 开发工具构建的代码,是“调用内核的应用代码”