跳转到主要内容
博客

ExecuTorch Alpha:与我们的社区和合作伙伴将 LLM 和 AI 带到边缘

作者: 2024 年 4 月 30 日2024 年 11 月 13 日暂无评论

我们很高兴地宣布发布 ExecuTorch alpha,该版本专注于将大型语言模型 (LLM) 和大型机器学习模型部署到边缘,稳定 API 表面,并改进我们的安装过程。在与我们的合作伙伴 Arm、Apple 和 Qualcomm Technologies, Inc. 的合作下,自 0.1(预览版)发布以来,这几个月令人兴奋。

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

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

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

ExecuTorch alpha 支持使用 GPTQ 进行 4 位训练后量化。我们通过在 XNNPack 中实现动态形状支持和新数据类型,为 CPU 提供了广泛的设备支持。我们还在导出和降低方面取得了显著改进,减少了内存开销并提高了运行时性能。这使得 Llama 2 7B 可以在 iPhone 15 Pro、iPhone 15 Pro Max、三星 Galaxy S22、S23 和 S24 手机以及其他边缘设备上高效运行。早期支持 Llama 3 8B 也包含在内。我们一直在改进各种边缘设备上的 token/秒,您可以访问 GitHub 获取最新的性能数据

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

支持的模型

我们仍致力于通过 ExecuTorch 支持不断扩展的模型列表。自预览版以来,我们已显著扩展了我们测试过的 NLP、视觉和语音模型,详细信息请参见我们的发行说明。尽管对设备上 LLM 的支持尚处于早期阶段,但我们预计大多数传统模型都能无缝开箱即用,并通过委托给 XNNPACK、Core ML、MPS、TOSA 和 HTP 来提高性能。如果您遇到任何问题,请向我们提交GitHub 问题

生产力

部署针对特定平台进行优化的高性能模型通常需要深入可视化设备上的运行时数据,以确定对原始 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 性能。团队继续共同努力,将我们的更改上游化,并跨 TensorFlow 和 PyTorch 团队协作,以确保我们都能以 SOTA 性能支持边缘上的生成式 AI 模型。

最后,我们的硬件合作伙伴联发科一直在努力在他们的 SoC 上通过 ExecuTorch 启用 Llama 模型集合。我们未来将分享更多信息。

Alpha 和生产使用

在我们的 alpha 版本中,我们对 ExecuTorch 进行了生产测试。Meta 正在将 ExecuTorch 用于 Meta Quest 3 上的手部追踪以及 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 的个人贡献者和早期采用者,也表示衷心感谢。我们迫不及待地欢迎更多人加入我们