作者:PyTorch 团队

我们很高兴宣布发布 ExecuTorch Alpha,它专注于将大型语言模型 (LLM) 和大型机器学习模型部署到边缘设备,稳定 API 接口,并改进安装流程。自与 Arm、Apple 和 Qualcomm Technologies, Inc. 的合作伙伴协作完成 0.1 版本(预览版)发布以来,这几个月令人兴奋。

在本文中,我们将讨论对 Meta Llama 2 的全面支持、对 Meta Llama 3 的早期支持、ExecuTorch 中的广泛模型支持,并重点介绍我们的合作伙伴为推动我们前进所做的重要工作。

移动设备上的大型语言模型

移动设备在计算、内存和功耗方面受到高度限制。为了将 LLM 带到这些设备上,我们大量利用量化和其他技术,以适当地打包这些模型。

ExecuTorch Alpha 支持使用 GPTQ 的 4 位后训练量化。通过在 XNNPack 中引入动态 shape 支持和新的数据类型,我们在 CPU 上提供了广泛的设备支持。我们还在导出和 lowering 方面做了重大改进,降低了内存开销,提高了运行时性能。这使得 Llama 2 7B 能够在 iPhone 15 Pro、iPhone 15 Pro Max、三星 Galaxy S22、S23 和 S24 手机以及其他边缘设备上高效运行。还包括对 Llama 3 8B早期支持。我们一直在改进各种边缘设备上的每秒 token 数 (token/sec),您可以访问 GitHub 查看最新的性能数据

我们正与 Apple、Arm 和 Qualcomm Technologies 的合作伙伴密切合作,通过分别委托给 Core ML、MPS、TOSA 和 Qualcomm AI Stack 后端,来利用 GPU 和 NPU 提高性能。

支持的模型

我们仍然致力于通过 ExecuTorch 支持不断增加的模型列表。自预览版以来,我们已显著扩展了在自然语言处理 (NLP)、视觉和语音领域的测试模型,详细信息请参阅我们的发布说明。虽然设备上 LLM 的支持尚处于早期阶段,但我们预计大多数传统模型将能无缝地直接运行,并通过委托给 XNNPACK、Core ML、MPS、TOSA 和 HTP 来提高性能。如果您遇到任何问题,请在 GitHub 上向我们提交 issue

生产力

部署针对特定平台优化的性能模型通常需要深入可视化设备上的运行时数据,以确定如何在原始 PyTorch 模型中进行正确的更改。使用 ExecuTorch Alpha,我们提供了一个强大的 SDK,可在从模型创作到部署的整个过程中提供可观察性,包括委托和硬件级别的信息。

ExecuTorch SDK 已得到增强,包含了更好的调试和性能分析工具。由于 ExecuTorch 构建在 PyTorch 之上,调试功能包括将算子节点映射回原始 Python 源代码的能力,以更高效地解决异常并对委托和非委托的模型实例进行性能调优。您可以在此处了解更多关于 ExecuTorch SDK 的信息。

合作伙伴关系

ExecuTorch 的实现离不开 Arm、Apple 和 Qualcomm Technologies 之间的紧密合作。在我们为 PyTorch 支持边缘设备上的 LLM 和大型 AI 模型之际,ExecuTorch 初次发布时的合作仍在继续。正如我们在 ExecuTorch Alpha 的早期工作中看到的那样,这些更大的模型带来了独特的挑战,我们很高兴能在开源社区中进行开发。

我们还要重点介绍与 Google 在 XNNPACK 上的出色合作,以提升 CPU 性能。各团队继续协作,将我们的更改 upstream 到主分支,并在 TensorFlow 和 PyTorch 团队之间紧密配合,确保我们都能在边缘设备上以 SOTA(State-of-the-Art,最先进)性能支持生成式 AI 模型。

最后,我们的硬件合作伙伴 MediaTek 一直在努力,在其 SoCs 上通过 ExecuTorch 支持 Llama 系列模型。未来我们将分享更多信息。

Alpha 版和生产使用

凭借我们的 Alpha 版本,我们已经对 ExecuTorch 进行了生产环境测试。Meta 在 Meta Quest 3 上使用 ExecuTorch 进行手部追踪,并在 Ray-Ban Meta 智能眼镜上使用各种模型。此外,我们已开始在 Instagram 中推广 ExecuTorch,并正与其他 Meta 产品集成。我们很高兴看到 ExecuTorch 如何应用于其他边缘体验。

社区

我们很高兴看到社区中为采用或贡献 ExecuTorch 所做的各种努力。例如,Unity 最近在游戏开发者大会 (GDC) 上分享了他们的工作,关于如何利用 ExecuTorch 和 Edge IR,通过其神经网络推理库 Sentis 运行 PyTorch 模型。利用 ExecuTorch 的可定制性和可扩展性,Unity 引入了自己的自定义后端,该后端将 ExecuTorch 的 Edge Dialect IR 序列化为 Sentis 的原生序列化格式,使开发者能够轻松地在其游戏和应用中使用 PyTorch 模型。

我们一直在开源社区中构建和创新 ExecuTorch。我们的北极星目标是赋能社区,使其能够在边缘设备上轻松高效地部署任何 ML 模型。无论您是爱好者还是专业开发者,我们都非常希望您加入我们,将您的 ML 模型带到边缘。我们正在寻求您的帮助,以

  1. 使用 ExecuTorch 在本地运行您的 LLM 模型,在各种部署目标上,并分享您的反馈
  2. 扩展我们支持的模型,包括提交错误报告
  3. 扩展我们的量化方案
  4. 帮助我们构建 GPU 和 NPU 的委托

对所有 ExecuTorch 的个人贡献者和早期采用者,我们同样表示衷心感谢。我们迫不及待地欢迎更多人加入我们