0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

闲谈Vitis AI|DPU在UltraScale平台下的软硬件流程(1)

XILINX开发者社区 来源:XILINX开发者社区 作者:陆禹帆 2022-12-21 10:15 次阅读

前言

本篇中,我想跳过一些细枝末节, 先简单介绍 AMD Xilinx Vitis AI 在 Zynq 这个硬件加速平台下软硬件开发的基本思路和流程,把各个开发流程和工具分开,帮助刚刚接触Vitis/Vitis AI的同学快速找到学习和开发的方向。

为什么不用其他NPU平台?

在使用Xilinx DPU来对我们的AI应用进行加速之前,我们应该明确一个问题:为什么我们需要使用Zynq 这样一个硬件结构,而不是使用一些专用NPU芯片 (比如NV的嵌入式开发板) 来进行加速?

我个人认为, FPGA最大的优势还是其对于特定应用的定制化和可重构能力(这是FPGA相对于其他类型芯片最大的不同,同时也是FPGA最具魅力的地方)。这种特性使得我们可以集中有限的硬件资源来动态的配置各种定制化应用,实现局部的高性能,达到四两拨千斤的效果。

举个例子:如果我们的在运行AI算法时,如果CPU执行预处理速度太慢,我们就可以自己设计自己的专用硬件来执行缩放,裁剪和卷积操作。如果我们的视频编解码太慢,我们也可以使用专用的IP来进行编解码。同样的功能,在非FPGA的平台上使用CPU来执行时往往速度感人

搭建一个AI加速系统的必要步骤

正因如此,在使用 Vitis AI 的时候,我们其实是想要定制自己的硬件结构和AI模型的。要达成这个目标,我们会有一连串的问题需要解决:

1. 首先,硬件加速系统的第一步当然就是加速模块设计(verilog或者HLS),没有加速模块,那我们的硬件加速的系统就是空谈。在Vitis AI中,主要是指DPU和预处理等加速模块。这个部分的重点是数字前端设计和算法设计。

2. 完成硬件设计之后,我们会遇到第二个问题,部署硬件模块。与任何的SoC设计类似,如果我们想要在软件系统中正确的调度我们的子模块,我们在硬件底层就需要把合理地分配线路、内存、带宽,正确地设计时钟、地址、中断等等。这个部分需要着重考虑的是SoC硬件系统设计。

3. 由于Vitis AI需要在linux环境下使用,因此仅仅完成硬件设计还是不够的。我们必须要想办法让一个 linux系统运行在我们的硬件平台上,识别到我们的加速模块。也就是说我们需要针对我们的硬件平台编译一个Linux系统。其实核心就是提前告诉操作系统,你需要从哪里取地址,执行什么样的操作。在这个阶段就进入了嵌入式工程师的领域。

4. 光有系统还不行,我们需要为linux下的APP提供一套环境。和Standalone程序有所不同,在Linux系统中,我们通常不会在使用直接访问地址的方式来操作加速器(除非加速器的操作和地址设计非常简单)。因此开发一个中间层和驱动层也是有必要的。在Vitis AI中,在这个部分由AMD Xilinx提供,我们在实际的流程中几乎看不到这个部分。(如果你想要开发一个私有硬件加速框架,就需要考虑这部分了)。

5. 当我们完成了上面所有的硬件,软件,平台和环境之后。我们其实才到最后一步:AI应用的开发。在上一步我们已经通过驱动和接口层把软件和硬件进行了隔离。因此,在这个阶段我们本质上就是在一块专用NPU芯片上开发AI程序。总的来说,我们大概需要解决以下几个问题:

训练模型(在模型设计阶段就需要考虑算子是否能够被硬件支持的问题)

转换模型。通常加速器是不能直接运行tf之类模型的(有些平台可以直接运行,可能是由驱动中间层实现的隐式的转换,个人水平有限此处不展开了讨论),因此我们需要把AI网络转换成硬件能够运行的执行文件。其实就是把模型转换成加速器硬件看得懂的一组操作。在Vitis AI 中,我们需要把tf pt等框架的模型转换成xmodel文件。

实现具体的加速程序,也就是在我们的程序中正确的调用各种加速器,来加速我们的APP。

其实我们问题总结一下,我们就得到了Vitis AI下搭建一个系统所需要的基本思路(如图所示)。

325757b8-8056-11ed-8abf-dac502259ad0.jpg

注意:此处框图列出的思路和实际的步骤有一点区别,为了大家理解我做了一点简化,此处仅仅体现我们从零开始搭建一个系统的通用思想。实际的步骤和工具的使用会在后续博客中详细的介绍。

327bd3d6-8056-11ed-8abf-dac502259ad0.jpg

