我们非常高兴地宣布 ExecuTorch alpha 版本的发布,该版本专注于将大型语言模型(LLMs)和大型机器学习模型部署到边缘,稳定 API 界面,并改进我们的安装流程。从我们与 Arm、Apple 和高通技术公司的合作伙伴合作发布的 0.1(预览)版本以来,这几个月一直非常激动人心。
在本文中,我们将讨论我们对 Meta 的 Llama 2 的全面支持,对 Meta 的 Llama 3 的早期支持,ExecuTorch 中的广泛模型支持,并突出我们的合作伙伴为推动我们前进所做的重要工作。
移动设备上的大型语言模型
移动设备在计算、内存和功耗方面高度受限。为了将 LLMs 带到这些设备上,我们大量利用量化和其他技术来适当地打包这些模型。
ExecuTorch alpha 支持使用 GPTQ 进行 4 位后训练量化。我们在 XNNPack 中实现了动态形状支持和新的数据类型,为 CPU 提供了广泛的设备支持。我们还对导出和降低进行了重大改进,减少了内存开销并提高了运行时性能。这使得在 iPhone 15 Pro、iPhone 15 Pro Max、三星 Galaxy S22、S23 和 S24 手机以及其他边缘设备上高效运行 Llama 2 7B 成为可能。还包含了 Llama 3 8B 的早期支持。我们始终在各个边缘设备上提高 token/sec,您可以访问 GitHub 以获取最新的性能数据。
我们正与苹果、Arm 和 Qualcomm Technologies 的合作伙伴紧密合作,通过 Core ML、MPS、TOSA 和 Qualcomm AI Stack 后端分别将任务委托给 GPU 和 NPU 以提高性能。
支持的模型
我们致力于支持 ExecuTorch 的持续增长的模型列表。自预览以来,我们已经显著扩展了我们的测试模型,涵盖 NLP、视觉和语音,具体细节请参阅我们的发布说明。尽管对设备上的LLMs的支持还处于早期阶段,但我们预计大多数传统模型将无缝运行,并委托给 XNNPACK、Core ML、MPS、TOSA 和 HTP 以获得性能。如果您遇到任何问题,请向我们提交 GitHub 问题。
生产力
部署针对特定平台优化的高性能模型通常需要深入分析设备上的运行时数据,以确定在原始 PyTorch 模型中需要做出哪些更改。使用 ExecuTorch alpha,我们提供了一个强大的 SDK,在整个过程中提供可观察性,从模型编写到部署,包括委托和硬件级信息。
ExecuTorch SDK 已增强,包括更好的调试和性能分析工具。由于 ExecuTorch 是基于 PyTorch 构建的,因此调试功能包括将操作节点映射回原始 Python 源代码,以便更有效地解决异常和调整委托和非委托模型实例的性能。您可以在这里了解更多关于 ExecuTorch SDK 的信息。
合作伙伴关系
ExecuTorch 的实现离不开 Arm、Apple 和高通技术公司的紧密合作。我们继续支持 LLMs 和大型 AI 模型在边缘运行 PyTorch,并支持 ExecuTorch 的初始发布。正如我们在 ExecuTorch 预览版早期工作中所看到的,这些大型模型存在独特的挑战,我们很高兴在开放环境中进行开发。
我们还想强调与 Google 在 XNNPACK 上实现 CPU 性能的出色合作。团队继续共同努力,将我们的更改上游化,并在 TensorFlow 和 PyTorch 团队之间进行合作,以确保我们都能支持在边缘运行具有最佳性能的生成 AI 模型。
最后,我们的硬件合作伙伴 MediaTek 一直在他们的 SoC 上为 Llama 模型集启用 ExecuTorch 进行工作。未来我们将有更多消息分享。
阿尔法和生产使用
在我们的 alpha 版本发布中,我们对 ExecuTorch 进行了生产测试。Meta 正在使用 ExecuTorch 在 Meta Quest 3 上进行手部追踪,并在 Ray-Ban Meta 智能眼镜上的各种模型中进行使用。此外,我们已经开始推广 ExecuTorch,并与 Instagram 合作,同时与其他 Meta 产品进行集成。我们很期待看到 ExecuTorch 在其他边缘体验中的应用。
社区
我们很兴奋看到社区中各种努力采用或贡献 ExecuTorch。例如,Unity 最近在游戏开发者大会(GDC)上分享了他们利用 ExecuTorch 和 Edge IR 运行 PyTorch 模型的工作,以及他们的神经网络推理库 Sentis。利用 ExecuTorch 的可定制性和可扩展性,Unity 推出了他们自己的自定义后端,将 ExecuTorch 的 Edge Dialect IR 序列化为 Sentis 的本地序列化格式,使开发者能够轻松地将 PyTorch 模型用于他们的游戏和应用中。
我们一直在公开环境中构建和革新 ExecuTorch。我们的目标是让社区能够轻松高效地将任何机器学习模型部署到边缘设备上。无论你是爱好者还是以此为职业,我们都希望你能加入我们,将你的机器学习模型带到边缘。我们期待你的帮助,以:
- 使用 ExecuTorch 在本地运行你的LLM模型,并在各种部署目标上分享你的反馈
- 扩展我们支持的模型,包括错误报告
- 扩展我们的量化方案
- 帮助我们构建 GPU 和 NPU 的代理
向所有 ExecuTorch 的个人贡献者和早期使用者表示衷心的感谢。我们迫不及待地想要有更多的你们加入我们!