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 提供了一條從研究到設備部署的統一、生產級路徑。
相關
- 專案
- 專案
- 專案
- 專案
- 專案