今天,我们宣布推出四项 PyTorch 原型功能。其中前三项将使移动机器学习开发者能够在构成片上系统 (SOC) 的全套硬件 (HW) 引擎上执行模型。这为开发者提供了优化模型执行的选项,以实现独特的性能、功耗和系统级并发。
这些功能包括支持在以下片上硬件引擎上执行:
- 使用与 Google 合作开发的 Android 神经网络 API (NNAPI) 进行 DSP 和 NPU 执行
- 通过 Vulkan 在 Android 上进行 GPU 执行
- 通过 Metal 在 iOS 上进行 GPU 执行
此版本还引入了对 Linux 上 ARM64 版本的支持,提升了开发者的效率。
下面,您将找到各项功能的简要说明以及入门链接。这些功能可通过我们的每夜构建版本获取。如有任何评论或反馈,请通过 PyTorch 论坛联系我们。我们非常乐意听取您对这些功能的反馈,并了解您的使用情况!
与 Google Android 的 NNAPI 支持
Google Android 和 PyTorch 团队合作,通过 PyTorch Mobile 启用了对 Android 神经网络 API (NNAPI) 的支持。开发者现在可以在 Android 手机上实现高性能执行,因为他们的机器学习模型将能够访问手机片上系统的额外硬件模块。NNAPI 允许 Android 应用程序在为手机供电的芯片上最强大、最高效的部分运行计算密集型神经网络,包括 DSP(数字信号处理器)和 NPU(专用神经网络处理单元)。该 API 在 Android 8 (Oreo) 中引入,并在 Android 10 和 11 中显著扩展,以支持更丰富的 AI 模型。通过此集成,开发者现在可以直接从 PyTorch Mobile 无缝访问 NNAPI。此初始版本包括对核心功能和操作符集的完全功能支持,Google 和 Facebook 将在未来几个月内努力扩展功能。
链接
- Android 博客:Android 神经网络 API 1.3 和 PyTorch Mobile 支持
- PyTorch Medium 博客:PyTorch Mobile 支持 Android NNAPI
PyTorch 移动 GPU 支持
在 GPU 上进行推理可以为许多模型类型提供出色的性能,特别是那些利用高精度浮点运算的模型。利用 GPU 进行机器学习模型执行,例如高通、联发科和苹果等公司 SOC 中的 GPU,可以实现 CPU 卸载,从而将移动 CPU 用于非机器学习用例。为设备 GPU 提供的这种初始原型级支持是通过 iOS 的 Metal API 规范和 Android 的 Vulkan API 规范实现的。由于此功能处于早期阶段:性能尚未优化,模型覆盖范围有限。我们预计这种情况将在 2021 年显著改善,并希望听到您希望在哪种模型和设备上看到性能改进。
链接
Linux 的 ARM64 构建版本
我们现在将为 Linux 上的 ARM64 设备提供原型级 PyTorch 构建版本。随着我们在社区中看到更多 ARM 用法,例如 Raspberry Pis 和 Graviton(2) 实例,它们分别涵盖边缘和服务器。此功能可通过我们的每夜构建版本获取。
我们重视您对这些功能的反馈,并期待与您合作,不断进一步改进它们!
谢谢,
PyTorch 团队