本文转载自:亦梦云烟的博客
Xilinx在2012年推出了针对其FPGA产品的开发套件Vivado,彻底的完善了FPGA硬件开发堆栈的基础,Vivado相关的参考资料可以查看笔者的ZYNQ学习之路系列笔记。随着Xilinx每一代芯片架构的发展,Vivado也在不断的增加新功能,比如针对嵌入式开发的SDSoC,为数据中心部署开发的SDAccel,随后,机器学习的爆发式发展,Xilinx又推出了AI推断的DPU(来自收购的深鉴)以及相关工具链DNNDK。虽然针对FPGA硬件的开发难度已经降低了不少,但使用这些工具链需要对硬件的设计具备比较强的知识背景。
2019年10月,Xilinx正式发布了统一开发软件平台Vitis。Vitis平台无需用户深入掌握硬件专业知识,即软件和算法自动适配到Xilinx的硬件架构。
直接使用现成的开发板,在Vitis上开发软件进行算法加速、部署到硬件平台变得相对很容易。但仅仅学习这些无异于一个纯软件开发的工程师,如此做对自身的知识体系并没有太多的提升。本系列笔记旨在更深入的探索Vitis以及Vitis内部所使用到的技术,本系列主要针对深度学习部署进行探索,比如自定义自己的深度学习硬件平台,深度学习模型量化、模型编译、TVM自动调优,多DPU核异构系统的调度计算等等。
那么,让我开始Vitis AI之旅吧~
Vitis统一软件平台简介
Vitis 统一软件平台包括:
Vitis重要组件
Vitis AI 开发环境
Vitis AI 开发环境是一个专门的开发环境,用于在 Xilinx 嵌入式平台、Alveo 加速卡或云端 FPGA 实例上加速 AI 推断。Vitis AI 开发环境不仅支持业界领先的深度学习框架,如 Tensorflow 和 Caffee ,而且还提供全面的 API 进行剪枝、量化、优化和编译训练过的网络,从而可为您部署的应用实现最高的 AI 推断性能。
向所有用户开放一系列来自最流行框架 Pytorch、Tensorflow、Tensorflow 2 和 Caffe 的现成深度学习模型。AI Model Zoo 提供了优化且可重训练的 AI 模型,借助它们,您可在所有 Xilinx 平台上实现更快的部署、性能加速和产品化。
AI优化
在对精度影响极小的情况下,将模型的复杂性降低 5 至 50 倍。深度压缩可将您的 AI 推断性能提升到一个新的层次。
AI 量化器
通过将 32 位浮点权值和激活量转换为 INT8 这样的定点,AI 量化器可在不影响预测精度的情况下,降低计算复杂度。定点网络模型需要的内存带宽更少,因此比浮点网络模型速度更快,电源效率更高。
AI 编译器
将 AI 模型映射至高效指令集及数据流。还可执行高级优化任务,如层融合和指令排程等,并可尽量重复使用片上内存。
AI 配置器
性能分析器有助于程序员深入分析 AI 推断实现方案的效率和利用率。
Vitis 加速库
性能优化的开源库,提供开箱即用的加速,对于采用 C、C++ 或 Python 编写的现有应用而言,代码修改极少,甚至不需要修改代码。按原样利用特定领域的加速库,通过修改适应您的需求,或者在您的自定义加速器中用作算法构建块。
Vitis™ 统一软件平台包括一组广泛的、性能优化的开源库,这些库提供了即开即用的加速功能,并且对现有应用实现最小化代码更改或零更改。
可扩展、灵活度高
所有开发人员都可通过 GitHub 访问 Vitis 加速器库,而且这些库可在所有 Xilinx 平台间扩展。使用这些优化的库开发应用并在边缘、本地或云的 Xilinx 平台间进行无缝部署,无需重新实现加速应用
为了针对 Xilinx 可为应用带来的优势快速进行原型设计和评估,您可将其用作即插即用加速器,在用户应用中作为 API 直接调用,满足计算机视觉及图像处理、定量金融、数据库和数据分析等多个工作负载需求。
要为您的应用设计自定义加速器,可将 Vitis 库函数用作优化的算法构建块,对其进行修改,以满足您的特定需求,也可将其用作参考来完全设计您自己的加速器。选择您需要的灵活性!
将特定域 Vitis 库与 Vitis AI 库或 Vitis AI 开发套件预先优化的深度学习模型相结合,不仅可加速整个应用,而且还可达到整个系统级的功能及性能目标。
Vitis Core开发套件
完整的图形开发工具和命令行开发工具,其中包括 Vitis 编译器、分析器和调试器,用于构建、分析性能瓶颈问题,调试加速算法,使用 C、C++ 或 OpenCL 进行开发。在您自己的 IDE 中使用这些特性,或者使用独立的 Vitis IDE。
Xilinx RunTime 库
Xilinx 运行时 (XRT) 可促进应用代码(运行在嵌入式 ARM 或 x86 主机上)与加速器(部署在基于 PCIe 的 Xilinx 加速卡、基于 MPSoC 的嵌入式平台或 ACAP 的可重构部分上)之间的通信。它包括用户空间库和 API、内核驱动、电路板实用程序和固件。
Vitis 目标平台
Vitis 目标平台为 Xilinx 平台定义了基本软硬件架构及应用环境,包括外部存储接口、自定义输入输出接口和软件运行时。
参考资料
[1] Vitis 官方文档:Vitis平台