本页介绍 ExecuTorch 的工作原理及其主要优势。
ExecuTorch 工作原理¶
总的来说,在笔记本电脑、手机、可穿戴设备和物联网设备等边缘设备上使用 ExecuTorch 运行 PyTorch 模型需要三个步骤。
导出模型。 第一步是将 PyTorch 程序捕获为图,这是一种新的模型表示形式,可以用一系列运算符(如加法、乘法或卷积)来表示。此过程安全地保留了原始 PyTorch 程序的语义。这种表示形式是在内存和/或计算能力较低的边缘用例中运行模型的第一步。
将导出的模型编译为 ExecuTorch 程序。 给定步骤 1 中导出的模型,将其转换为名为 ExecuTorch 程序的运行时可用于推理的可执行格式。此步骤为各种优化提供入口点,例如压缩模型(例如,量化)以减小大小,以及进一步将子图编译到设备端专用硬件加速器以提高延迟。它还为内存规划提供入口点,即有效地规划中间张量的位置以减少运行时内存占用。
在目标设备上运行 ExecuTorch 程序。 给定输入(例如,表示为输入激活张量的图像),ExecuTorch 运行时加载 ExecuTorch 程序,执行程序表示的指令,并计算输出。此步骤非常高效,因为 (1) 运行时是轻量级的,并且 (2) 步骤 1 和 2 中已经计算出高效的执行计划,从而可以执行高性能推理。此外,核心运行时的可移植性使得即使在高度受限的设备上也能实现高性能执行。
下图说明了导出 PyTorch 程序、将其编译为针对特定硬件设备的 ExecuTorch 程序,以及最终使用 ExecuTorch 运行时在设备上执行该程序的三步过程。
主要优势¶
ExecuTorch 为需要将机器学习模型部署到边缘设备的工程师提供以下优势
强大而稳健的导出功能。 导出使用
torch.export()
,它使用与 PyTorch 2.x 中相同的技术来捕获 PyTorch 程序以实现快速执行。虽然 Eager 模式很灵活并且允许在 Python 中进行实验,但如果 Python 不可用或无法提供高效执行,则可能无法很好地工作。导出流程生成的导出中间表示 (Export 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 的理想选择。