ARM虚拟硬件介绍
注:本小节部分内容引用自ARM官方介绍
Arm 虚拟硬件(Arm Virtual Hardware, AVH)提供了一个 Ubuntu Linux 镜像, 包括用于物联网、机器学习和嵌入式应用程序的 Arm 开发工具: 例如, Arm 编译器、FVP 模型和其他针对 Cortex-M 系列处理器的开发工具帮助开发者快速入门。Arm 虚拟硬件限时免费提供用于评估用途,例如,评估 CI/CD、MLOps 和 DevOps 工作流 中的自动化测试工作流等。
Arm虚拟硬件平台的主要特点
虚拟化模型: Arm虚拟硬件提供基于云的Arm处理器和系统的虚拟化模型,包括流行的IoT开发套件。这些模型不仅包括处理器,还涵盖了外围设备、传感器和其他板级组件。
软件开发便利性: 虚拟硬件使用成熟的、指令准确的、可扩展的建模引擎来替代物理硬件,使得开发者能够采用现代软件开发的最佳实践来开发IoT和端点AI应用程序。
可扩展性: Arm虚拟硬件允许在云中轻松运行和扩展CI基础设施,可以在几秒钟内启动成千上万的虚拟板,快速实验和测试复杂的多设备配置。
加速开发: 开发者可以使用敏捷的软件开发实践,如CI/CD(DevOps)和MLOps工作流程,在Arm技术上快速开始开发和测试软件。
Arm虚拟硬件的核心架构图
ARM公司的虚拟硬件产品,特别是其虚拟硬件在百度智能云中的接入,为开发者们提供了一个基于云端的虚拟开发平台。该平台可以提供Arm子系统和第三方开发板的虚拟模型,使得软件开发者、OEM厂商和服务提供商能够在无需等待实体芯片就绪的情况下,提前进行软件开发,实现软硬件的协同设计,是一个功能强大、灵活且易于使用的开发平台,为开发者们提供了丰富的功能和工具,以支持他们在各种应用场景中进行高效的软件开发。
Paddle介绍
PaddlePaddle(飞桨)是一款功能强大、灵活高效的深度学习开源平台和框架。它为用户提供了全面且丰富的深度学习工具和资源,旨在帮助用户快速构建和训练各种复杂的深度学习模型。
PaddlePaddle的几个显著特点
丰富的模型库: PaddlePaddle提供了涵盖图像识别、自然语言处理、推荐系统等多个领域的预训练模型和模型库,使用户能够快速搭建和训练模型,无需从零开始。
高效性: PaddlePaddle采用了高度优化的底层计算库,使得模型训练和推理过程能够快速、高效地进行。这为用户节省了大量时间,提高了开发效率。
多样性: PaddlePaddle支持多种深度学习任务,包括图像识别、语音识别、自然语言处理等,满足了不同领域的需求。此外,它还提供了丰富的预训练模型和工具,方便用户快速开展相关研究。
灵活性: PaddlePaddle支持动态图和静态图两种模式,用户可以根据具体需求选择适合的模式进行开发。这种灵活性使得PaddlePaddle能够适应各种复杂的深度学习场景。
分布式训练支持: PaddlePaddle具备强大的分布式训练功能,可以实现在多台机器上同时训练模型,从而加速训练过程。这对于处理大规模数据和模型的任务尤为重要。
移动端支持: PaddlePaddle还支持在移动设备上进行模型推理,为开发移动应用和嵌入式系统提供了便利。这使得深度学习技术能够更广泛地应用于实际场景中。
PaddlePaddle的领先技术
开发便捷的产业级深度学习框架: 飞桨深度学习框架采用基于编程逻辑的组网范式,对于普通开发者而言更容易上手,符合他们的开发习惯。同时支持声明式和命令式编程,兼具开发的灵活性和高性能。网络结构自动设计,模型效果超越人类专家。
支持超大规模深度学习模型的训练: 飞桨突破了超大规模深度学习模型训练技术,实现了支持千亿特征、万亿参数、数百节点的开源大规模训练平台,攻克了超大规模深度学习模型的在线学习难题,实现了万亿规模参数模型的实时更新。 查看详情
支持多端多平台的高性能推理部署工具 :飞桨不仅广泛兼容第三方开源框架训练的模型部署,并且为不同的场景的生产环境提供了完备的推理引擎,包括适用于高性能服务器及云端推理的原生推理库 Paddle Inference,全场景、易用灵活、极致高效的AI推理部署工具,支持云边端部署工具 FastDeploy,针对于移动端、物联网场景的轻量化推理引擎 Paddle Lite,以及在浏览器、小程序等环境下使用的前端推理引擎 Paddle.js。同时,透过与不同场景下的主流硬件高度适配优化及异构计算的支持, 飞桨的推理性能也领先绝大部分的主流实现。
面向产业应用,开源开放覆盖多领域的工业级模型库:飞桨官方支持100多个经过产业实践长期打磨的主流模型,其中包括在国际竞赛中夺得冠军的模型;同时开源开放200多个预训练模型,助力快速的产业应用。
前期准备
本帖在前期已经搭建好的服务器环境上运行。有关服务器的搭建请见ARM官方文档。
基于Arm虚拟硬件模拟Cortex-M7芯片平台搭建智能物联网终端
下载源码
-
首先进入Ubuntu环境
-
创建
avh_demo_object_classification
文件夹
mkdir avh_demo_object_classification
- 进入
avh_demo_object_classification
文件夹
cd avh_demo_object_classification
- 从github上克隆源码
EW24
分支
git clone -b EW24 https://github.com/ArmDeveloperEcosystem/Paddle-examples-for-AVH.git
如github下载过慢,可以使用国内镜像
git clone -b EW24 https://hub.nuaa.cf/ArmDeveloperEcosystem/Paddle-examples-for-AVH.git
- 进入目录
cd Paddle-examples-for-AVH/
配置环境
因为这里要下载包,github太慢了,先修改config_cmsis_toolbox.sh
,更换国内镜像
vim scripts/config_cmsis_toolbox.sh
按键盘insert键进入vim修改模式,把这里的github.com替换成hub.nuaa.cf
(或其他镜像源)
修改后按esc
退出编辑模式,按shift
+:
,输入wq
,以退出vim并保存。
config_tvm.sh
不是github下载的,因此这里就不更换镜像
开始配置环境
sudo bash scripts/config_cmsis_toolbox.sh
sudo bash scripts/config_tvm.sh
OK,配置完毕
运行Demo
- 进入工程目录
cd object_classification/
- 运行脚本(不能加
sodo
,否则就会报command not found
)
bash run_demo.sh --model BaseMobileNetV1 --device cortex-m55”
这里可以指定两个参数,--model
和--device
,用于指定模型名称和设备名称。
- 如果出现如下报错
首先看一下上面的bash
前有没有加sodo
,如加sodo
则删除。
如仍不好使,试一下重新获取license
armlm activate -product KEMDK-COM0 -server https://mdk-preview.keil.arm.com
如果提示armlm command not found
,则重启再执行上一步
成功运行
结语
本文章到这里就结束了。本文章在多个相同环境下测试,确保流程无误。因为也是初学者,还没有能力解读代码结构和源码。本文如有不足请指出~
这个虚拟硬件环境还是很难上手的(当然如果只是跑官方Demo的话很简单),主要是生态没建立起来,官方提供的Demo不是很容易让人深刻理解具体是怎么与虚拟硬件联系上的。
不过是一个很好的学习平台,如果有丰富的官方文档的话会吸引更多初学者来实践。后期会深入了解一下,如有进展再发出来。