首页 > 其他分享 >Arm NN 成功适配 openEuler Embedded,提供高性能神经网络推理能力

Arm NN 成功适配 openEuler Embedded,提供高性能神经网络推理能力

时间:2023-06-05 17:07:03浏览次数:38  
标签:NN Embedded 适配 嵌入式 神经网络 openEuler Arm

近期,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 的推理加速效果:

  1. 模型:yolov3 tiny(FLOAT32 量化)
  2. 训练数据:COCO
  3. 测试数据: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 人工智能开发生态的繁荣发展!

标签:NN,Embedded,适配,嵌入式,神经网络,openEuler,Arm
From: https://blog.51cto.com/u_14948868/6417862

相关文章

  • opennmmlab实战营二期-mmpretrain理论课(四)
    opennmmlab实战营二期-mmpretrain理论课(四)目录opennmmlab实战营二期-mmpretrain理论课(四)mmpretrain算法库介绍算法库与任务组成框架概览经典主干网络resnetvisiontransformer自监督学习SimCLRMAE多模态算法CLIPBLIP注:点我:视频地址mmpretrain算法库介绍算法库与任务组成框架......
  • Transformer结构及其应用详解——GPT、BERT、MT-DNN、GPT-2
    前言 本文首先详细介绍Transformer的基本结构,然后再通过GPT、BERT、MT-DNN以及GPT-2等基于Transformer的知名应用工作的介绍并附上GitHub链接,看看Transformer是如何在各个著名的模型中大显神威的。本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专......
  • XtraDB与InnoDB的区别
    XtraDB是Percona开发的一种InnoDB存储引擎的衍生版本,它在InnoDB的基础上进行了优化和改进。下面是XtraDB和InnoDB之间的几个不同点:XtraDB对InnoDB的缓存管理进行了优化,增加了自适应哈希索引、在线实时扩展缓存等功能,可以更好地利用系统内存资源。XtraDB支持更多的线程并发,采用了更......
  • hibernate annotion多对多关系示例
    实体之间是多对多的关系,如图:错误的实体代码如下JAVA代码:@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)@JoinTable(name=......
  • 使用Go语言中的Channel实现并发编程
    引言:Go语言是一门开源的编程语言,以其高效、简洁和并发编程的能力而闻名。在Go语言中,Channel是一个重要的概念,它提供了一种安全、高效地在并发程序中进行通信的机制。本文将介绍Go语言中的Channel,以及如何使用Channel实现并发编程。一、什么是Channel?在Go语言中,Channel是一种用......
  • ChunJun FTP Connector 功能扩展解读
    本文将从FTPConnector的功能详解,自定义文件切割及自定义FileFormat三个方面为大家带来ChunJunFTPConnector的功能扩展分享。FTPConnector详解FTP是用于在网络上进行文件传输的一套标准协议,它工作在OSI模型的第七层,TCP模型的第四层,即应用层,提供一种在服务器和客户......
  • Innodb学习
    mysql5.5.8之后是innodb的存储引擎。之前默认是myisam。innodb支持事务。有表空间概念,分为ON独立表空间OFF系统表空间。如何选择:Innodb数据字典内部的保证事务安全性 没有使用mysql内部的数据类型都是引擎相关的类型 B树  Undo回滚段服务器层产生frm文件......
  • AtCoder Beginner Contest 287 G Balance Update Query
    洛谷传送门AtCoder传送门线段树上二分入门题。考虑一个贪心:每次询问按\(a_i\)从大到小选。正确性显然。考虑动态开点线段树,每个结点\(a_i\in[l,r]\)存\(\sum\limits_{a_i\in[l,r]}b_i\)和\(\sum\limits_{a_i\in[l,r]}a_ib_i\)。线段树上二分找到第一个\(......
  • AtCoder Beginner Contest 258 G Grid Card Game
    洛谷传送门AtCoder传送门记\(b_i=\sum\limits_{j=1}^ma_{i,j},c_j=\sum\limits_{i=1}^na_{i,j}\)。首先考虑这样一个事情,就是对于\(b_i\le0\)的行有没有可能被选。如果选了它:如果没有选任何列,选这一行肯定不优;如果选了若干列,根据题目的要求,这若干列与这......
  • 基于按annotation的hibernate主键生成策略
    这里讨论代理主键,业务主键(比如说复合键等)这里不讨论。[color=darkblue][b]一、JPA通用策略生成器[/b][/color]通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法......