PyTorch Mobile现已支持Android NNAPI

2024-06-21 08:18

本文主要是介绍PyTorch Mobile现已支持Android NNAPI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:David Reiss

编译:ronghuaiyang

导读

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

今天,我们宣布了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模型利用。

表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/2018/01/enabling-full-body-ar-with-mask-r-cnn2go/。

  • 支持较早的Android版本,8 (Oreo)和9 (Pie)。

  • 支持利用控制流语义的模型。

  • 当NNAPI可用的时候,模型可以在用户的Android手机上用,否则自动回退到CPU上执行。

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

表2 — MobileNetV2模型基准

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

—END—

英文原文:https://medium.com/pytorch/pytorch-mobile-now-supports-android-nnapi-e2a2aeb74534

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

这篇关于PyTorch Mobile现已支持Android NNAPI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080685

相关文章

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整