React Native ExecuTorch の useLLM フック 徹底解説 — Qwen / Llama 3.2 / Hammer 2.1 / Phi 4 Mini / SmolLM 2 / LFM2.5 / Gemma 4 をオンデバイスで走らせる React Native 用フック、ツール呼び出し・ビジョン / オーディオ・構造化出力対応 Software Mansion 提供、Managed / Functional の 2 モード、Zod スキーマ検証込み
Software Mansion 提供の React Native ExecuTorch が useLLM フックを公開、React Native アプリに オンデバイス LLM をネイティブに統合。対応モデル: Qwen (2.5 / 3 / 3.5)・Llama 3.2・Hammer 2.1・Phi 4 Mini・SmolLM 2・LFM2.5(ビジョン対応)・Gemma 4(ビジョン + オーディオ対応) の量子化版。2 つの動作モード: Functional/Stateless(generate() メソッドと response プロパティで conversation history を自前管理、tool calling とチャット設定は無効)と Managed/Stateful(sendMessage() でフックが自動的に conversation state 保持・tool call parse・callback 実行)。キー機能: token batching(トークンをバッチ化して re-render 削減)、tool calling(tool schema 定義でモデルが外部関数を invoke、自動 parse + callback 実行)、vision-language / audio マルチモーダル入力、生成コントロール(temperature / top-p / repetition penalty / mid-stream 中断)、JSONSchema または Zod による構造化出力。用途: サーバー依存のないオンデバイスチャットボット、プライバシー重視の会話 UI、カレンダー / フラッシュライト等のアプリ内 function calling、画像解析 / 音声書き起こし。位置付け: Gemma 4 の encoder-free 12B と Qwen 3.6-35B のような最新 open-weight LLM が iOS / Android アプリでネイティブに動く時代の入り口 を実装レベルで示す React Native 界隈の重要成果。
TL;DR — React Native ExecuTorch × useLLM とは
Software Mansion 提供の React Native ExecuTorch は、Meta の ExecuTorch(PyTorch のオンデバイス推論基盤)を React Native からアクセスできるラッパーライブラリ。useLLM フックで オンデバイス LLM を数十行の React Native コードから利用可能。
4 つの要点:
1. 対応モデルが充実 — Qwen 3.5・Llama 3.2・Phi 4 Mini・SmolLM 2・LFM2.5・Gemma 4(ビジョン + オーディオ)
2. 2 モード — Functional/Stateless(低レベル制御)と Managed/Stateful(自動管理)
3. tool calling + マルチモーダル + 構造化出力 が第一級機能
4. 完全オンデバイス — サーバー不要、プライバシー保護、オフライン動作可
対応モデル一覧
| モデル | サイズ帯 | 特徴 |
|---|---|---|
| Qwen 2.5 / 3 / 3.5 | 0.5B〜7B | Alibaba の多用途モデル |
| Llama 3.2 | 1B / 3B | Meta の軽量モデル |
| Hammer 2.1 | — | tool calling 特化 |
| Phi 4 Mini | 3.8B | Microsoft の高効率モデル |
| SmolLM 2 | 135M〜1.7B | 超小型(エッジ最適) |
| LFM2.5 | — | ビジョン対応、Liquid AI 系 |
| Gemma 4 | 2.3B / 12B / 31B | ビジョン + オーディオ、encoder-free 12B |
全て 量子化版 (GGUF 相当 + ExecuTorch フォーマット) を提供、iPhone / Android の実機で実用速度が出るサイズに絞られている。
2 つの動作モード
① Functional / Stateless モード
開発者が conversation history を自前で管理、generate() メソッドと response プロパティを使う。
const llm = useLLM({ modelSource, tokenizerSource, tokenizerConfigSource });
await llm.generate([
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Hello!' },
]);
// llm.response でストリーミング応答特徴: tool calling とチャット設定は無効、フル制御が必要な場合や既存のチャット state 管理に統合したい場合に。
② Managed / Stateful モード
フックが conversation state 自動管理、tool call parse、callback 実行。sendMessage() を呼ぶだけ。
const llm = useLLM({ modelSource, tokenizerSource, tokenizerConfigSource });
llm.configure({
chatConfig: { systemPrompt: 'You are a helpful assistant.' },
toolsConfig: { tools: [openFlashlight, createCalendarEvent] },
generationConfig: { temperature: 0.7 },
});
await llm.sendMessage('Turn on the flashlight.');
// フックが自動的に tool call を検知、openFlashlight を実行、結果を LLM に戻して最終応答を返す特徴: conversation history と function calling が自動化、通常のチャット UI 実装ならこちらが推奨。
キー機能の詳細
Token Batching — 再レンダリング負荷の削減
LLM のストリーミング応答は数百〜数千トークン、毎トークンで React re-render するとフレームレートが落ちる。useLLM は トークンをバッチ化してから re-render をトリガー、generationConfig でバッチサイズ調整可。モバイル UX の実用性を左右する 実装レベルの最適化。
Tool Calling — アプリ内 function 呼び出し
モデルが tool schema に沿って外部関数を invoke、useLLM が自動的に parse + callback 実行:
const openFlashlight = {
name: 'openFlashlight',
description: 'Turn on the device flashlight.',
parameters: { /* JSON Schema */ },
execute: async () => { /* Native module call */ },
};カレンダーイベント作成、通知送信、位置情報取得、ネイティブモジュール呼び出し など、React Native アプリのフル機能を LLM から制御可能に。
Vision / Audio マルチモーダル
ビジョン対応モデル(LFM2.5、Gemma 4)で capabilities 配列と media パラメータを介して画像入力、オーディオ対応モデル(Gemma 4)で音声入力を受け付ける。
await llm.sendMessage('Describe this photo.', {
images: [{ uri: 'file:///path/to/photo.jpg' }],
});用途: カメラで撮った書類の要約、レシート OCR、音声メモの書き起こし、視覚障害者向け画像説明。
生成コントロール
Generation parameters:
- temperature — ランダム性
- top-p — nucleus sampling
- repetition penalty — 繰り返し抑制
- mid-stream interruption — 生成途中でユーザーが「中断」ボタンを押した際の停止
モバイル UX 上、長い応答を途中で止められる ことは重要。
構造化出力 — JSONSchema / Zod スキーマ検証
予測可能な JSON レスポンスを強制:
import { z } from 'zod';
const schema = z.object({
intent: z.enum(['play_music', 'open_map', 'send_message']),
target: z.string(),
urgency: z.number().min(1).max(5),
});
await llm.sendMessage('Play some jazz please.', {
responseSchema: schema,
});アプリ内 intent 解析、フォーム自動入力、アシスタント機能 で LLM の応答を型安全に扱える。JSONSchema と Zod の両方をサポート。
実践的な用途
(1) オンデバイスチャットボット: サーバー依存なし、ネットワークオフラインでも動作、レイテンシゼロ
(2) プライバシー保護会話 UI: 医療・法務・金融アプリで、ユーザーデータが端末外に出ない 保証
(3) アプリ機能の自然言語制御: 「明日 15 時に歯医者の予定」→ カレンダーイベント自動作成、「フラッシュライトつけて」→ 実行
(4) 画像・音声からのアクション抽出: レシート写真 → 経費入力、音声メモ → タスク化
(5) 多言語アシスタント: 英語 / 日本語 / 中国語のリアルタイム変換、翻訳、要約
パフォーマンス目安
iPhone 15 Pro(A17 Pro) で Qwen 2.5-1.5B Q4 なら数十トークン/秒、Google Pixel 9 Pro(Tensor G4) で Llama 3.2-3B Q4 なら 15-25 トークン/秒。iPhone 17 Pro / Pixel 10 Pro / Snapdragon 8 Gen 5 世代なら Gemma 4-12B Q4 が実用領域。iOS の Core ML backend、Android の NNAPI backend、CPU fallback が自動選択される。
位置付け — オンデバイス LLM 実装の入り口
2026 年のモバイル AI エコシステム:
1. iOS 側 Apple Intelligence — Apple 自前の on-device モデル、開発者アクセスは Foundation Models API 経由
2. Android 側 Gemini Nano — Google 自前、AICore API 経由
3. React Native ExecuTorch + useLLM — クロスプラットフォームで自由なモデル選択、Qwen / Llama / Gemma 4 等 open-weights を選べる
独自性: Apple Intelligence / Gemini Nano はモデル固定、React Native ExecuTorch はモデル選択の自由 + クロスプラットフォーム 1 コードベース で差別化。Gemma 4 12B の encoder-free ビジョン + オーディオ をモバイルネイティブで走らせる筋の良い方法。
留保・注意点
(1) モデルバイナリのアプリサイズ: 3B Q4 で ~2GB、12B Q4 で ~7GB。アプリストア配布サイズ制限(iOS 4GB、Android 200MB 圧縮)を超える場合、初回起動時の外部ダウンロード 設計が必要。
(2) バッテリー消費: LLM 推論は CPU / GPU / NPU をフル稼働させる、継続利用でバッテリー激減。UX 設計でヒートアップ / バッテリー警告への配慮必要。
(3) メモリフットプリント: iPhone の RAM 6-8GB のうち 3-5GB を LLM が占有、他のアプリとの共存に注意。
(4) 端末性能の分散: 低スペック端末では実用速度に届かない可能性、モデルサイズを端末性能で分岐する設計。
(5) React Native ExecuTorch は開発活発だが安定 API ではない、破壊的変更に注意。
結論
React Native ExecuTorch の useLLM フックは、モバイル開発者が Gemma 4 / Qwen / Llama 3.2 等の最新 open-weight LLM を iOS / Android アプリにネイティブ統合するための実装レベル答え。tool calling、ビジョン / オーディオ、構造化出力、token batching、mid-stream 中断など、モバイル AI UX の実用性を左右する要素 を第一級機能として提供。サーバー不要のプライバシー保護 AI 体験 を作る筋の良い選択肢。
本トピックに関連する弊社サービスとして モバイルアプリ開発・AI コンサルティング・ソフトウェア開発 があります。React Native + オンデバイス LLM のアプリ開発、Gemma 4 / Qwen ベースのモバイルアシスタント設計のご相談は お問い合わせ から。
References
お気軽にご相談ください
お問い合わせ