【TVM教程】在支持 CMSIS-NN 的 Arm(R) Cortex(R)-M55 CPU 和 Ethos(TM)-U55 NPU 裸机上运行 TVM
内容提要
Apache TVM是一个深度学习编译框架,支持在Arm Cortex-M55 CPU和Ethos-U55 NPU上运行模型。本文介绍如何在固定虚拟平台上编译和运行MobileNet v1模型,并使用CMSIS-NN进行优化。通过命令行工具tvmc进行模型编译,并提供必要的Python依赖和示例代码,最终实现对输入图像的分类。
关键要点
-
Apache TVM是一个深度学习编译框架,支持在Arm Cortex-M55 CPU和Ethos-U55 NPU上运行模型。
-
Cortex-M55是一款用于嵌入式设备的小型低功耗CPU,CMSIS-NN是针对Arm Cortex-M CPU优化的内核集合。
-
Ethos-U55是一种microNPU,专为在资源受限的嵌入式设备中加速机器学习推理而设计。
-
可以在固定虚拟平台(FVP)上运行demo程序,FVP基于Arm Corstone-300软件建模Cortex-M55和Ethos-U55硬件系统。
-
使用命令行工具tvmc进行模型编译,编译MobileNet v1模型并将算子迁移到Ethos-U55。
-
运行demo需要安装额外的Python包,通过requirements.txt文件安装。
-
MobileNet v1模型是一种卷积神经网络,能够对224x224大小的图像进行分类,已预训练可识别1001个类别。
-
使用tvmc compile命令编译模型,生成适用于目标平台的模型库格式(MLF)。
-
下载ImageNet标签文件以便将输出结果转换为用户友好的标签。
-
使用Python脚本将输入图像转换为C头文件中的字节数组,并生成输出数组的头文件。
-
编写C程序以在下载的图像上运行MobileNet v1模型的推理,并显示分类结果。
-
创建链接脚本以便在构建应用程序时使用,确保模型权重和命令流放在适当的内存部分。
-
更新PATH环境变量以包含cmake和FVP的路径,使用make命令构建demo。
-
在固定虚拟平台上运行demo,输出结果显示图像已被正确分类。
延伸解读
嵌入式设备的深度学习应用
Arm Cortex-M55 CPU 和 Ethos-U55 NPU 的结合为嵌入式设备提供了强大的深度学习能力。通过使用 CMSIS-NN 优化,开发者可以在资源受限的环境中高效运行机器学习模型,适合物联网和边缘计算等场景。
模型编译与优化的重要性
在使用 TVM 进行模型编译时,合理配置编译参数至关重要。通过将算子迁移到 Ethos-U55 NPU,可以显著提升推理速度和效率。开发者需关注编译过程中各参数的设置,以确保模型在目标平台上最佳运行。
固定虚拟平台的优势
使用固定虚拟平台(FVP)进行开发,可以在没有实际硬件的情况下模拟和测试模型。这为开发者提供了灵活性,能够快速迭代和调试代码,降低了开发成本和时间。
延伸问答
如何在Cortex-M55和Ethos-U55上运行MobileNet v1模型?
可以通过Apache TVM框架,使用命令行工具tvmc编译MobileNet v1模型,并在固定虚拟平台上运行。
什么是CMSIS-NN,它的作用是什么?
CMSIS-NN是针对Arm Cortex-M CPU优化的内核集合,旨在加速机器学习推理。
在运行demo程序之前需要安装哪些Python依赖?
需要安装attrs、cloudpickle、decorator等多个Python包,具体可通过requirements.txt文件安装。
如何将输入图像转换为C头文件中的字节数组?
可以使用Python脚本将输入图像调整为224x224大小,并转换为C头文件中的字节数组。
如何编译MobileNet v1模型以适应Ethos-U55?
使用tvmc compile命令,指定目标为ethos-u和cmsis-nn,并设置相关参数进行编译。
运行demo程序后,如何查看图像分类结果?
在控制台窗口中可以看到输出结果,显示图像被正确分类的标签。