我们很高兴地宣布发布 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 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 性能。团队继续合作,将我们的更改上游化,并在 TensorFlow 和 PyTorch 团队之间进行合作,以确保我们都能以 SOTA 性能支持边缘设备上的生成式 AI 模型。
最后,我们的硬件合作伙伴 MediaTek 一直致力于在他们的 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。我们的目标是赋能社区,使其能够轻松高效地在边缘设备上部署任何机器学习模型。无论您是业余爱好者还是日常工作,我们都希望您能 加入我们,将您的机器学习模型带到边缘。我们正在寻求您的帮助,以
- 使用 ExecuTorch 在各种部署目标上 本地运行您的 LLM 模型 并分享您的反馈
- 扩展我们的支持模型,包括错误报告
- 扩展我们的量化方案
- 帮助我们构建 GPU 和 NPU 的委托
在此也向所有 ExecuTorch 的个人贡献者和早期采用者表示衷心的感谢。我们迫不及待地希望更多的人 加入我们!