本文档介绍 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 程序以实现快速执行。虽然急切模式灵活且允许在 Python 中进行实验,但在 Python 不可用或无法提供高效执行的情况下可能效果不佳。导出流程生成的导出中间表示 (Export IR) 可以描述 PyTorch 模型中的各种动态性,包括控制流和动态形状,这使其成为以少量努力完全捕获现有 PyTorch 模型的强大工具。运算符标准化。 在图导出过程中,图中的节点表示加法、乘法或卷积等运算符。这些运算符是称为 Core ATen Op set 的小型标准化列表的一部分。大多数 PyTorch 程序可以在导出过程中使用这一小组运算符分解为图。标准化运算符的小型列表减少了第三方运算符库和加速器后端在运行为 ExecuTorch 导出的模型时需要覆盖的范围。ExecuTorch 运行时附带了一个这样的库,称为便携式运算符库,它实现了核心 ATen 运算符集。
编译器接口(又称代理)和开源生态系统的标准化。 除了上述运算符标准化之外,ExecuTorch 还提供了一个 标准化接口 用于委托给编译器。这允许第三方供应商和编译器实现接口和 API 入口点,用于编译和执行(部分或全部)针对其专用硬件的图。这提供了更大的硬件支持和性能优化灵活性,并且更容易与 PyTorch 开源生态系统集成以实现设备上的 AI。
第一方开发者工具 由于上述标准化工作,构建统一的第一方 开发者工具 对于 ExecuTorch 成为可能,开发人员可以使用相同的 API 将其导出、编译并部署到各种目标设备(如 iOS、Android 和微控制器),从而简化流程并提高生产力。此外,ExecuTorch 还提供性能分析和调试功能,可以轻松检查中间状态,这是大多数开发人员工作流程的核心部分。
无需中间转换。 ExecuTorch 的主要设计原则是允许开发人员在目标设备上运行其模型,而无需转换为第三方中间表示。这消除了设备开发人员在处理这些转换步骤时通常面临的许多问题,例如缺乏调试和性能分析能力、需要熟悉特定于硬件的工具以及由于转换步骤失败而无法运行模型。
易于定制。 开发人员可以通过应用自定义技术来优化其部署,以在目标架构上获得更好的性能提升,例如 链接高性能运算符实现 或基于存储和延迟权衡 自定义内存规划。通过标准化 编译器通道接口 和导出图上的注册 API,可以实现这种程度的定制。
低开销运行时和执行。 ExecuTorch 运行时用 C++ 编写,效率很高,并且可以在各种架构上运行,包括 Linux、iOS、Android、嵌入式系统和裸机硬件,只需少量额外的设置或配置。它能够仅链接模型所需的运算符,从而实现最小的运行时二进制文件大小。由于提前编译和内存规划阶段,它还能够以低延迟运行,运行时仅负责执行(例如,调用运算符
conv
并将结果保存在内存位置 X)。
以上内容重点介绍了 ExecuTorch 在便携性、生产力和性能这三大类中的主要优势。我们认为它是实现移动和边缘计算平台设备上 AI 的理想选择。