
2025/12/18 22:51
**Executorch:PyTorch のためのモバイル・組込み・エッジ向けオンデバイスAI**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
ExecuTorch – PyTorch モデルのための統一された低フットプリント推論ランタイム
ExecuTorch は、開発者がスマートフォンからマイクロコントローラまで、あらゆるデバイス上で大規模言語モデル・ビジョン・音声・マルチモーダルシステムを実行できるようにします。単一のコード行で、Apple、Qualcomm、ARM、MediaTek、Vulkan、XNNPACK、OpenVINO、CUDA‑experimental、MPS、CoreML、Metal‑experimental、ARM Ethos‑U、NXP、Cadence DSP など、12以上のハードウェアバックエンド間を切り替えることができます。
エクスポートパイプラインは簡単です:
torch.export → to_edge_transform_and_lower(パーティショナー)→ .pte ファイル。Llama モデルは export_llm または Optimum‑ExecuTorch を介してエクスポートでき、C++、Swift、Kotlin の LLM ランナー API で実行できます。MultiModal ランナーは、Llava や Voxtral のようなモデルに対してビジョン/オーディオ入力を拡張します。量子化は torchao(8‑bit、4‑bit、ダイナミック)でサポートされ、AOT アロケーションによる自動メモリ計画が高速かつ効率的な推論を実現します。
Meta はすでに ExecuTorch を Instagram、WhatsApp、Quest 3、Ray‑Ban Meta Smart Glasses などのコンシューマ製品で使用しており、実際のデバイス上での実用性を示しています。本プロジェクトは BSD ライセンス下にあり、ドキュメント(ガイド、API リファレンス、バックエンド統合)とコミュニティサポートが GitHub Discussions、Discord、および Issues トラッカーで利用可能です。
今後のリリースでは、より多くの組み込みターゲットを追加し、量子化ツールを強化し、マルチモーダルランナー機能を拡張します。
本文
ExecuTorch
PyTorch をベースにしたオンデバイス AI 推論
ExecuTorch
スマートフォンからマイクロコントローラまで、プライバシー・性能・携帯性を重視して設計された統合型ソリューション。Meta の Instagram、WhatsApp、Quest 3、Ray‑Ban Meta Smart Glasses などでオンデバイス AI を実現しています。
既存の PyTorch API をそのまま使って LLM、ビジョン、音声、多モーダルモデルをデプロイできるため、研究から本番への移行がシームレスです。C++ の手動書き換えは不要で、フォーマット変換も不要。ベンダーロックインは発生しません。
目次
- ExecuTorch を選ぶ理由
- 実装の仕組み
- クイックスタート
- インストール
- エクスポートとデプロイ(3 ステップ)
- デバイス上で実行
- LLM の例:Llama
- プラットフォーム・ハードウェアサポート
- 本番環境での導入
- サンプル & モデル
- 主な特徴
- ドキュメント
- コミュニティと貢献
- ライセンス
ExecuTorch を選ぶ理由
| 機能 | 説明 |
|---|---|
| ネイティブ PyTorch エクスポート | .onnx、.tflite などの中間フォーマットを経由せずに直接エクスポート。モデルの意味を保持します。 |
| 本番で検証済み | Meta の数十億ユーザーがリアルタイムオンデバイス推論に利用しています。 |
| 軽量ランタイム | 50 KB のベースフットプリント。マイクロコントローラからハイエンドスマートフォンまで対応可能です。 |
| 12+ ハードウェアバックエンド | Apple、Qualcomm、ARM、MediaTek、Vulkan などのオープンソースアクセラレーションを提供。 |
| 1 回のエクスポートで複数バックエンドへデプロイ | 行列演算だけでなく、CPU フォールバックもサポートし、一行変更でハードウェアターゲットを切り替えられます。 |
実装の仕組み
ExecuTorch は AOT(Ahead‑of‑Time)コンパイルを利用して PyTorch モデルをエッジデプロイ用に最適化します。
- Export –
でモデルグラフをキャプチャ。torch.export() - Compile – 量子化・最適化・ハードウェアバックエンドへのパーティション化 →
ファイル生成。.pte - Execute – 軽量 C++ ランタイムでデバイス上にロードし実行。
モデルは Core ATen 演算セットを標準化しており、パーティショナーがサブグラフを NPU/GPU などの専用ハードウェアへ委譲しつつ CPU フォールバックも提供します。
詳細: [How ExecuTorch Works] • [Architecture Guide]
クイックスタート
インストール
Android、iOS、組み込みシステム向けのプラットフォーム固有設定は Quick Start ドキュメントを参照してください。
エクスポートとデプロイ(3 ステップ)
import torch from executorch.exir import to_edge_transform_and_lower from executorch.backends.xnnpack.partition.xnnpack_partitioner import XnnpackPartitioner # 1. PyTorch モデルをエクスポート model = MyModel().eval() example_inputs = (torch.randn(1, 3, 224, 224),) exported_program = torch.export.export(model, example_inputs) # 2. ターゲットハードウェア向けに最適化(バックエンドは一行で切替) program = to_edge_transform_and_lower( exported_program, partitioner=[XnnpackPartitioner()] # CPU | CoreMLPartitioner() for iOS | QnnPartitioner() for Qualcomm ).to_executorch() # 3. デプロイ用に保存 with open("model.pte", "wb") as f: f.write(program.buffer) # 任意: ExecuTorch ランタイムの pybind API でローカルテスト from executorch.runtime import Runtime runtime = Runtime.get() method = runtime.load_program("model.pte").load_method("forward") outputs = method.execute([torch.randn(1, 3, 224, 224)])
デバイス上で実行
| 言語 | サンプル |
|---|---|
| C++ | |
| Swift (iOS) | |
| Kotlin (Android) | |
LLM の例:Llama
export_llm スクリプトまたは Optimum‑ExecuTorch を使って Llama モデルをエクスポートします。
# export_llm を使用 python -m executorch.extension.llm.export.export_llm --model llama3_2 --output llama.pte # Optimum-ExecuTorch を使用 optimum-cli export executorch \ --model meta-llama/Llama-3.2-1B \ --task text-generation \ --recipe xnnpack \ --output_dir llama_model
LLM ランナー API でデバイス上実行します。
| 言語 | サンプル |
|---|---|
| C++ | |
| Swift (iOS) | |
| Kotlin (Android) | |
画像・音声を扱うマルチモーダルモデル(Vision、Audio)は MultiModal ランナー API を利用し、テキスト入力と同時に画像や音声データを処理できます。 Llava や Voxtral の例も参照してください。
examples/models/llama ディレクトリで量子化・モバイルデプロイ・高度オプションの完全なワークフローが確認できます。
次のステップ
- 📖 ステップ‑by‑ステップチュートリアル – 初めてのモデル導入ガイド
- ⚡ Colab ノートブック – ブラウザで ExecuTorch をすぐに試せます
- 🤖 Llama モデルデプロイ – 量子化とモバイルデモを含む LLM ワークフロー
プラットフォーム・ハードウェアサポート
| プラットフォーム | サポートバックエンド |
|---|---|
| Android | XNNPACK, Vulkan, Qualcomm, MediaTek, Samsung Exynos |
| iOS | XNNPACK, MPS, CoreML(Neural Engine) |
| Linux / Windows | XNNPACK, OpenVINO, CUDA(実験的) |
| macOS | XNNPACK, MPS, Metal(実験的) |
| Embedded / MCU | XNNPACK, ARM Ethos‑U, NXP, Cadence DSP |
詳細はバックエンドドキュメントでハードウェア要件と最適化ガイドを確認してください。デスクトップ/ノートPC GPU 推論(CUDA・Metal)は Desktop Guide を、Zephyr RTOS 連携は Zephyr Guide を参照。
本番環境での導入
ExecuTorch は Meta のアプリや VR/AR デバイス、パートナー企業で大規模にオンデバイス AI を実現しています。成功事例を確認 →
サンプル & モデル
- LLM:Llama 3.2/3.1/3, Qwen 3, Phi‑4‑mini, LiquidAI LFM2
- マルチモーダル:Llava(Vision‑Language)、Voxtral(Audio‑Language)、Gemma(Vision‑Language)
- Vision / Speech:MobileNetV2、DeepLabV3、Whisper
リソース:
examples/ ディレクトリ • executorch-examples のオフツリーサンプル • HuggingFace モデル向け Optimum‑ExecuTorch • ファインチューニング済み LLM 用 Unsloth
主な特徴
- 量子化 – torchao による 8bit/4bit・動的量子化を標準サポート
- メモリ計画 – AOT アロケーション戦略で効率的に使用
- 開発ツール – ETDump プロファイラ、ETRecord インスペクタ、モデルデバッガ
- 選択的ビルド – 未使用演算子を除去してバイナリサイズを最小化
- カスタム演算子 – ドメイン固有のカーネルを拡張可能
- 動的形状 – バウンディング範囲内で可変入力サイズに対応
量子化技術、カスタムバックエンド、コンパイラパスは Advanced Topics で詳述しています。
ドキュメント
- [Documentation Home] – 完全なガイドとチュートリアル
- [API Reference] – Python, C++, Java/Kotlin API
- [Backend Integration] – カスタムハードウェアバックエンド構築
- [Troubleshooting] – よくある問題と解決策
コミュニティと貢献
コミュニティからの貢献を歓迎します!
- 💬 GitHub Discussions – 質問やアイデア共有
- 🎮 Discord – チーム・コミュニティとのチャット
- 🐛 Issues – バグ報告や機能要望
- 🤝 [Contributing Guide] – ガイドラインとコードベース構造
ライセンス
ExecuTorch は BSD ライセンスで配布されており、
LICENSE ファイルに詳細が記載されています。