由 PyTorch 团队

  • ExecuTorch 已达到 Beta 版本,随着 v0.4 版本的发布,提供了稳定的 API 和运行时,以及广泛的内核覆盖。
  • ExecuTorch 是 Llama 3.2 1B/3B 模型的推荐设备端推理引擎,为原始模型和量化模型提供增强的性能和内存效率。
  • ExecuTorch 的采用率和生态系统增长显著,目前重点在于提高非 CPU 后端的可靠性、性能和覆盖范围。

当前设备端 AI 市场

设备端 AI 市场正在迅速扩张,并正在改变我们与技术互动的方式。它正在解锁新的体验,实现个性化,并降低延迟。传统上,计算机视觉和语音识别是设备端 AI 的主要用例,尤其是在物联网、工业应用和移动设备中。然而,大型语言模型(LLMs)的出现使得生成式 AI 成为 AI 领域增长最快的部分,从而突出了设备端生成式 AI 的重要性。IDC 预测到 2028 年,全球将有近 10 亿部具备生成式 AI 能力的智能手机出货。

LLMs不仅越来越小,而且越来越强大。这导致了新一代应用程序的诞生,这些应用程序利用多个模型来实现智能代理和简化工作流程。社区正在迅速采用并贡献这些新模型,量化版本在模型发布后几小时内就创建了。几家领先的技术公司正在大力投资小型LLMs,甚至在设备端大规模部署低秩自适应(LoRA)以改变用户体验。

然而,这种快速进步是有代价的。我们设备上 AI 生态系统的碎片化,在从模型创作到边缘部署的过程中,造成了复杂性和低效。这就是 PyTorch 的 ExecuTorch 发挥作用的地方——我们发布的 Beta 版本标志着解决这些挑战和赋能开发者创建创新 AI 应用的重要里程碑。

今日新闻

自我们从开源 ExecuTorch 以来已经过去了整整一年,从 Alpha 版本发布以来已经过去了六个月,今天,我们激动地宣布三个主要进展:

1. Beta。从 v0.4 版本开始,ExecuTorch 已达到 Beta 状态!它现在已在 Meta 的生产环境中得到广泛应用。在这个过程中,我们识别并解决了功能差距,提高了稳定性,并扩展了内核和加速器的覆盖范围。这些改进使我们相信可以将 ExecuTorch 从 Alpha 版本提升到 Beta 版本,我们很高兴欢迎社区在自己的生产环境中采用它。以下是三个具体的改进:

  1. 开发者可以编写应用程序代码,并将最新的 ExecuTorch 作为依赖项包含在内,在需要时通过干净的 API 合约进行更新。这得益于我们的 API 稳定化努力,以及我们明确的 API 生命周期和向后兼容性策略。
  2. 在 CPU 上运行 ExecuTorch 达到了必要的性能、可移植性和覆盖率。特别是,我们已经将超过 85%的所有核心 ATen 算子作为我们可移植的 CPU 内核库的一部分实现,以确保在 ExecuTorch 上运行模型在大多数情况下都能正常工作,将缺失的算子作为例外而不是常态。此外,我们还集成了 XNNPACK 代理,并在广泛的 CPU 架构上进行了广泛的测试,以实现高性能。它今天已在多个生产案例中使用。
  3. 除了用于提高可移植性的低级 ExecuTorch 组件之外,我们还构建了扩展和高级抽象,以支持更常见的用例,例如支持设备调试和性能分析的开发者工具,以及简化移动设备部署的 Module.h 扩展。

