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 推理。
如何工作
- 导出 – 使用
torch.export()捕获模型图。 - 编译 – 应用量化、优化并分割图以生成硬件特定的子图,输出
.pte文件。 - 执行 – 使用轻量级 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 分配以保持低内存使用
- 性能分析工具(
ETDump、ETRecord) - 选择性操作符剥离以减小二进制文件大小
- 自定义操作符扩展和动态形状支持
运行平台
| 平台 | 后端 |
|---|---|
| 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 |
资源
- 完整文档: https://docs.pytorch.org/executorch/main/index.html
examples/文件夹中包含 Llama、Qwen、Phi-4、Llava、Whisper、YOLO 等示例模型- 社区: Discord、GitHub Discussions、Issues,采用 BSD 风格许可证。
总结 – 如果你已在 PyTorch 中开发模型,希望将其部署到边缘设备而无需重写代码或处理专有格式,ExecuTorch 提供了一条从研究到设备部署的统一、生产级路径。
相关
- 项目
- 项目
- 项目
- 项目
- 项目