【ARM虚拟硬件】基于Paddle的图像分类Demo

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不是很容易让人深刻理解具体是怎么与虚拟硬件联系上的。

不过是一个很好的学习平台,如果有丰富的官方文档的话会吸引更多初学者来实践。后期会深入了解一下,如有进展再发出来。

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值