在赛灵思FPGA SoC平台上使用Vitis AI加速人工智能应用

作者:Vaibhav Kothari ,来源:嵌入式计算设计

Vitis 是一个用于开发软件和硬件的统一软件平台,将 Vivado 和其他组件用于 Xilinx FPGA SoC 平台,如 Zynq UltraScale+ 和 Alveo 卡。Vitis SDK的关键组件,Vitis AI运行时(VART),为在边缘和云端部署终端ML/AI应用程序提供了一个统一的接口。

机器学习中的推理是计算密集型的,需要高内存带宽和高性能计算,以满足各种终端应用的低延迟和高吞吐量需求。

Vitis 人工智能工作流程

Xilinx Vitis AI 提供了一个工作流程,使用简单的流程在 Xilinx 深度学习处理单元 (DPU) 上部署深度学习推理应用:

深度处理单元 (DPU) 是一个可配置的计算引擎,针对深度学习推理应用的卷积神经网络进行了优化,并放置在可编程逻辑 (PL) 中。DPU 包含高效且可扩展的 IP 核,可进行定制以满足许多不同应用的需求。DPU 定义自己的指令集,Vitis AI 编译器生成指令。

VITIS AI编译器以优化的方式安排指令,以获得最大的效能。

在 Xilinx Zynq UltraScale+ SoC 平台上运行任何 AI 应用程序的典型工作流程包括以下内容:

  • 模型量化

  • 模型编译

  • 模型优化(可选)

  • 构建 DPU 可执行文件

  • 构建软件应用程序

  • 集成 Vitis AI 统一 API

  • 编译和链接混合 DPU 应用程序

  • 在 FPGA 上部署混合 DPU 可执行文件

人工智能量化器

AI 量化器是一种用于量化过程的压缩工具,通过将 32 位浮点权重和激活转换为定点 INT8。它可以在不丢失模型准确信息的情况下降低计算复杂性。定点模型需要更少的内存,因此提供比浮点实现更快的执行速度和更高的电源效率。

人工智能编译器

AI 编译器将网络模型映射到高效的指令集和数据流。编译器的输入是量化的 8 位神经网络,输出是 DPU 内核 - 可执行文件将在 DPU 上运行。在这里,不支持的层需要部署在CPU中,或者可以自定义模型来替换和删除那些不支持的操作。它还执行复杂的优化,如层融合、指令调度和片上存储器的重用。

一旦我们能够执行 DPU,我们需要使用 Vitis AI 统一的 API 来初始化数据结构,初始化 DPU,在 CPU 上实现 DPU 不支持的层,并根据需要在 PL/PS 上添加预处理和后处理。

人工智能优化器

凭借其模型压缩技术,AI 优化器可以将模型复杂性降低 5-50 倍,同时对准确性的影响最小。这种深度压缩将推理性能提升到一个新的水平。我们可以实现所需的稀疏性并将运行时间缩短 2.5 倍。

AI 分析器

AI 探查器可以帮助分析推理查找导致端到端管道瓶颈的注意事项。性能分析器为设计人员提供了 DPU/CPU/内存的通用时间线。此过程不会更改任何代码,并且可以跟踪函数并进行分析。

人工智能运行时

Vitis AI 运行时 (VART) 允许应用程序使用统一的高级运行时 API 进行边缘和云部署,使其无缝且高效。一些主要功能包括:

  • 异步作业提交

  • 异步作业收集

  • C++和 Python 实现

  • 多线程和多进程执行

Vitis AI还提供DSight,DExplorer,DDump和DLet等,用于各种任务执行。

DSight & DExplorer

DPU IP 为特定内核提供了多种配置,可根据网络型号进行选择。DSight 告诉我们每个 DPU 内核的利用率百分比。它还提供了调度程序的效率,以便我们可以调整用户线程。还可以查看性能数字,例如每层和每个DPU节点的MOPS,运行时和内存带宽。

Softnautics选择 Xilinx Zynq UltraScale+ 平台进行高性能和计算部署。它提供最佳的应用处理、高度可配置的 FPGA 加速功能,以及 Vitis SDK,以加速高性能 ML/AI 推理。我们针对的一个这样的应用是用于 Covid-19 筛查的口罩检测。其目的是根据各国政府对 Covid-19 预防措施指南的要求,部署多流推理,用于对戴口罩的人进行 Covid-19 筛查并实时识别违规行为。

我们准备了一个数据集并选择了预先训练的权重来设计一个用于掩模检测和筛选的模型。我们通过TensorFlow框架训练和修剪了我们的自定义模型。这是人脸检测和面具检测的两阶段部署。这样获得的训练模型是通过前面章节中介绍的Vitis AI工作流程传递的。我们观察到推理时间的速度是 CPU 的 10 倍。Xilinx 提供不同的调试工具和实用程序,在初始开发和部署过程中非常有用。在初始部署阶段,我们没有检测到掩码和非掩码类别。我们尝试将基于 PC 的推理输出与一个名为 Dexplorer 的调试实用程序之一的输出相匹配。但是,调试模式和根导致问题进一步调试。运行量化器后,我们可以使用更大的校准图像、迭代和检测来调整输出,视频馈送的准确率约为 96%。我们还尝试使用 AI 分析器识别管道中的瓶颈,然后采取纠正措施通过各种方式消除瓶颈,例如使用 HLS 加速来计算后处理中的瓶颈。

免责声明:本文转载于网络,转载此文目的在于传播相关技术知识,版权归原作者所有,如涉及侵权,请联系小编删除(联系邮箱:service@eetrend.com )。

最新文章

最新文章