**Executorch:PyTorch のためのモバイル・組込み・エッジ向けオンデバイスAI**

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 モデルをエッジデプロイ用に最適化します。

  1. Export
    torch.export()
    でモデルグラフをキャプチャ。
  2. Compile – 量子化・最適化・ハードウェアバックエンドへのパーティション化 →
    .pte
    ファイル生成。
  3. 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++
cpp<br>#include <executorch/extension/module/module.h><br>#include <executorch/extension/tensor/tensor.h><br>Module module("model.pte");<br>auto tensor = make_tensor_ptr({2, 2}, {1.0f, 2.0f, 3.0f, 4.0f});<br>auto outputs = module.forward(tensor);
Swift (iOS)
swift<br>import ExecuTorch<br>let module = Module(filePath: "model.pte")<br>let input = Tensor<Float>([1.0, 2.0, 3.0, 4.0], shape: [2, 2])<br>let outputs = try module.forward(input)
Kotlin (Android)
kotlin<br>val module = Module.load("model.pte")<br>val inputTensor = Tensor.fromBlob(floatArrayOf(1.0f, 2.0f, 3.0f, 4.0f), longArrayOf(2, 2))<br>val outputs = module.forward(EValue.from(inputTensor))

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++
cpp<br>#include <executorch/extension/llm/runner/text_llm_runner.h><br>auto runner = create_llama_runner("llama.pte", "tiktoken.bin");<br>executorch::extension::llm::GenerationConfig config{ .seq_len = 128, .temperature = 0.8f };<br>runner->generate("Hello, how are you?", config);
Swift (iOS)
swift<br>import ExecuTorchLLM<br>let runner = TextRunner(modelPath: "llama.pte", tokenizerPath: "tiktoken.bin")<br>try runner.generate("Hello, how are you?", Config { $0.sequenceLength = 128 }) { token in print(token, terminator: "") }
Kotlin (Android)
kotlin<br>val llmModule = LlmModule("llama.pte", "tiktoken.bin", 0.8f)<br>llmModule.load()<br>llmModule.generate("Hello, how are you?", 128) { result -> print(result) }

画像・音声を扱うマルチモーダルモデル(Vision、Audio)は MultiModal ランナー API を利用し、テキスト入力と同時に画像や音声データを処理できます。 Llava や Voxtral の例も参照してください。

examples/models/llama
ディレクトリで量子化・モバイルデプロイ・高度オプションの完全なワークフローが確認できます。

次のステップ

  • 📖 ステップ‑by‑ステップチュートリアル – 初めてのモデル導入ガイド
  • ⚡ Colab ノートブック – ブラウザで ExecuTorch をすぐに試せます
  • 🤖 Llama モデルデプロイ – 量子化とモバイルデモを含む LLM ワークフロー

プラットフォーム・ハードウェアサポート

プラットフォームサポートバックエンド
AndroidXNNPACK, Vulkan, Qualcomm, MediaTek, Samsung Exynos
iOSXNNPACK, MPS, CoreML(Neural Engine)
Linux / WindowsXNNPACK, OpenVINO, CUDA(実験的)
macOSXNNPACK, MPS, Metal(実験的)
Embedded / MCUXNNPACK, 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
ファイルに詳細が記載されています。

同じ日のほかのニュース

一覧に戻る →

2025/12/24 2:33

ファブリス・ベルラドが MicroQuickJS をリリース

## Japanese Translation: GitHubの最新オファリングは、AI駆動のコード作成、統合開発ワークフロー、および組み込みセキュリティを一つの体験に融合した統一プラットフォームです。 - **AIツール**:CopilotとSparkは開発者がより高品質なコードを書き、プロンプトを管理し、外部サービスへ接続するのを支援します。 - **ワークフロー**:Actionsは任意のワークフローを自動化し、Codespacesは即時にクラウド開発環境を提供します。Issues、Plans、およびCode Reviewはチームが作業を追跡し変更点をレビューできるようにし、すべて単一パイプライン内でハンドオフを減らします。 - **セキュリティ**:Advanced Securityはビルド時に脆弱性をスキャンし、シークレット保護は認証情報の漏洩を事前に防止します。 - **対象ユーザー**:エンタープライズから中小チーム、スタートアップ、非営利団体まで、アプリモダナイゼーション、DevSecOps、DevOps、およびCI/CDなどのユースケースで利用可能です。 - **対応業界**:ヘルスケア、金融サービス、製造、政府機関その他多数。 - **追加リソース**:ドキュメント、ブログ、変更履歴、マーケットプレイス、イベント/ウェビナー、電子書籍/レポート、ビジネスインサイト、スキルトレーニング、サポート、コミュニティフォーラム、Trust Center、およびパートナープログラムがすべて利用可能で、チームの成功を支援します。 - **エンタープライズソリューション**:GitHub Enterprise PlatformにはAdvanced Security、Copilot for Business、プレミアムサポート、24/7 エンタープライズレベルサービスなどのAI駆動開発プラットフォームと追加機能が含まれ、それぞれ階層化された価格モデルで提供されます。 これらの機能を組み合わせることで、あらゆる規模の組織においてコード生成をより迅速かつ安全に行い、ワークフローを効率化します。

