移动和嵌入式设备上也能直接玩机器学习?

2019-07-13 05:31发布

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1最近,机器学习(ML)话题大热,Arm也推出神经网络机器学习软件 Arm NN。这是一项关键技术,可在基于 Arm 的高能效平台上轻松构建和运行机器学习应用程序。那么对于Arm NN,你又了解多少呢?
640?wxfrom=5&wx_lazy=1
实质上,该软件桥接了现有神经网络框架(例如 TensorFlow 或 Caffe)与在嵌入式 Linux 平台上运行的底层处理硬件(例如 CPU、GPU 或新型 Arm 机器学习处理器)。这样,开发人员能够继续使用他们首选的框架和工具,经 Arm NN 无缝转换结果后可在底层平台上运行。
640?wxfrom=5&wx_lazy=1
机器学习需要一个训练阶段,也就是学习阶段(“这些是猫的图片”),另外还需要一个推理阶段,也就是应用所学的内容(“这是猫的图片吗?”)。训练目前通常在服务器或类似设备上发生,而推理则更多地转移到网络边缘,这正是新版本 Arm NN 的重点所在。
640?对象识别是在嵌入式平台上运行的众多机器学习工作负载之一


  一切围绕平台

机器学习工作负载的特点是计算量大、需要大量存储器带宽,这正是移动设备和嵌入式设备面临的最大挑战之一。随着运行机器学习的需求日益增长,对这些工作负载进行分区变得越来越重要,以便充分利用可用计算资源。软件开发人员面临的可能是很多不同的平台,这就带来一个现实问题:CPU 通常包含多个内核(在 Arm DynamIQ big.LITTLE中,甚至还有多种内核类型),还要考虑 GPU,以及许多其他类型的专用处理器,包括 Arm 机器学习处理器,这些都是整体解决方案的一部分。
Arm NN 这时就能派上用场。下图中可以看出,Arm NN 扮演了枢纽角 {MOD},既隐藏了底层硬件平台的复杂性,同时让开发人员能够继续使用他们的首选神经网络框架
640?640?Arm NN SDK 概览(首次发布版本)
您可能已经注意到,Arm NN 的一个关键要求是 Compute Library,它包含一系列低级别机器学习和计算机视觉函数,面向 Arm Cortex-A CPU 和 Arm Mali GPU。我们的目标是让这个库汇集针对这些函数的一流优化,近期的优化已经展示了显著的性能提升——比同等 OpenCV 函数提高了 15 倍甚至更多。如果您是Cortex-M CPU 的用户,现在还有一个机器学习原语库,也就是近期发布的 CMSIS-NN。

  Arm NN主要优势

有了 Arm NN,开发人员可以即时获得一些关键优势:
  • 更轻松地在嵌入式系统上运行 TensorFlow 和 Caffe
  • Compute Library 内部的一流优化函数,让用户轻松发挥底层平台的强大性能
  • 无论面向何种内核类型,编程模式都是相同的
  • 现有软件能够自动利用新硬件特性

与 Compute Library 相同,Arm NN 也是作为开源软件发布的,这意味着它能够相对简单地进行扩展,从而适应 Arm 合作伙伴的其他内核类型。

  适用于 Android 的 Arm NN

在2017年五月举行的 Google I/O 年会上,Google 发布了针对 Android 的 TensorFlow Lite,预示着主要新型 API 开始支持在基于 Arm 的 Android 平台上部署神经网络。表面上,这与 Android 下的 Arm NN SDK 解决方案非常相似。使用 NNAPI 时,机器学习工作负载默认在 CPU 上运行,但硬件抽象层 (HAL) 机制也支持在其他类型的处理器或加速器上运行这些工作负载。Google 发布以上消息的同时,我们的 Arm NN 计划也进展顺利,这是为使用 Arm NN 的 Mali GPU 提供 HAL。今年晚些时候,我们还将为 Arm 机器学习处理器提供硬件抽象层。
640?Arm 对 Google NNAPI 的支持概览

  CMSIS-NN

CMSIS-NN 是一系列高效神经网络内核的集合,其开发目的是最大程度地提升神经网络的性能,减少神经网络在面向智能物联网边缘设备的 Arm Cortex-M 处理器内核上的内存占用。我们开发这个库的目的是全力提升这些资源受限的 Cortex CPU 上的神经网络推理性能。借助基于 CMSIS-NN 内核的神经网络推理,运行时/吞吐量和能效可提升大约 5 倍,想了解更多请查看 ☞ 想让你的微控制器效率提升5倍吗?
640?


  Arm NN 的未来发展

这只是 Arm NN 的第一步:我们还计划添加其他高级神经网络作为输入,对 Arm NN 调试程序执行进一步的图形级别优化,覆盖其他类型的处理器或加速器……请密切关注今年的发展!
640?640?
1.从汇编、C语言为起点,十年FPGA开发设计经验总结2.成为一个软硬件通吃的技术大牛,有一点很重要!3.如何设计嵌入式系统?带你理解一个小型嵌入式操作系统的精髓4.C语言访问MCU寄存器,有两种方式可以采用!5.2018年第3期《单片机与嵌入式系统应用》电子刊新鲜出炉!6.了解51单片机执行指令的过程,你会理解更深刻!640?wx_fmt=gif免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。