使用ApacheTVM在Arduino和ArmEthos-U55微NPU上运行机器学习模型
立即解锁
发布时间: 2025-08-31 00:22:53 阅读量: 5 订阅数: 15 AIGC 

### 使用Apache TVM在Arduino和Arm Ethos - U55微NPU上运行机器学习模型
#### 1. 在Arduino相关平台运行模型
在微控制器上上传草图后,内置LED会亮起,这表明输入测试图像分类正确。之前我们学习了如何使用TVM生成代码,在树莓派Pico上运行CIFAR - 10模型推理,并使用Arduino CLI编译和上传到微控制器。
虽然目前TVM不支持SparkFun Artemis Nano的微控制器(Ambiq Apollo3)作为目标设备,但我们仍可以通过指定Ambiq Apollo3微控制器的CPU架构(Arm Cortex - M4)和所需的输出语言(C)来为该平台生成代码,示例代码如下:
```python
t = "c -keys=arm_cpu,cpu -mcpu=cmsis-nn,cortex-m4"
artemis_nano = tvm.target.Target(t)
```
指定目标设备后,可按照为Arduino Nano和树莓派Pico介绍的步骤,使用TVM为SparkFun Artemis Nano构建Arduino项目。在GitHub仓库的Chapter11文件夹中的Colab笔记本里,有生成该平台Arduino项目的代码块。
#### 2. 安装Arm Corstone - 300的固定虚拟平台(FVP)
TVM可以为各种平台生成代码,包括带有Arm Ethos - U55处理器的平台。Arm Ethos - U55是Arm设计的首个微NPU,用于扩展基于Cortex - M的设备的机器学习能力。
##### 2.1 准备工作
Arm Corstone - 300平台的FVP模型(https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps)是一个免费的虚拟平台,基于Arm Cortex - M55 CPU和Ethos - U55微NPU。Arm Ethos - U55(https://www.arm.com/products/silicon-ip-cpu/ethos/ethos-u55)是专门用于机器学习推理的处理器,与Cortex - M CPU协同工作。
它能高效计算量化8位/16位深度神经网络中的大多数基本运算,如卷积、全连接和深度卷积层核心的乘加(MAC)运算。使用微NPU执行机器学习推理时,CPU负责驱动机器学习工作负载。若微NPU遇到不支持的运算符,CPU会接管计算。
从微控制器编程角度看,将模型作为C/C++程序提供的过程不变。权重、偏置和量化参数可存储在程序内存中,输入和输出张量可保存在SRAM中。程序上传到微控制器后,驱动程序通过向微NPU发送一系列命令(命令流)将计算任务卸载给它,微NPU执行完所有命令并将输出存储在用户定义的内存区域后,会向CPU发送中断信号。
##### 2.2 安装步骤
以下是在Colab中安装Arm Corstone - 300平台FVP模型的步骤:
1. **下载FVP模型**:
```bash
!wget https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/Corstone-300/FVP_Corstone_SSE-300_11.22_20_Linux64.tgz?rev=018659bd574f4e7b95fa647e7836ccf4&hash=22A79103C6FA5FFA7AFF3BE0447F3FF9
```
也可从Arm Ecosystem FVPs网页(https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps)手动下载,下载完成后导入Colab。
2. **解压文件并设置可执行权限**:
```bash
!tar -xvzf FVP_Corstone_SSE-300_11.22_20_Linux64.tgz?rev=018659bd574f4e7b95fa647e7836ccf4
!chmod +x FVP_Corstone_SSE-300.sh
```
3. **运行安装脚本**:
```bash
!./FVP_Corstone_SSE-300.sh \
--i-agree-to-the-contained-eula \
--no-interactive
```
安装完成后,Corstone - 300 FVP二进制文件将位于`/usr/local/FVP_Corstone_SSE - 300`目录。
4. **添加路径到环境变量**:
```python
os.environ['PATH'] += ':/usr/local/FVP_Corstone_SSE-300/models/Linux64_GCC-9.3'
```
5. **检查安装情况**:
```bash
!FVP_Corstone_SSE-300_Ethos-U55 --version
```
若`$PATH`环境变量更新正确,该命令应在输出日志中返回版本信息,表明带有Arm Cortex - M55 CPU和Ethos - U55微NPU的虚拟硬件已安装并可使用。
除了这个虚拟设备,市场上的Alif Semiconductor Ensemble(https://alifsemi.com/products/ensemble/)微控制器也采用了Arm Ethos - U55微NPU,它能实现语音识别和面部检测等实时任务。
#### 3. 使用TVMC为Arm Ethos - U55生成代码
之前我们使用TVM
0
0
复制全文
相关推荐










