- 随着 v0.4 的发布,ExecuTorch 已达到 Beta 状态,提供稳定的 API 和运行时,以及广泛的内核覆盖。
- ExecuTorch 是推荐用于 Llama 3.2 1B/3B 模型在端侧的推理引擎,为原始模型和量化模型提供增强的性能和内存效率。
- ExecuTorch 的采用率和生态系统增长显著增加,下一步重点是提高非 CPU 后端的可靠性、性能和覆盖范围。
当前的端侧人工智能市场
端侧人工智能市场一直在快速扩张,并正在彻底改变我们与技术互动的方式。它正在解锁新的体验,实现个性化,并减少延迟。传统上,计算机视觉和语音识别是端侧人工智能的主要用例,尤其是在物联网(IoT)、工业应用和移动设备中。然而,大型语言模型(LLMs)的出现使生成式人工智能成为人工智能领域增长最快的领域,随后凸显了端侧生成式人工智能的重要性。IDC 预测,到 2028 年,全球将出货近 10 亿部具备生成式人工智能能力的智能手机。
LLMs 不仅变得更小,而且更强大。这导致了新一类应用程序的出现,这些应用程序利用多个模型来实现智能代理和简化的工作流程。社区正在快速采用并为这些新模型做出贡献,模型发布后数小时内就创建了量化版本。几家领先的科技公司正在大力投资小型 LLMs,甚至在端侧大规模部署低秩适应 (LoRA) 以改变用户体验。
然而,这种快速进展也伴随着代价。端侧人工智能领域的碎片化在从模型创作到端侧部署的过程中造成了复杂性和低效率。这正是 PyTorch 的 ExecuTorch 发挥作用的地方——我们的 Beta 发布标志着在解决这些挑战和赋能开发者创建创新型 AI 驱动应用程序方面迈出了重要里程碑。
今日新内容
距离我们首次开源 ExecuTorch 恰好一年,距离 Alpha 发布已六个月,今天,我们很高兴宣布三项主要进展
1. Beta。ExecuTorch 已从 v0.4 版本开始达到 Beta 状态!它现已在 Meta 的各种生产环境中广泛采用和使用。通过这一采用过程,我们确定并解决了功能差距,提高了稳定性,并扩大了内核和加速器覆盖范围。这些改进使我们有信心将 ExecuTorch 从 Alpha 升级到 Beta 状态,我们很高兴欢迎社区在其自己的生产环境中采用它。以下是三项具体增强功能
- 开发者可以编写应用程序代码,并将最新的 ExecuTorch 作为依赖项引入,在需要时通过清晰的 API 契约进行更新。这得益于我们为稳定 API 所做的努力,以及我们明确的 API 生命周期和向后兼容性策略。
- ExecuTorch 在 CPU 上的运行达到了所需的性能、可移植性和覆盖范围。特别是,我们已将所有核心 ATen 运算符的 85% 以上实现为我们的可移植 CPU 内核库的一部分,以确保模型在 ExecuTorch 上运行在大多数情况下都能顺利工作,并使缺少操作成为例外而非常态。此外,我们集成并广泛测试了我们的 XNNPACK delegate,以在各种 CPU 架构上实现高性能。它目前已在多个生产案例中使用。
- 除了用于提高可移植性的低级 ExecuTorch 组件外,我们还构建了扩展和更高级别的抽象,以支持更常见的用例,例如支持端侧调试和性能分析的开发者工具,以及用于简化移动设备部署的Module.h 扩展。
2. 端侧大型语言模型 (LLMs)。 社区对在端侧设备上部署大型语言模型 (LLMs) 的兴趣日益增长,因为它提供了更好的隐私和离线能力。然而,这些模型相当庞大,挑战了现有技术的极限。幸运的是,ExecuTorch 可以支持这些模型,并且我们通过大量的优化增强了整个框架。
- ExecuTorch 是目前推荐的框架,用于在端侧以优异性能运行最新 Llama 模型。Llama 3.2 1B/3B 模型非常适合移动部署,特别是 Meta 发布的官方量化 1B/3B 模型,因为它在性能、准确性和大小之间提供了很好的平衡。在 Android OnePlus 12 设备上进行基准测试时,部署 Llama 3.2 1B/3B 量化模型,平均解码延迟降低 2.5 倍,平均预填充延迟降低 4.2 倍,同时模型大小减小 56%,内存使用减少 41%(我们还在 Samsung S24+ 上验证了 1B 和 3B 的类似相对性能,以及在 Samsung S22 上验证了 1B 的类似相对性能)。例如,对于 Llama 3.2 1B 量化模型,ExecuTorch 在 OnePlus 12 上使用来自 XNNPACK 和 Kleidi 库的最新 CPU 内核,解码速度可达 50.2 tokens/s,预填充速度可达 260 tokens/s。这些量化模型使开发者能够将 LLMs 集成到内存和功耗受限的设备中,同时仍保持质量和安全性。
- ExecuTorch 的价值主张之一是能够无缝使用移动设备上的加速器。事实上,ExecuTorch 也展示了通过加速器在 Apple MPS backend、Qualcomm AI Accelerator 和 MediaTek AI Accelerator 上运行 Llama 以实现更高的性能。
- 社区和行业对多模态和超越纯文本的 LLMs 的兴趣日益增长,Meta 的 Llama 3.2 11B/90B 视觉模型以及 Llava 等开源模型就是证明。到目前为止,我们已经通过 ExecuTorch 在手机上实现了 Llava 1.5 7B 模型,并进行了许多优化,特别是将运行时内存从 11GB 一直减少到 5GB。
3. 生态系统和社区采用
ExecuTorch 现已进入 Beta 阶段,足够成熟,可用于生产环境。它在 Meta 的各种产品端被越来越多地使用。例如,ExecuTorch 已经为 Meta 的 Ray-Ban Meta Smart Glasses 和 Quest 3 VR 头显以及 Instagram 和 WhatsApp 中的各种 ML 推理用例提供支持。
我们还与 Hugging Face 合作,为使用 torch.export 导出的模型提供原生 ExecuTorch 支持。这项合作确保导出的成品可以直接被优化并在各种移动和端侧设备上高效运行。像 gemma-2b 和 phi3-mini 这样的模型已经得到支持,更多基础模型的支持正在进行中。
凭借稳定的 API 和对生成式 AI 的支持,我们很高兴与社区一起构建和发展 ExecuTorch。端侧人工智能社区正在快速发展,并在各个领域探索采用 ExecuTorch 的方式。例如,Digica 开发的一款移动应用程序正在使用 ExecuTorch 简化医院的库存管理。另一个例子是 Software Mansion 开发了一款名为 EraserAI 的应用程序,它通过 ExecuTorch 通过 Core ML delegate 在端侧运行 EfficientSAM 模型,从而移除照片中不需要的对象。
迈向正式发布 (GA)
自 ExecuTorch Alpha 版本发布以来,我们看到社区对在各种生产环境中使用 ExecuTorch 的兴趣日益增长。为此,我们在 API 稳定性和成熟度方面取得了巨大进展,并在社区支持、采用和贡献 ExecuTorch 方面投入了大量精力。随着我们日益接近 GA,我们正在以下领域投入努力
-
非 CPU 后端: 将非 CPU 后端提升到更高的稳健性、覆盖范围和性能是我们的下一个目标。从最初发布的第一天起,我们就与 Apple(针对 Core ML 和 MPS)、Arm(针对 EthosU NPU)和 Qualcomm(针对 Hexagon NPU)合作,将加速器集成到 ExecuTorch 中,此后我们将合作扩展到 MediaTek(NPU)和 Cadence(XTensa DSP)。我们还在内部构建Vulkan GPU 集成。在功能覆盖方面,我们与合作伙伴成功实现了核心功能,确保与我们的开发者工具无缝集成,并展示了与许多加速器成功的 LLM 集成。我们的下一个重要步骤是在真实世界的生产用例中彻底验证系统的性能和可靠性。这一阶段将帮助我们完善体验并确保顺利运行所需的稳定性。
-
基准测试基础设施:作为我们持续测试工作的一部分,我们开发了一个基准测试基础设施以及一个公开仪表板,以展示我们在端侧模型推理基准测试方面的进展。这使我们能够透明地跟踪和显示各种后端上的模型覆盖情况,为社区提供我们迈向目标的实时洞察。
我们很高兴与您分享这些进展,并期待在与合作伙伴和社区的协作中持续改进!我们欢迎社区贡献,帮助我们将 ExecuTorch 打造成在端侧部署 AI 和 LLM 模型的明确选择。我们邀请您在您的端侧项目中使用 ExecuTorch,或者更好的是考虑为其做出贡献。您也可以在我们的 GitHub 页面上报告任何问题。