pytorch/executorch

On-device AI across mobile, embedded and edge for PyTorch

ExecuTorch – 基于 PyTorch 的设备端 AI 推理

是什么 – ExecuTorch 是 Meta 开发的开源运行时,可将常规 PyTorch 模型通过 torch.export() 导出,针对目标边缘设备进行提前编译,并使用极轻量的 C++/Python/Swift/Kotlin 运行时执行。它专为从智能手机到微控制器的任何设备设计,支持隐私保护、低延迟的推理。

为何重要

  • 原生 PyTorch 工作流 – 无需转换为 ONNX、TFLite 等格式;可直接在熟悉的 PyTorch 生态中工作。
  • 极小的体积 – 基础运行时仅约 50 KB,适用于 MCU。
  • 多后端支持 – 一个导出的 .pte 文件可通过修改一行代码,在 12+ 种硬件后端(XNNPACK、CoreML、Qualcomm QNN、Vulkan、ARM Ethos-U 等)上运行。
  • 生产级验证 – 已用于 Meta 的 Instagram、WhatsApp、Quest 3、Ray-Ban 智能眼镜等产品中实现设备端 AI 推理。

如何工作

  1. 导出 – 使用 torch.export() 捕获模型图。
  2. 编译 – 应用量化、优化并分割图以生成硬件特定的子图,输出 .pte 文件。
  3. 执行 – 使用轻量级 ExecuTorch 运行时(可通过 Python pybind、C++、Swift 或 Kotlin 访问)加载文件并运行推理。

快速开始

pip install executorch
import torch
from executorch.exir import to_edge_transform_and_lower
from executorch.backends.xnnpack.partition.xnnpack_partitioner import XnnpackPartitioner

model = MyModel().eval()
example = (torch.randn(1,3,224,224),)
exported = torch.export.export(model, example)
program = to_edge_transform_and_lower(
    exported,
    partitioner=[XnnpackPartitioner()]
).to_executorch()
open('model.pte','wb').write(program.buffer)

使用 README 中所示的 C++/Swift/Kotlin API 在设备上运行,或使用 Python 运行时在本地运行。

LLM 支持 – 可通过 export_llm 脚本或 HuggingFace 的 Optimum-ExecuTorch 集成导出并运行 Llama 风格模型(如 Llama 3.2)。专用 LLM 运行器 API 支持文本生成和多模态输入。

核心功能

  • 通过 torchao 内置 8 位/4 位量化
  • 内存规划和 AOT 分配以保持低内存使用
  • 性能分析工具(ETDumpETRecord
  • 选择性操作符剥离以减小二进制文件大小
  • 自定义操作符扩展和动态形状支持

运行平台

平台 后端
Android XNNPACK, Vulkan, Qualcomm, MediaTek, Samsung Exynos
iOS XNNPACK, CoreML (Neural Engine)
Linux/Windows XNNPACK, OpenVINO, CUDA (实验性)
macOS XNNPACK, Metal (实验性), MLX (实验性)
嵌入式/MCU XNNPACK, ARM Ethos-U, NXP, Cadence DSP

资源

总结 – 如果你已在 PyTorch 中开发模型,希望将其部署到边缘设备而无需重写代码或处理专有格式,ExecuTorch 提供了一条从研究到设备部署的统一、生产级路径。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目