本页介绍了 ExecuTorch 的工作原理及其主要优势。
ExecuTorch 的工作原理¶
概括地说,使用 ExecuTorch 在边缘设备(如笔记本电脑、手机、可穿戴设备和 IoT 设备)上运行 PyTorch 模型有三个步骤。
导出模型。第一步是将 PyTorch 程序捕获为图形,这是模型的新表示形式,可以用一系列运算符(如加法、乘法或卷积)来表示。此过程安全地保留了原始 PyTorch 程序的语义。这种表示形式是允许在内存较低和/或计算量较低的边缘使用案例上运行模型的第一步。
将导出的模型编译为 ExecuTorch 程序。给定步骤 1 中导出的模型,将其转换为运行时可用于推理的可执行格式(称为 ExecuTorch 程序)。此步骤为各种优化提供了入口点,例如压缩模型(例如量化)以减小大小,以及进一步将子图编译为设备上的专用硬件加速器以改善延迟。它还为内存规划提供了一个入口点,即有效地规划中间张量的位置以减少运行时内存占用。
在目标设备上运行 ExecuTorch 程序。给定一个输入(例如表示为输入激活张量的图像),ExecuTorch 运行时加载 ExecuTorch 程序,执行程序表示的指令,并计算输出。此步骤之所以高效,是因为 (1) 运行时是轻量级的,并且 (2) 在步骤 1 和 2 中已经计算出高效的执行计划,从而可以进行高性能推理。此外,核心运行时的可移植性即使在高度受限的设备上也能实现高性能执行。
此图说明了导出 PyTorch 程序,将其编译为针对特定硬件设备的 ExecuTorch 程序,最后使用 ExecuTorch 运行时在设备上执行该程序的三个步骤。
主要优点¶
ExecuTorch 为需要将机器学习模型部署到边缘设备的工程师提供以下优势:
强大而强大的导出。Export 使用
,它使用 PyTorch 2.x 中使用的相同技术来捕获 PyTorch 程序以便快速执行。虽然 Eager 模式很灵活,并且允许在 Python 中进行实验,但如果 Python 不可用或无法提供高效执行,则它可能无法正常工作。导出流生成的导出中间表示 (Export IR) 可以描述 PyTorch 模型中的各种动态性,包括控制流和动态形状,这使其成为轻松完全捕获现有 PyTorch 模型的强大工具。
操作员标准化。在图导出过程中,图中的节点表示加法、乘法或卷积等运算符。这些运算符是称为 Core ATen Op 集的小型标准化列表的一部分。大多数 PyTorch 程序都可以在导出过程中使用这一小部分运算符分解为图形。少量的标准化算子减少了第三方算子库和加速器后端需要覆盖的表面,以便运行为 ExecuTorch 导出的模型。ExecuTorch 运行时附带了一个这样的库,称为可移植运算符库,用于实现核心 ATen opset。
编译器接口(又名委托)和 OSS 生态系统的标准化。除了上述 Operator 标准化之外,ExecuTorch 还有一个标准化的接口,用于委托编译器。这允许第三方供应商和编译器实现接口和 API 入口点,用于编译和执行针对其专用硬件的(部分或完整)图形。这在硬件支持和性能优化方面提供了更大的灵活性,并更容易与设备上 AI 的 PyTorch 开源生态系统集成。
第一方 SDK 和工具链。由于上述标准化工作,可以为 ExecuTorch 构建统一的第一方 SDK,开发人员可以使用相同的 SDK 导出、编译和部署到各种目标设备(如 iOS、Android 和微控制器),从而简化流程并提高生产力。此外,SDK 还提供分析和调试功能,以便轻松检查中间状态,这是大多数开发人员工作流程的核心部分。
无需中间转换。ExecuTorch 的主要设计原则是允许开发人员在目标设备上运行他们的模型,而无需转换为第三方中间表示。这消除了设备端开发者在处理这些转换步骤时通常会面临的许多问题,例如缺乏可调试性和性能分析、需要熟悉特定于硬件的工具,以及由于转换步骤失败而无法运行模型。
易于定制。开发人员可以通过应用自定义技术来优化其部署,以便在目标架构上获得更好的性能增益,例如与高性能运算符实现链接或根据存储和延迟权衡自定义内存规划。这种级别的自定义是通过对导出的图形上的编译器传递接口和注册 API 进行标准化来实现的。
低开销运行时间和执行。ExecuTorch 运行时用 C++ 编写,效率很高,可以在各种架构上运行,包括 Linux、iOS、Android、嵌入式系统和裸机硬件,几乎不需要额外的设置或配置。它能够仅链接模型所需的那些运算符,从而产生最小的运行时二进制文件大小。由于预先编译和内存规划阶段,它还能够以低延迟运行,运行时仅负责执行(例如,调用运算符并将结果保存在内存位置 X)。
conv
以上重点介绍了 ExecuTorch 在三个主要方面的主要优势:可移植性、生产力和性能。我们认为它是跨移动和边缘计算平台实现设备端 AI 的理想选择。