2025/12/24 6:54

**X‑ray:PDF 文書における不適切な赤字消去(レダクション)を検出するための Python ライブラリ**

## Japanese Translation: --- ## Summary x‑rayは、PDF文書内の不適切な赤字(黒い四角形が背後にあるテキストを完全に覆えていない)を自動で検出するPythonライブラリです。PyMuPDFでPDFをスキャンし、四角形の形状を特定してページコンテンツ上に重ね合わせ、各形状が実際に隠された情報を遮蔽しているかどうかをテストします。不適切な赤字はJSON(またはPython辞書)として報告され、ページ番号、境界ボックス、および隠されたテキストがリスト化されます。 ### Installation ```bash uv add x-ray # 既存のuvプロジェクトに追加 pip install xray # 標準的なpipインストール ``` インストールせずに実行することも可能です: ```bash uvx --from x-ray xray <PDF_URL> ``` ### Usage *コマンドライン:* ```bash xray path/to/file.pdf xray https://free.law/pdf/example.pdf # バッチURL cat urls.txt | xargs -n 1 xray ``` *Python import:* ```python import xray bad_redactions = xray.inspect("some/path/to/file.pdf") # `inspect` は str、pathlib.Path、URL(https://)、または PDF コンテンツの bytes を受け取ります。 ``` ### Output このツールは、ページ番号をキーとし、不適切な赤字オブジェクトのリストを値とするJSONを出力します。各オブジェクトには `bbox` タプルと隠された `text` が含まれます。モジュールとして使用した場合、同等のPython辞書が返されます。 ### Project context - Free Law Projectで数百万件のPDFを監査し、法的透明性を確保するために使用されています。 - GitHub上でオープンソース化されており、貢献にはCLAへの署名が必要で、issues経由で管理されます。 - リリースはGitHub Actionsで自動化されており、手動リリースでは `CHANGES.md`、`pyproject.toml` の更新、タグ付け、およびPoetryによる公開を行います。 - BSDライセンス(許諾型)で配布されています。 x‑rayの軽量なインストールと明確なレポート機能は、法務テック企業や規制当局、オープンデータイニシアチブが不備のある赤字を迅速に特定し、コンプライアンスと透明性を維持するのに役立ちます。

2025/12/24 4:35

テレンス・マリック『Disciples』

## Japanese Translation: テレンス・マリックの独特な美学―長いモンタージュ、自然光、詩的ナレーション、そして従来の物語構造への拒否――は、そのスタイルを直接模倣せずに採用する新しい映画作家たちの波を呼び起こしました。 代表例としてラメル・ロス監督の『ニッケル・ボーイズ』(2024年)が挙げられます。この作品はコールソン・ホワイトヘッド小説の改編で、ベストピクチャー賞ノミネートを獲得しました。ロスはマリックの『The Tree of Life』に触発され、その制作に関わったプロデューサーの一人が手助けしたといいます。彼は監督のアプローチを第一人称視点と断片的な詩性へと翻訳し、没入型の神話的物語を創造していますが、それでも独自性を保っています。 他の現代映画監督――クロエ・ザオ(『ノマドランド』)、クリント・ベンツリー(『Train Dreams』)、デイヴィッド・ゴードン・グリーン(『ジョージ・ワシントン』)、そしてローラ・ダン――はマリックの視覚言語を響かせますが、表面的な模倣を避けるために自らの感性と融合させる必要があります。A.J. エドワーズ(『The Better Angels』)やデイヴィッド・ロウリー(『Ain’t Them Bodies Saints』)による試みは、スタイルフレームワーク内で真の人間性を捉える難しさを示しています。 マリックのキャリアは、『Badlands』と『Days of Heaven』という初期叙事詩から始まり、20年間の休止期間を経て、『The Thin Red Line』『The New World』『The Tree of Life』などの後期作品へと進化しました。彼の作品は常に精神性・自然・人間存在を探求しつつ、批評家から高い評価を受ける一方で、ボックスオフィスでは稀にしかヒットしません。マリックの総合的な目標――失われた精神性とアメリカ映画を再接続すること――は、芸術的解放とハリウッドの従来の物語期待との間で緊張を生み出します。 この記事では、マリックの美学と制作手法が多くの人々にインスピレーションを与えている一方で、本当の影響力は表面的な技術を単純に模倣するのではなく、それらの要素を自分自身の物語ビジョンへと翻訳することにあると主張しています。