这里其实还是需要强调下,虽然我列出了很多步骤,但是并不是说每一步都需要我们独立完成。在真实的项目中,整个开发流程通常需要一个团队来完成。上图是AMD Xilinx的官方的图,展示了 Vitis AI流程下需要的工程师角色和开发的方向。这些角色的工作其实是相对独立的。通常而言,我们只需要在官方工程的基础上,根据我们的需求来重新开发我们需要的部分就好。例如,如果你仅需要修改AI模型,我们完全可以跳过硬件设计部分,直接使用AMD Xilinx帮我们设计好的平台。如果你只需要改硬件,你也可以使用官方的程序,跳过AI训练的步骤。

关于AMD Xilinx的软件工具,开发环境

下面我们来聊一聊VitisAI需要的开发工具和开发环境。对于Vitis AI开发来说,我主要用到的开发工具就是 Vivado (HLS) / Petalinux / Vitis / Vitis AI。由于工具的名字比较多,这里我把对应的工具和对应的开发方向做一个简单的介绍,方便大家快速找到自己需要的工具。

硬件

如果你是一个传统FPGAer,那一定不需要我来介绍Vivado这个工具了。Vivado作为来设计数字电路和硬件系统的专用开发工具,基本上是人手必备了。我我唯一想要提醒的是,基于Vitis的流程来开发你的加速器时,我更推荐使用Linux开发环境,而不是Window。一个经典的 Ubuntu 16.4.4 系统作为开发环境,可以节约我们很多宝贵的时间。

329a4050-8056-11ed-8abf-dac502259ad0.jpg

Vivado的BlockDesign是很Vitis流程中很常用的功能之一

嵌入式、硬件、软件

Petalinux是 ZynqMP系列官方工程原配的系统,虽然理论上很多芯片已经可以运行Ubuntu 和 pynq,但是想要深入官方的工程,Petalinux还是不得不品尝的。Petalinux准确的来说其实是整套Linux的开发工具,而不仅仅是单纯系统本身。举个例子:在用Petalinux自动化生成设备树,一般说的是在我们的开发环境(比如Ubuntu中)使用Petalinux工具来生成。Petalinux本身是需要安装的,也没有任何的GUI环境,因此对于新手有一定难度。但是想要开发一个属于自己的动态可加载的加速应用(例如,KV260的动态加载的APP模式),Petalinux的流程是必须的。我打算日后单独来聊一聊。

32b7668a-8056-11ed-8abf-dac502259ad0.jpg

Petalinux还可以配置FPGA特定的功能和应用

由于名字类似,Vitis 和 Vitis AI 恐怕最最令人迷惑的两个工具了。实际上,这两个工具是两个完全不同的东西。Vitis 其实是一个集成开发环境,有安装包,有GUI,它和Vivado有点类似(这个软件改名叫Vitis SDK或许更合适)。在目前的流程中,Vitis主要用来开发嵌入式程序(C)和集成加速器(Verilog/HLS)。后面这部分似乎与Vivado类似,在Vitis中加入这部分的原因,主要是考虑到,Vivado不能很方便的进行软件联调。参考上面的流程图,实际设计中我们如果完成嵌入式软件后想要修改硬件,就需要返回到Vivado中重新设计,重新使用Petalinux工具编译,最后修改软件。这个流程经过好几个软件,可以说非常痛苦的。Vitis的流程很好的解决这个问题。在Vitis中,我们可以很方便的重新连接IP端口,修改IP数量。硬件的编译,系统的修改,都可以由Vitis自动完成(其实Vitis在后台调用的还是Vivado的命令)。当然,Vitis会限制我们对于硬件平台的修改,也不能完整编译Petalinux,因此具体流程中我们需要三个软件配合才能让其流畅的工作。具体的流程,我会在后续的博客中具体的分析。

32e86d2a-8056-11ed-8abf-dac502259ad0.jpg

Vitis有不少老工具的既视感

AI

最后让我们来谈谈Vitis AI。如果你不知道Vitis AI是什么,请记住,其实Vitis AI不是一个软件而是一套给 AI开发者的工具脚本环境样例的集合。像所有的github项目一样,Vitis AI不需要安装,下载Vitis AI只需要找到项目地址,然后根据README下载和配置即可。

假设你是一个纯AI的开发者想要玩Vitis AI,其实你并不需要去管Vivado、petalinux、Vitis这种工具。因为AI几乎是一个纯软件的部分。如果你只是先要运行一个基本的demo,你需要做的只是找到Vitis AI项目地址,clone,然后打开Vitis AI 的toturial。至于嵌入式系统,加速器硬件,你只需要下载一个官方编译好的系统,烧录进SD卡,最后打开开发板。你就会发现,系统,环境,加速器,都已经准备好了。您的开发工作仅仅就参考我上图的流程中AI的部分(嵌入式以上的部分就好)。

3304aa58-8056-11ed-8abf-dac502259ad0.jpg

Vitis AI是一个Github的项目

小结