2. 设备端大型语言模型(LLMs)。社区中越来越多人对在边缘设备上部署大型语言模型(LLMs)表现出浓厚兴趣,因为这提供了改进的隐私和离线功能。然而,这些模型相当庞大,推高了可能性的极限。幸运的是,ExecuTorch 可以支持这些模型,并且我们对整体框架进行了众多优化。

  • ExecuTorch 是今天推荐用于在设备上运行最新 Llama 模型的框架,具有出色的性能。Llama 3.2 1B/3B 模型非常适合移动部署,尤其是 Meta 官方发布的量化 1B/3B 模型,因为它在性能、准确性和大小之间提供了很好的平衡。在部署 Llama 3.2 1B/3B 量化模型时,解码延迟平均提高了 2.5 倍,预填充延迟平均提高了 4.2 倍,而在 Android OnePlus 12 设备上进行基准测试时,模型大小平均减少了 56%,内存使用量平均减少了 41%(我们还在三星 S24+(1B 和 3B)和三星 S22(1B)上验证了类似的相关性能)。例如,对于 Llama 3.2 1B 量化模型,ExecuTorch 能够在 OnePlus 12 上实现解码 50.2 个 token/s 和预填充 260 个 token/s,使用 XNNPACK 和 Kleidi 库的最新 CPU 内核。这些量化模型允许开发者在内存和功耗受限的设备上集成LLMs,同时仍保持质量和安全性。
  • ExecuTorch 的一个价值主张是能够在移动设备上无缝使用加速器。事实上,ExecuTorch 还展示了在 Apple MPS 后端、高通 AI 加速器和 MediaTek AI 加速器上运行 Llama 以实现更高性能的加速器。
  • 随着对多模态和超越纯文本的社区和行业兴趣日益增长,Meta 的 Llama 3.2 11B/90B 视觉模型和开源模型如 Llava 就是证明。到目前为止,我们已通过 ExecuTorch 在手机上启用 Llava 1.5 7B 模型,进行了许多优化,特别是将运行时内存从 11GB 降低到 5GB。

3. 生态系统和社区采用
现在,随着 ExecuTorch 进入 Beta 阶段,它已经足够成熟,可以用于生产。它正在 Meta 的各个产品界面中得到越来越广泛的应用。例如,ExecuTorch 已经在 Meta 的 Ray-Ban Meta 智能眼镜、Quest 3 VR 头戴式设备和 Instagram、WhatsApp 等应用中为各种机器学习推理用例提供支持。

我们也与 Hugging Face 合作,为使用 torch.export 导出的模型提供原生的 ExecuTorch 支持。这次合作确保了导出的工件可以直接在多种移动和边缘设备上高效运行。像 gemma-2b 和 phi3-mini 这样的模型已经得到支持,更多基础模型的支持工作正在进行中。

随着稳定的 API 和通用人工智能支持,我们很高兴与社区一起构建和扩展 ExecuTorch。设备端人工智能社区正在快速增长,并寻找在各个领域采用 ExecuTorch 的方法。例如,ExecuTorch 被用于 Digica 开发的移动应用程序中,以简化医院的库存管理。另一个例子是,Software Mansion 开发了一个名为 EraserAI 的应用程序,使用 EfficientSAM 在设备端通过 Core ML 代理运行 ExecuTorch,以从照片中移除不需要的对象。

面向通用可用性(GA):
自 ExecuTorch alpha 版本原始发布以来,我们看到了社区中越来越多的人对在各个生产环境中使用 ExecuTorch 表现出浓厚兴趣。为此,我们在更稳定和成熟的 API 方面取得了巨大进展,并在社区支持、采用和对 ExecuTorch 的贡献上投入了大量资源。随着我们接近 GA,我们正在以下领域投入我们的努力:

  • 非 CPU 后端:将非 CPU 后端提升至更高的鲁棒性、覆盖范围和性能是我们的下一个目标。从我们最初发布的当天起,我们就与苹果(Core ML 和 MPS)、Arm(EthosU NPU)和高通(Hexagon NPU)合作,在 ExecuTorch 上进行加速器集成,并随后将我们的合作伙伴关系扩展到 MediaTek(NPU)和 Cadence(XTensa DSP)。我们还在内部构建 Vulkan GPU 集成。在功能覆盖方面,我们已经与我们的合作伙伴成功实现了核心功能,确保了与我们的开发者工具的无缝集成,并展示了与许多加速器的成功LLM集成。我们的下一步重大举措是彻底验证系统在实际、生产用例中的性能和可靠性。这一阶段将帮助我们微调体验并确保平稳运行所需的稳定性。

  • 基准测试基础设施:作为我们持续测试工作的部分,我们开发了一套基准测试基础设施以及一个公共仪表板,以展示我们在设备端模型推理基准测试方面的进展。这使我们能够透明地跟踪和显示模型覆盖范围,让我们的社区实时了解我们如何朝着目标迈进。

我们很兴奋与大家分享这些进展,并期待与我们的合作伙伴和社区继续改进!我们欢迎社区贡献,帮助我们使 ExecuTorch 成为部署 AI 和LLM模型到设备上的不二之选。我们邀请您开始在您的设备端项目中使用 ExecuTorch,或者更好的是考虑为其做出贡献。您也可以在我们的 GitHub 页面上报告任何问题。