• 文档 >
  • ExecuTorch 的工作原理
快捷方式

此页面描述了 ExecuTorch 的工作原理及其主要优势。

ExecuTorch 的工作原理

从高级角度来看,在边缘设备(如笔记本电脑、手机、可穿戴设备和物联网设备)上使用 ExecuTorch 运行 PyTorch 模型需要三个步骤。

  1. **导出模型。**第一步是将 PyTorch 程序捕获为图形,这是一种新的模型表示形式,可以用一系列运算符(如加法、乘法或卷积)来表示。此过程安全地保留了原始 PyTorch 程序的语义。这种表示形式是使模型能够在内存或计算能力有限的边缘用例中运行的第一步。

  2. **将导出的模型编译为 ExecuTorch 程序。**根据步骤 1 中导出的模型,将其转换为运行时可用于推理的可执行格式,称为 ExecuTorch 程序。此步骤为各种优化提供了入口点,例如压缩模型(例如量化)以减小尺寸,以及进一步将子图编译到设备上的专用硬件加速器以提高延迟。它还为内存规划提供了入口点,即有效地规划中间张量的位置以减少运行时内存占用。

  3. **在目标设备上运行 ExecuTorch 程序。**给定一个输入(例如,表示为输入激活张量的图像),ExecuTorch 运行时加载 ExecuTorch 程序,执行程序表示的指令并计算输出。此步骤非常高效,因为 (1) 运行时轻量级,并且 (2) 在步骤 1 和 2 中已经计算出了有效的执行计划,从而可以进行高性能推理。此外,核心运行时的可移植性即使在高度受限的设备上也能实现高性能执行。

此图说明了导出 PyTorch 程序、将其编译为针对特定硬件设备的 ExecuTorch 程序,以及最后使用 ExecuTorch 运行时在设备上执行程序的三步过程。name

主要优势

ExecuTorch 为需要将机器学习模型部署到边缘设备的工程师提供了以下优势

  • **强大且稳健的导出。**导出使用 torch.export(),它使用 PyTorch 2.x 中用于捕获 PyTorch 程序以进行快速执行的技术。虽然 Eager 模式灵活且允许在 Python 中进行实验,但如果 Python 不可用或无法提供高效的执行,则它可能无法正常工作。导出流程生成的导出中间表示(导出 IR)可以描述 PyTorch 模型中各种动态特性,包括控制流和动态形状,这使其成为无需大量工作即可完全捕获现有 PyTorch 模型的强大工具。

  • **运算符标准化。**在图形导出过程中,图形中的节点表示运算符,如加法、乘法或卷积。这些运算符是称为 核心 ATen 运算符集 的一小部分标准化列表的一部分。大多数 PyTorch 程序可以在导出期间使用这小组的运算符分解为图形。标准化运算符列表减少了第三方运算符库以及加速器后端需要覆盖的表面,以便运行为 ExecuTorch 导出的模型。ExecuTorch 运行时附带一个名为可移植运算符库的库,该库实现了核心 ATen 运算符集。

  • **编译器接口(又名委托)和 OSS 生态系统的标准化。**除了上述运算符标准化之外,ExecuTorch 还为委托给编译器提供了标准化接口。这允许第三方供应商和编译器实现接口和 API 入口点,以针对其专用硬件编译和执行(部分或全部)图形。这提供了更大的硬件支持和性能优化的灵活性,以及与 PyTorch 开源生态系统更轻松地集成以进行设备上 AI。

  • **第一方 SDK 和工具链。**由于上述标准化工作,可以为 ExecuTorch 构建统一的第一方 SDK,开发人员可以使用相同的 SDK 导出、编译和部署到各种目标设备(如 iOS、Android 和微控制器),从而简化流程并提高生产力。此外,SDK 提供了分析和调试功能,可以轻松检查中间状态,这些状态是大多数开发人员工作流程的核心部分。

  • **无需中间转换。**ExecuTorch 的主要设计原则是允许开发人员在目标设备上运行其模型,而无需转换为第三方中间表示。这消除了设备上开发人员在使用这些转换步骤时通常会遇到的一些问题,例如缺乏可调试性和分析能力、需要熟悉特定于硬件的工具以及由于转换步骤失败而导致模型无法运行。

  • 易于定制。 开发人员可以通过应用自定义技术(例如,链接高性能算子实现或根据存储和延迟权衡定制内存规划)来优化其部署,从而在目标架构上获得更好的性能提升。通过标准化编译器传递接口和导出图上的注册 API,可以实现这种级别的定制。

  • 低开销运行时和执行。 ExecuTorch 运行时是用 C++ 编写的,效率极高,并且可以在各种架构上运行,包括 Linux、iOS、Android、嵌入式系统和裸机硬件,只需很少的额外设置或配置。它能够仅链接模型所需的算子,从而产生最小的运行时二进制文件大小。由于提前编译和内存规划阶段,它还能够以低延迟运行,运行时仅负责执行(例如,调用算子 conv 并将结果保存在内存位置 X 中)。

以上重点介绍了 ExecuTorch 在三大类中的关键优势:可移植性、生产力和性能。我们认为它是实现移动和边缘计算平台上设备端 AI 的理想选择。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源