本篇主要是闲谈个人对于Vitis AI的整个开发流程的理解,主要是想帮助一下新手快速找到一个开发目标,不至于迷失在大量的工具的方向中。后续的博客中,我会继续尝试介绍一些开发流程中的细节。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121361
  • AI
    AI
    +关注

    关注

    87

    文章

    30830

    浏览量

    268984
  • DPU
    DPU
    +关注

    关注

    0

    文章

    358

    浏览量

    24171
  • UltraScale
    +关注

    关注

    0

    文章

    117

    浏览量

    31462
  • Vitis
    +关注

    关注

    0

    文章

    146

    浏览量

    7426

原文标题:闲谈 Vitis AI | DPU 在 UltraScale 平台下的软硬件流程 (1)

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【米尔FZ3深度学习计算卡试用体验】搭建Vitis Ai系统平台并测试

    1 Vitis AiVitis™ AI 开发环境是 Xilinx 的开发平台,适用于 Xilinx
    发表于 12-03 19:22

    【米尔FZ3深度学习计算卡试用体验】DPU搭建

    设计公司,如今Xilinx中使用的深度学习威廉希尔官方网站 ——DPU就是该公司设计的黑盒子,能够灵活的配置DPU的属性,大大的节省了开发周期,充钱的半年甚至以上,现在可能不要半个月即可实现。如图是DPU
    发表于 12-10 15:23

    【米尔百度大脑EdgeBoard边缘AI计算盒试用连载】IV. FZ5-DPU@2020.2(ZMJ)

    参考Vitis-AI(v1.2)EdgeBoard-FZ5C上部署B4096DPU,完成DPU自检。//------Vitis-AI(v1
    发表于 04-16 17:09

    Vitis AI Model Zone软件平台具备哪些功能?

    Vitis AI Model Zone软件平台具备哪些功能?Vitis AI Model Zone软件
    发表于 07-09 06:44

    DNW下载的软硬件流程是如何去完成的

    DNW下载的软硬件流程是如何去完成的?怎样去下载DNW的软硬件呢?有哪些下载步骤?
    发表于 12-24 08:01

    ultrascale+上利用VCU和DPU实现的智能零售系统

    DPU推理代码编译好的文件tfssdtest.so已经demo/,可以跳过这一步,直接使用提供的文件。1.设置主机按照Xilinx/Vitis-AI-Library上的步骤操作2.交
    发表于 02-20 17:35

    阿里平头哥发布首个 RISC-V AI 软硬全栈平台

    平台通过软硬件深度协同,较经典方案提升超 8 成性能,支持运行 170 余个主流 AI 模型,推动 RISC-V 进入高性能 AI 应用时代。 平头哥表示,他们通过更新自研一站式
    发表于 08-26 14:14

    【KV260视觉入门套件试用体验】Vitis AI 初次体验

    一、基础环境 硬件:KV260视觉入门套件 摄像头:海康720P USB摄像头(因为部署Vitis AI之后懒得poweroff插MIPI camera了,直接USB上) 软件:Ubuntu
    发表于 09-10 13:15

    【KV260视觉入门套件试用体验】部署DPU镜像并运行Vitis AI图像分类示例程序

    本文首先将会对Vitis统一软件平台和Vitsi AI进行简单介绍,然后介绍如何在KV260上部署DPU镜像,最后KV260
    发表于 09-10 23:01

    【KV260视觉入门套件试用体验】Vitis-AI加速的YOLOX视频目标检测示例体验和原理解析

    示例体验 参考此前的帖子:【KV260视觉入门套件试用体验】部署DPU镜像并运行Vitis AI图像分类示例程序 - 智能硬件论坛 - 电子威廉希尔官方网站 论坛 - 广受欢迎的专业电子论
    发表于 10-06 23:32

    【KV260视觉入门套件试用体验】Vitis AI 构建开发环境,并使用inspector检查模型

    支持。需要做的不只是执行几条命令,还需要了解赛灵思硬件平台的特点,选择合适的模型和框架,使用 Vitis AI 提供的工具和库进行优化和编译,最后
    发表于 10-14 15:34

    单片机测控系统的软硬件平台威廉希尔官方网站

    本文探讨了一种用于工业测控系统的单片机软硬件综合设计方法——软硬件平台威廉希尔官方网站 ,重点阐述了其基本原理、设计思想、实现方法,并给出了一个单片机测控系统软硬件开发
    发表于 08-13 09:38 12次下载

    基于FPGA芯片的软硬件平台的使用

    基于FPGA芯片的软硬件平台的使用
    发表于 07-01 09:35 20次下载

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

      VITIS 是一个用于开发软件和硬件的统一软件平台,将 Vivado 和其他组件用于 Xilinx FPGA SoC 平台,如 ZynqMP U
    的头像 发表于 11-22 14:48 2066次阅读

    软硬件融合的概念和内涵

    跟很多朋友交流,当提到软硬件融合的时候,他们会这么说:“软硬件融合,难道不是显而易见吗?我感觉二三十年前就已经有这个概念了。”在他们的想法里,其实:软硬件融合等同于
    的头像 发表于 10-17 14:36 1535次阅读
    <b class='flag-5'>软硬件</b>融合的概念和内涵