Ubuntu Core 26实战:在瑞萨RZ/V上部署高效AI推理

Ubuntu Core 26实战:在瑞萨RZ/V上部署高效AI推理

欢迎阅读本系列博客,我们将一起探索Ubuntu Core的创新应用。在本系列中,Canonical的工程师们将展示如何利用我们的发布版本构建各种解决方案,重点介绍可用的功能和工具。

本期文章由硅谷联盟团队的工程师Asa Mirzaieva撰写,她将演示如何使用动态可重构处理器(DRP-AI)在瑞萨RZ/V系列硬件上部署经过优化的AI模型。

对于追求高性能与超低功耗平衡的开发者而言,在专用微处理器单元(MPU)上进行边缘推理的AI模型部署极具价值。结合Ubuntu Core的架构,开发者能获得一套端到端的基础设施,实现安全、模块化的部署管理。

通过本文,你将学会如何使用Snap在瑞萨DRP-AI上打包、加载并运行AI推理模型。

在瑞萨DRP-AI上实现AI推理

如果你对瑞萨的RZ/V系列还不够了解,需要知道的是:这些微处理器配备了名为DRP-AI的专用AI加速器。这种动态可重构处理器能够加速神经网络推理的核心运算(如特征提取和分类),同时保持极低的功耗。要完全理解这种加速机制,我们需要探究DRP-AI如何动态重构其内部数据流以适配网络架构——这与传统的顺序CPU处理方式截然不同。

DRP-AI架构示意图

使用Ubuntu Core进行边缘AI的打包与部署

简单来说,在边缘运行AI工作负载包括三个步骤:准备模型、将模型与运行时和应用程序集成、确保模型能可靠部署到目标设备。下图展示了这一流程在瑞萨RZ/V平台上的具体实现。

该图显示:开发和打包工作由主机系统(例如运行Ubuntu的笔记本电脑或构建服务器)完成,而部署目标则是运行Ubuntu Core的RZ/V设备。在主机系统上,使用DRP-AI工具链编译模型,然后将模型与运行时、应用程序一起打包成一个Snap;这个Snap随后被部署到目标设备,构成一个完整的AI解决方案。

工作流示意图

接下来的几个章节将详细展开每个步骤:从使用DRP-AI TVM编译模型,到打包Snap并在设备上运行推理。

使用DRP-AI TVM编译模型

与其他先进AI流水线一样,使用DRP-AI TVM时需要先编译模型(如ONNX格式),以生成运行时模型数据。该工具链借助EdgeCortix MERA编译器框架,将AI模型映射为一套高效的指令集,使CPU和DRP-AI硬件能够协同处理。

由于模型编译依赖于特定的SDK和EdgeCortix MERA编译器框架,此步骤通常在专用主机(或Docker容器)上完成,而不会被包含在运行时Snap中。

有关设置环境以及编译ONNX模型的分步说明,请参阅瑞萨官方提供的DRP-AI TVM编译教程

在主机上完成模型的剪枝、优化和编译后,下一步就是将运行时二进制文件和编译好的模型文件传输到目标板上。

将AI应用程序打包成Snap

为了安全可靠地运行推理,我们将应用程序打包成Snap。Canonical创建了一个示例仓库rzv_drp-ai_tvm_snap,该仓库整合了上游瑞萨的示例应用程序,使其能够通过snapd轻松安装和管理。

在该Snap中,我们打包了三个主要组件:

  • DRP-AI TVM运行时库(libdrp_tvm_rt.so及其依赖项)
  • 编译好的教程应用程序(tutorial_app_v2ml)
  • 预编译的AI模型数据(位于项目的models/目录下)

得益于Snapcraft的先进工具,你可以直接在amd64主机上为arm64架构交叉编译整个应用程序。

构建完成后,将生成的Snap文件传输到RZ/V2L板上并安装。目前,访问硬件接口需要使用devmode限制模式:

sudo snap install --devmode rzv-drp-ai-tvm-examples_*.snap

核心机制:snapcraft.yaml文件

这个安全、交叉编译的包背后的关键就是snapcraft.yaml文件。这个单一的声明式文件决定了AI应用程序的构建和打包方式。以下是简化后的代码片段,展示了它如何编排三个主要组件:

name: rzv-drp-ai-tvm-examples
base: core24
confinement: devmode

apps:
tutorial-app:
command: usr/bin/launch-tutorial.sh

parts:
tvm-runtime:
plugin: nil
source: [https://github.com/renesas-rz/rzv_drp-ai_tvm.git](https://github.com/renesas-rz/rzv_drp-ai_tvm.git)
override-prime: |
craftctl default
# 1. 安装运行时库
cp -a $CRAFT_PART_SRC/obj/build_runtime/v2m/lib/* $CRAFT_PRIME/usr/lib/
# 2. 安装编译好的模型
cp -a ${CRAFT_PROJECT_DIR}/models/ $CRAFT_PRIME/usr/bin/

tutorial-app:
after: [tvm-runtime]
plugin: cmake
source: ${CRAFT_PROJECT_DIR}/../parts/tvm-runtime/src/apps
override-prime: |
craftctl default
# 3. 安装编译好的二进制文件
cp -a $CRAFT_PART_BUILD/tutorial_app_v2ml $CRAFT_PRIME/usr/bin/

该配置直接映射到我们之前讨论的三个主要组件:

  • 组件1:运行时库——由tvm-runtime部分处理。它获取上游瑞萨DRP-AI TVM源代码,并将预构建的TVM运行时库复制到Snap的运行时路径中。
  • 组件2:编译好的模型——同样由tvm-runtime部分处理。本地准备好的AI模型数据直接从项目的models/文件夹复制到Snap中,确保运行时可直接访问。
  • 组件3:教程应用程序——由tutorial-app部分处理。它使用cmake插件为arm64架构交叉编译C++教程应用程序,最终将tutorial_app_v2ml二进制文件放入Snap中。

安装Snap

Snap成功构建后,运行以下命令进行安装(XXX代表版本号)。

注意:需要devmode模式才能从Snap内部访问DRP-AI设备。

sudo snap install rzv-drp-ai-tvm-examplesXXX.snap --devmode

运行推理示例

Snap安装完成后,运行预打包的应用程序只需调用Snap命令即可。

要运行ResNet…(原文截断,此处按原文内容保持)


关注微信号:智享开源 ,及时了解更新信息。

原文链接:https://ubuntu.com//blog/ubuntu-core-26-ai-renesas

评论列表

发表评论

你必须 登录 才能发表评论.

为您推荐


请支持IMCN发展!

谁在捐赠

微信捐赠 支付宝捐赠
微信捐赠 支付宝捐赠
ta的个人站点

发表文章4324篇

关注我的头条 不要放弃,百折不挠,坚强、自信。


扫码关注公众号:智享开源

最新科技信息


[blog_mailer_subscribe]

归档

近期评论

💬 和我聊聊