スマートフォンでLLMを動かす:ExecuTorchとMediaPipeによるオンデバイス推論の現在地
こんにちは、Ryotaです!最近のLLM開発では、強力なクラウドAPIを使うだけでなく、「手元のスマートフォンや組み込みデバイスで軽量モデルを動かす」オンデバイスAIの領域が非常に盛り上がっています。通信遅延のない即時応答、完全なオフライン動作、そしてサーバーにデータを送らないプライバシーの確保など、エッジならではの強みがあるからです。
今回は、PyTorchファミリーの最新モバイル展開である「ExecuTorch」と、Googleのマルチモーダル対応フレームワーク「MediaPipe」に焦点を当て、スマホ上でLLMを実用的に動かすための技術スタックとそれぞれの現在地について解説します!
スマホLLM実行の二大課題:メモリとNPU
クラウドと異なり、スマートフォンのシステムリソースは非常に限られています。特にボトルネックとなるのが「メモリ容量(RAM)」と「計算処理能力」です。
- メモリウォール: Llama 3 (8B) クラスのモデルを普通に読み込むと、それだけで約16GB of メモリを占有します。スマホで動かすためには、モデルのパラメータを4ビットや3ビットに圧縮(量子化)し、かつ1〜3B(10〜30億)パラメータ程度の超軽量モデル(MobileLLM、Phi-3-mini、Gemma-2-2Bなど)を採用する必要があります。
- ハードウェア・アクセラレーション: CPUだけで推論を行うと、バッテリーが急激に消耗し、生成速度も1秒間に数トークン程度と実用に耐えません。iOSのApple Neural Engine(ANE)やAndroidの各種NPU(Neural Processing Unit)を如何に使いこなすかが鍵になります。
このハードウェアアクセラレーションとモデル変換の処理を肩代わりしてくれるのが、ExecuTorchとMediaPipeです。
ExecuTorch:PyTorch公式のエッジAI本命スタック
ExecuTorchは、MetaのPyTorchチームが開発した、モバイル・組み込みデバイス向けの新しい推論フレームワークです。
graph LR
A[PyTorchモデル] --> B[Export / TorchScript]
B --> C[ExecuTorchコンパイル]
C --> D[デバイス固有のバックエンド NPU / ANE]
D --> E[スマートフォン上での高速推論]
- 開発元: Meta
- 特徴: PyTorchで書かれたLLMを直接エッジ向けにコンパイルできます。最大の利点は、Qualcomm QNN、Apple MPS/ANE、MediaTek Neuronなどのハードウェア固有のバックエンドと密接に統合されている点です。
- 仕組み: グラフのエクスポート(Export)、低レベル表現への変換、そしてハードウェアに合わせた最適化(AOTコンパイル)を経て、デバイス上で効率よく動作する
.pteバイナリを出力します。Llama 3 8BをiOS/AndroidのNPUを利用して高速実行するための公式リファレンスが提供されています。
MediaPipe LLM Inference API:Googleが提供する超簡単デプロイ
MediaPipeは、Googleが提供するクロスプラットフォームの開発者向けソリューションで、特に「導入の手軽さ」において圧倒的な強みを持ちます。
- 開発元: Google
- 特徴: Kotlin、Swift、Web (JavaScript/WebAssembly) で数行のコードを書くだけで、オンデバイスLLMの推論パイプラインを構築できます。
- 対応モデル: GoogleのGemma 2 (2B) や、MicrosoftのPhi-3、Llama 3 (8B)、Falconなど、主要なオープンモデルがあらかじめサポートされており、MediaPipe用に変換されたモデル(
.bin)をダウンロードして配置するだけで動作します。 - 仕組み: GPUアクセラレーション(OpenGL/Vulkan/Metal)を最大限に活用し、AndroidやiOS、さらにはWebブラウザ上でもほぼ同一のロジックで高速な推論が実行されます。
ExecuTorch vs MediaPipe:どちらを採用すべきか?
開発環境や要件に応じて、選択肢は以下のように分かれます。
| 比較項目 | ExecuTorch | MediaPipe (LLM Inference) |
|---|---|---|
| 開発の難易度 | やや高め(C++/CMakeやビルド環境構築が必要) | 極めて低い(各プラットフォームのSDKを叩くだけ) |
| モデルの柔軟性 | 非常に高い(独自のPyTorchカスタムモデルも動作可) | 限定的(サポート対象のオープンモデルが主) |
| 実行環境 | iOS, Android, 組み込み機器 | iOS, Android, Web (Wasm) |
| パフォーマンス | 最大限(NPUバックエンドのカスタム最適化が可能) | 優秀(GPU/NPUを汎用的に活用) |
既存のPyTorchモデルを自社専用にチューニングし、QualcommやAppleのNPUの限界性能を引き出したい場合はExecuTorchが最適です。一方、GemmaやLlamaなどの既存の軽量モデルを使って、素早くクロスプラットフォーム(Webブラウザ含む)対応アプリを作りたい場合はMediaPipeが最適解になります。
まとめ
一昔前は「スマホで大規模言語モデルなんて動くわけがない」と言われていましたが、ExecuTorchやMediaPipeといったツールチェーンの整備と、量子化技術の進歩によって、すでに手のひらの上で実用的な対話AIが動く時代になりました。
これからは、エッジデバイスで「一次選別・要約・プライベート処理」を行い、必要に応じてクラウドの超巨大モデルへ「エスカレーション」する、ハイブリッド型AIアーキテクチャが主流になっていくでしょう。
お役立ち情報
- PyTorch - ExecuTorch Documentation
- ExecuTorchの概要、iOS/Androidへのデプロイガイドが掲載された公式ドキュメント(英語)。
- Google AI Edge - MediaPipe LLM Inference Guide
- 各種軽量LLMをモバイルやWebブラウザ上で動作させるための手順書(英語)。
- GitHub - pytorch/executorch
- ExecuTorchのオープンソースリポジトリ。開発のアクティブな進捗が確認できます。
出典: