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

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案