Vitis AI学习笔记(1):Vitis AI 开发工具包概述

作者:falwat
原文链接:https://blog.csdn.net/falwat/article/details/104951145
** 声明:文章翻译自UG1414 (v1.0) Vitis AI User Guide的第一章, 仅供学习参考。 **

Vitis AI 开发工具包概述
Vitis AI开发环境由Vitis AI开发套件组成,用于在Xilinx硬件平台(包括边缘设备和Alveo加速卡)上进行AI推理。 它由优化的IP内核,工具,库,模型和示例设计组成。 设计时考虑到了高效率和易用性,充分发挥了Xilinx FPGA和ACAP上AI加速的全部潜力。 通过抽象出底层FPGA和ACAP器件的复杂性,它使不具备FPGA知识的用户可以轻松地开发深度学习推理应用程序。

特点

Vitis AI 包含如下特点:

  • 支持主流框架和能够执行各种深度学习任务的最新模型。
  • 提供一组全面的预优化模型,这些模型可随时部署在Xilinx设备上。
  • 提供功能强大的量化器,支持模型量化,校准和微调。对于高级用户,我们还提供了可选的AI优化器,该优化器可以将模型修剪多达90%。
  • AI Profiler提供了逐层分析以帮助解决瓶颈。
  • AI库提供统一的高级C ++和Python API,以实现从边缘到云的最大可移植性。
  • 定制高效且可扩展的IP核,从吞吐量,延迟和功耗的角度满足您对许多不同应用程序的需求。
  • 组件
    深度学习处理单元(DPU)
    DPU是为深度神经网络优化的可编程引擎。 它是一组可预先设置在硬件上的可参数化IP内核,不需要放置和布线。 DPU随Vitis AI专用指令集一起发布,从而可以有效实现许多深度学习网络。

    Vitis AI为嵌入式设备(如Xilinx Zynq-7000,Zynq UltraScale+ MPSoC)和Alveo 卡(如U50,U200,U250和U280)提供了一系列不同的DPU配置选项,从而在吞吐量, 延迟,可扩展性和功耗上实现独特的差异性和灵活性。

    AI Model Zoo
    AI Model Zoo包含优化的深度学习模型,以加快Xilinx平台上深度学习推理的部署。 这些模型涵盖了不同的应用程序,包括ADAS / AD,视频监控,机器人技术,数据中心等。您可以开始使用这些经过预训练的模型来体验深度学习加速。

    更多信息参见:https://github.com/Xilinx/Vitis-AI/tree/master/AI-Model-Zoo

    AI 优化器
    借助世界领先的模型压缩技术,我们可以将模型复杂度降低5倍至50倍,而对精度的影响最小。 深度压缩将AI推理的性能提升到一个新的水平。

    AI 优化器需要商业许可才能运行。 请联系您的Xilinx销售代表以获取更多信息。

    AI 量化器
    通过将32位浮点权重和激活函数转换为INT8之类的定点数,AI 量化器可以降低计算复杂度,而不会损失预测精度。 定点数网络模型需要较少的内存带宽,因此比浮点模型提供更快的速度和更高的电源效率。

    AI 编译器
    AI编译器将AI模型映射到高效的指令集和数据流。 它还执行复杂的优化,例如层融合,指令调度以及尽可能多地重用片上存储器。

    AI 分析器
    AI 分析器可以帮助分析和可视化AI应用程序,查找瓶颈,并帮助在不同设备之间分配计算资源:

  • 易用。 不必修改代码,也不需要重新编译程序。 可以跟踪函数调用和时间消耗。
  • 收集硬件信息,包括CPU / DPU /内存。
  • AI 库
    Vitis AI库是一组与DPU进行高效的AI推理的高级库和API。Vitis AI库通过封装许多高效和高质量的神经网络,提供了易于使用的统一界面。 即使对于不了解深度学习或FPGA的用户,这也简化了深度学习神经网络的使用。 Vitis AI库使您可以将更多精力放在其应用程序的开发上,而不是基础硬件上。

    AI Runtime
    Vitis AI运行时使应用程序可以针对云计算和边缘计算使用统一的高级运行时API。 因此,使云到边缘的部署无缝且高效。

    Vitis AI运行时API功能包括:

  • 将作业异步提交给加速器
  • 从加速器异步收集作业
  • C ++和Python实现
  • 支持多线程和多进程执行
  • For 云计算
    云加速器具有多个独立的计算单元(CU),可以将其编程为在不同的AI模型上工作,或者在相同的AI模型上工作以实现最大吞吐量。

    云运行时引入了新的AI资源管理器,以简化跨多个FPGA资源的应用扩展。 该应用程序不再需要指定要使用的特定FPGA卡。 应用程序可以请求单个计算单元或单个FPGA,并且AI资源管理器返回与用户请求兼容的空闲资源。 AI资源管理器可与Docker容器以及同一主机上的多个用户一起使用。

    For 边缘计算
    下图显示了运行时框架(称为N2 Cube)。 N2 Cube基于Xilinx运行时(XRT)。 对于基于DPU的旧式Vivado,它与底层Linux DPU驱动程序(而不是XRT)进行交互,以进行DPU调度和资源管理。(这里不是很好理解!)

    N2 Cube运行时提供了一套全面的高级C ++ / Python编程接口,可以灵活地满足边缘方案的各种要求。 有关边缘DPU高级编程的更多详细信息,请参见第9章。 N2Cube的特点如下:

  • 支持多线程和多进程DPU应用程序部署。
  • 支持并行运行的多个模型以及运行时零开销的动态切换。
  • 自动DPU多核调度,以实现更好的工作负载平衡。
  • 可选的灵活性,可在运行时动态指定DPU内核对DPU任务的亲和力。
  • 基于优先级的DPU任务调度,同时遵守DPU核心亲和力。
  • 通过DPU代码和多线程DPU应用程序中的参数共享来优化内存使用。
  • 轻松适应任何POSIX兼容的OS或RTOS(实时操作系统)环境,例如QNX,VxWorks,Integrity。
  • 易于DPU调试和性能分析。
  • 深度学习处理单元(DPU)
    DPU旨在加速在各种计算机视觉应用中广泛采用的深度学习推理算法,例如图像/视频分类,语义分段和对象检测/跟踪。

    一个有效的张量级指令集旨在支持和加速各种流行的卷积神经网络,例如VGG,ResNet,GoogLeNet,YOLO,SSD和MobileNet等。 DPU可扩展以适应各种Xilinx Zynq-7000和Zynq UltraScale + MPSoC从边缘到云的情况,从而满足许多不同应用程序的需求。

    DPU-V1 for Cloud
    DPU-V1(以前称为xDNN)IP核是高性能的通用CNN处理引擎(PE)。

    关键特点如下:

  • 工作在700 MHz的96x16 DSP脉动阵列(Systolic Array)
  • 基于指令的编程模型,具有简单性和灵活性,可以表示各种自定义神经网络图。
  • 由UltraRAM组成的9 MB片上张量存储器
  • 分布式片上滤波器缓存
  • 利用外部DDR存储器存储过滤器和张量数据
  • 流水线Scale,ReLU和合并块,可实现最大效率
  • 独立的Pooling / Eltwise执行块,用于与卷积层并行处理
  • 硬件辅助切片引擎可细分张量以适合片上张量存储器和流水线指令调度
  • 标准的AXI-MM和AXI4-Lite顶层接口可简化系统级集成
  • 可选的流水线RGB张量卷积引擎可提高效率
  • DPU-v2 for Edge
    DPU-v2 IP已针对Xilinx MPSoC器件进行了优化。 该IP可以作为模块集成在所选Zynq-7000 SoC和Zynq UltraScale + MPSoC的可编程逻辑(PL)中,并直接连接到处理系统(PS)。 可配置版本DPU IP与Vitis AI一起发布。 DPU是用户可配置的,并提供了几个参数,可以指定这些参数来优化PL资源或自定义启用的功能。 有关更多信息,请参见:Zynq DPU v3.1 IP Product Guide(PG338)。

    Vitis AI 组件
    Vitis AI 1.0版本使用容器技术来发布AI软件。 该版本包含以下组件:

  • 工具容器
  • 运行时容器(For MPSoc)
  • 公共GitHub例程 https://github.com/Xilinx/Vitis-AI
  • 直接从github上下载或克隆速度慢, 建议从gitee.com上下载

  • Vitis AI Model Zoo (https://github.com/Xilinx/Vitis-AI/tree/master/AI-Model-Zoo)
  • 工具容器

    组成:

  • 通过dockerhub发布的容器: https://hub.docker.com/r/xilinx/vitis-ai/tags
  • 统一编译器流程
  • DPUV2的编译器流程(嵌入式)
    DPUV1的编译器流程(云)

  • 预先构建的conda环境以运行框架:
  • conda activate vitis-ai-caffe
    conda activate vitis-ai-tensorflow

  • Alveo 运行时工具
  • 运行时容器(For MPSoc)

  • 内容:
  • PetaLinux SDK和交叉编译工具链
    VAI board packages based on 2019.2 release
    运行不同网络的例程

    模型和overlaybins https://www.xilinx.com/cn/vitis-ai

    最新文章