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

FPGA开发圈 2022-12-21 16:43


本文由开发者陆禹帆投稿


前言

本篇中,我想跳过一些细枝末节, 先简单介绍 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程序。总的来说,我们大概需要解决以下几个问题:

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

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

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


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

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


这里其实还是需要强调下,虽然我列出了很多步骤,但是并不是说每一步都需要我们独立完成。在真实的项目中,整个开发流程通常需要一个团队来完成。上图是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 系统作为开发环境,可以节约我们很多宝贵的时间。

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



嵌入式、硬件、软件

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

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,因此具体流程中我们需要三个软件配合才能让其流畅的工作。具体的流程,我会在后续的博客中具体的分析。


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的部分(嵌入式以上的部分就好)。

Vitis AI是一个Github的项目

小结 

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



FPGA开发圈 这里介绍、交流、有关FPGA开发资料(文档下载,技术解答等),提升FPGA应用能力。
评论
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 61浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 167浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 113浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 77浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 55浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 125浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 65浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 38浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 98浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 103浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 83浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 141浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