近期,RISC-V SIG 完成了 Arm NN 在 openEuler Embedded 系统的适配,于 2023 年 1 月合入系统构建工程代码库,经测试验证可用,实现了神经网络加速库在 openEuler Embedded 嵌入式系统上的加速和优化。
系统构建工程下载地址:https://gitee.com/openeuler/yocto-meta-openeuler
支持 Arm NN 的 openEuler Embedded 系统已向社区开放
openEuler Embedded 是基于 openEuler 社区面向嵌入式场景的 Linux 版本,由于嵌入式系统应用受到多个因素的约束,如资源、功耗、多样性等, 所以通过嵌入式处理器内核进行机器学习成为了技术发展需要,ARM 推出 Arm NN 加速库就是解决方法之一,将机器学习运用到嵌入式系统中。提供高性能神经网络推理能力,支持边、端协同工作,提升资源利用率。
目标检测是在嵌入式平台上运行机器学习的工作负载之一
以目标检测为示例,验证 ArmNN 的推理加速效果:
- 模型:yolov3 tiny(FLOAT32 量化)
- 训练数据:COCO
- 测试数据:640*480 H264 视频
通过实验证明,在精度损失可接受范围内,Arm NN 加速可达到百倍的性能提升。如下图所示,其中横轴表示检测图片序号,纵轴表示推理耗时(单位:us):
注:musl-ref 是指基于 MuslC 的 Openeuler Embedded 且不做任何加速,musl-acc 是指基于的 Openeuler Embedded 且使能 ArmNN 的指令加速和优化。
为了适配 openEuler Embedded 系统, Arm NN 软件需兼容 yocto-meta-openeuler,并在上做了很多准备工作,如 tensorflow 的适配,Compute Library 的适配,flatbuffers 的使用等。openEuler Embedded Arm NN 的构建代码位于 meta-openeuler/recipes-arm 层上,社区开发者可根据需要自行构建 ArmNN 软件。
Arm NN:融合主流神经网络框架,为用户提供高效的 AI 应用平台
Arm NN SDK 是一套开源 Linux 软件和工具,支持在高能效的设备上运行机器学习工作负载。它桥接了现有神经网络框架与高能效的 Arm Cortex CPUs、Arm Mali GPU 或 Arm 机器学习处理器。
Arm NN 填补了现有 NN 框架和底层 IP 之间的空白。它可以帮助 TensorFlow 和 Caffe 等现有神经网络框架实现高效转换,并在 Arm Cortex CPU 和 Arm Mali GPU 上高效运行,无需修改。
主要优势
- 更轻松地在嵌入式系统上运行 TensorFlow 和 Caffe;
- Compute Library 内部的一流优化函数,让用户充分发挥底层平台的强大性能;
- 无论面向何种内核类型,编程模式都是相同的;
- 现有软件能够自动利用新硬件特性;
- 作为开源软件,能够相对简单地进行扩展,从而适应 Arm 合作伙伴的其他内核类型。
Arm NN 为 openEuler Embedded 系统带来人工智能的新活力
Arm NN 为 openEuler Embedded 提供全系统的神经网络优化方案,支持在高能效的设备上运行机器 学习工作负载。为了充分利用不同平台的软硬件特性,在 Linux 系统上提供 ARM CPU 上的神经网络加速能力,使用硬件指令加速库接口,使其面向目标硬件。目前,Arm NN 软件库在 openEuler Embedded 系统上的适配工作基本完成, RISC-V SIG 也将持续研发更多新功能,并移植最新的 openEuler Embedded 系统镜像。为了加快 openEuler Embedded 系统人工智能应用场景落地,我们诚邀感兴趣的朋友和测试志愿者加入并下载开发版镜像,共同探索并解决可能存在的问题,推动 openEuler 人工智能开发生态的繁荣发展!