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にも適しています。
  • 複数のバックエンド対応 – 1つのエクスポート済み.pteファイルが、コード1行の変更で12種類以上のハードウェアバックエンド(XNNPACK、CoreML、Qualcomm QNN、Vulkan、ARM Ethos-Uなど)で実行可能。
  • プロダクション実績あり – MetaのInstagram、WhatsApp、Quest 3、Ray-Ban Smart Glassesなど、多数のプロダクションアプリでデバイス内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割り当てでRAM使用量を低減
  • プロファイリングツール(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

リソース

  • 全体ドキュメント: https://docs.pytorch.org/executorch/main/index.html
  • examples/フォルダ内にLlama、Qwen、Phi-4、Llava、Whisper、YOLOなど多数の例モデル
  • コミュニティ: Discord、GitHub Discussions、Issues、BSDスタイルのライセンス。

結論 – 既にPyTorchでモデル開発を行っており、コードの再記述やプロプライエタリフォーマットの扱いなしにエッジデバイスに配布したい場合、ExecuTorchは研究からデバイス内デプロイまでを統合的かつプロダクションレベルで実現する道を提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト