目录

本页描述了 ExecuTorch 的工作原理及其关键优势。

如何使用ExecuTorch

从高层次来看,在边缘设备(如笔记本电脑、智能手机、可穿戴设备和物联网设备)上运行 PyTorch 模型的 ExecuTorch 有三个步骤。

  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 不可用或无法提供高效的执行,它可能表现不佳。导出流程生成的 导出中间表示(Export IR) 可以描述 PyTorch 模型中的广泛动态性,包括控制流和动态形状,使其成为一种强大的工具,可以轻松地完全捕获现有的 PyTorch 模型。

  • 操作符标准化。 在图导出过程中,图中的节点表示诸如加法、乘法或卷积等操作符。这些操作符属于一个称为核心 ATen 操作集的小型标准化列表。大多数 PyTorch 程序可以在导出时使用这一小组操作符分解为图。小型标准化操作符列表减少了第三方操作符库和加速器后端需要覆盖的范围,以便运行为 ExecuTorch 导出的模型。ExecuTorch 运行时附带了一个名为便携式操作符库的库,该库实现了核心 ATen 操作集。

  • 编译器接口(也称为委托)和开源生态系统标准化。 除了上述的操作符标准化,ExecuTorch还为委托到编译器提供了标准化的接口。这允许第三方供应商和编译器实现针对其专用硬件的(部分或全部)图的编译和执行的接口和API入口点。这在硬件支持和性能优化方面提供了更大的灵活性,并且更容易与PyTorch开源生态系统集成,用于设备上的AI。

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

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

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

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

以上突出了 ExecuTorch 在三个主要类别中的关键优势:可移植性、生产力和性能。我们认为它是在移动设备和边缘计算平台上实现本地 AI 的理想选择。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源