FlutterでローカルLLMを動かすとは?
スマートフォンの性能向上に伴い、クラウドに頼らずデバイス上で直接LLM(大規模言語モデル)を動かす「オンデバイスAI」の実用性が急速に高まっています。Flutterアプリの中でローカルLLMを実行すれば、オフライン対応、プライバシー保護、そして200ms以下のレイテンシという三拍子が揃った体験を提供できます。
実際にHacker Newsでもこのアプローチが話題になっており、モバイルアプリ開発者の間で関心が高まっているテーマです。自分も興味があったので、実際に調べた内容をまとめてみました。
なぜオンデバイスLLMが注目されているのか
プライバシーとデータ主権
ユーザーの入力データがサーバーに送信されないため、医療・法律・金融など機密性の高い分野でのAI活用が現実的になります。GDPRへの対応を考える場合にも、オンデバイス処理は有力な選択肢ですね。
オフライン動作
通信環境に依存しないので、地下鉄や機内、通信インフラが不安定な地域でもAI機能を提供できます。旅行アプリの翻訳機能や、フィールドワーク向けのデータ入力アシスタントなど、オフライン対応が求められるユースケースは意外と多いものです。
コスト削減
API呼び出しごとに課金されるクラウドLLMと違い、オンデバイスならランニングコストがゼロになります。ユーザー数が増えてもサーバー側の負荷は増えないので、スケーラビリティの面でも有利です。
Flutter × ローカルLLMの実装アプローチ
方法1: llama.cppのFFIバインディング
llama.cppは、C/C++で書かれた軽量なLLM推論エンジンです。FlutterからはDart FFI(Foreign Function Interface)を使ってネイティブライブラリとして呼び出せます。
このアプローチのメリットは、量子化されたGGUFモデル(4bit〜8bit)を直接読み込めるため、メモリ使用量を大幅に抑えられる点です。Gemma 2BやPhi-3 Miniの量子化版であれば、4GB RAMのスマートフォンでも動作します。
方法2: MediaPipe LLM Inference API
Googleが提供するMediaPipe LLM Inference APIは、モバイルデバイスでのLLM実行に最適化されたソリューションです。GPU・NPUアクセラレーションに対応しており、手動でFFIバインディングを書く必要がないのが利点ですね。
方法3: MLC LLM
MLC LLMは、さまざまなハードウェア上でLLMを効率的に実行するためのフレームワークです。Android向けにはVulkan GPUバックエンドを活用でき、一部のモデルではCPU推論よりも2〜3倍高速な処理が可能になっています。
推奨モデルとパフォーマンス目安
2026年2月時点で、モバイル端末で実用的に動作するモデルをいくつか紹介します。
- Gemma 2B Q4: Google製。軽量で応答品質もそこそこ。チャットや簡易な質問応答に向いている
- Phi-3 Mini 3.8B Q4: Microsoft製。推論性能が高く、コード生成にも対応
- Qwen2 1.5B: Alibaba製。日本語対応が比較的良好
- TinyLlama 1.1B: 超軽量。古い端末でも動作するが、品質はそれなり
パフォーマンスの目安としては、Snapdragon 8 Gen 3搭載端末でGemma 2B Q4を動かした場合、初回トークンまで150〜200ms、生成速度は15〜25トークン/秒程度が期待できます。最新のフラッグシップであれば、テキストチャットとしては十分実用的なスピードです。
実装時の注意点
メモリ管理
モバイル端末のRAMは限られているので、モデルのロードとアンロードのタイミングを適切に管理する必要があります。バックグラウンドに移行した際にモデルを解放し、フォアグラウンドに戻った際に再ロードするといった制御が重要です。
モデルサイズとダウンロード
量子化済みの2Bモデルでも1〜2GB程度のサイズがあるため、アプリ内に同梱するのは現実的ではありません。初回起動時にダウンロードする仕組みと、ダウンロード進捗の表示を実装しておくのが良いでしょう。
バッテリー消費
LLM推論はCPU・GPUに高い負荷をかけるため、バッテリー消費が増えます。連続的な推論ではなく、ユーザーの入力をトリガーにしたオンデマンド推論にすることで、バッテリーへの影響を最小限に抑えられます。
実用的なユースケース
- オフライン対応の翻訳・通訳アプリ
- プライバシー重視のヘルスケアチャットボット
- ローカルで動く文章校正・要約ツール
- 子供向け教育アプリのAIチューター
- フィールドワーク向けのデータ入力アシスタント
まとめ
FlutterでローカルLLMを実行する技術は、2026年現在かなり実用的なレベルに達しています。llama.cppやMediaPipe LLM Inference APIなどの選択肢が揃い、2Bクラスのモデルであれば一般的なスマートフォンでもストレスなく動作するようになりました。プライバシーやオフライン対応が求められるアプリを開発している方は、検討してみる価値があると思います。
参考: llama.cpp GitHub | MediaPipe LLM Inference | MLC LLM
関連記事: Ollamaとは?ローカル環境でLLMを動かせるツールの特徴・使い方・おすすめモデルを解説