ronghuaiyang · 2021年03月01日

PyTorch Mobile现已支持Android NNAPI

首发:AI公园公众号
作者:David Reiss
编译:ronghuaiyang

导读

Pytorch在移动端的应用变的更加方便。
image.png

今天,我们宣布了PyTorch的一个原型功能:支持Android的神经网络API (NNAPI)。PyTorch Mobile旨在为ML开发人员提供一流的体验,并在所有移动硬件上实现高性能的执行。NNAPI的支持对于实现这一目标至关重要,因为它扩展了我们可以用来快速执行模型的硬件集。这个初始版本包含了对一组小而强大的特性和操作的全功能支持,我们将在未来几个月扩大支持。

NNAPI允许Android应用程序在手机芯片最强大、最高效的部件上运行计算密集型神经网络,包括GPU(图形处理单元)和NPU(专门的神经处理单元)。它在Android 8 (Oreo)中被引入,并在Android 10和11中显著扩展,以支持更丰富的AI模型集。虽然NNAPI为各种硬件驱动程序提供了方便的统一接口,但它是一个需要大量集成工作的低级API。像PyTorch这样的高级框架使更多的应用程序开发人员可以获得这些好处。

NNAPI没有本地磁盘模型格式,所以我们选择将模型定义封装在普通的TorchScript模型中。开发人员将在训练后准备好他们的模型,然后在NNAPI上执行。然后,保存的模型可以打包到Android应用程序中(或通过网络交付),然后使用PyTorch Mobile的Java API或libtorch c++ API加载和运行。对于已经使用PyTorch Mobile的应用程序,不需要更改代码。开发人员可以简单地用NNAPI模型替换他们的CPU模型。

对于PyTorch开发者来说,访问和使用Android的NNAPI对随时在线的实时模型(如设备上的计算机视觉)特别有吸引力。这些模型往往是计算密集型的、对延迟敏感的和能耗高的。同时满足这三个要求是一项挑战,这使得这些模型成为利用硬件加速的最佳选择。这也是Facebook对NNAPI感兴趣的原因之一。在门户设备上支持虚拟背景体验的AI模型现在正在Messenger应用程序中使用NNAPI进行测试,以启用沉浸式360度背景功能。

如表1所示,在Pixel 3上为这个模型使用Android的NNAPI,可以在单核CPU和2核CPU之间实现高性能,从而为非ML应用程序代码释放CPU。此外,在像Pixel 4和Pixel 5这样的新设备上,NNAPI支持更高级别的性能,这可以被更复杂的ML模型利用。

image.png

表1 — 沉浸式360度背景启用模型基准测试

类似地,许多实时音频模型也被引入到移动应用程序中。由于具有类似的并发性、延迟和电源需求,减少背景噪声等特性也将受益于基于NNAPI的硬件加速。

在框架或API之间转换机器学习模型总是很棘手,这次也不例外。虽然PyTorch和NNAPI都是为了运行相同类型的神经网络而开发的,但在从一个转换到另一个时,需要弥合语义上的许多微小差异。例如:

  • NNAPI使用整数偏置进行量化卷积运算,而PyTorch使用浮点运算。
  • PyTorch和NNAPI对卷积中的权值张量期望不同的内存排序。
  • PyTorch之前有一个复杂的上采样操作的内部表示,为了更容易转换到NNAPI,必须对其进行简化。
  • PyTorch和NNAPI有不同的NHWC张量表示。NNAPI只支持连续张量,因此需要显式的NHWC表示。PyTorch支持大步张量,因此约定总是使用NCHW,但可以选择结合channels-last memory format来获得NHWC行为。

这是PyTorch中NNAPI支持的第一个原型版本,当部署在Android 10及以上设备上时,它支持众所周知的线性卷积和MLP模型。即将发布的PyTorch将添加额外的功能,例如:

  • 支持额外的运算符来解除额外模型类型的阻塞。
  • 支持基于Mask R-CNN架构的加速模型。更多关于移动Mask R-CNN的信息请访问:https://research.fb.com/blog/...
  • 支持较早的Android版本,8 (Oreo)和9 (Pie)。
  • 支持利用控制流语义的模型。
  • 当NNAPI可用的时候,模型可以在用户的Android手机上用,否则自动回退到CPU上执行。

使用表1中所示的手机,表2展示了对开源MobileNetV2模型进行基准测试的结果,与使能360度背景模型中看到的结果类似,可以获得类似的CPU负载,甚至更显著的性能优势。

image.png

表2 — MobileNetV2模型基准

关于如何在你的应用程序中使用PyTorch和Android NNAPI,以及复制相同的基于MobileNet v2的基准测试的更多信息,请看:https://pytorch.org/tutorials...\_mobilenetv2.html。

—END—

英文原文:https://medium.com/pytorch/py...

推荐阅读

关注图像处理,自然语言处理,机器学习等人工智能领域,请点击关注AI公园专栏
欢迎关注微信公众号
AI公园 公众号二维码.jfif
推荐阅读
关注数
8259
内容数
210
关注图像处理,NLP,机器学习等人工智能领域
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息