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