> For the complete documentation index, see [llms.txt](https://unsloth.ai/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsloth.ai/docs/jp/ji-ben/inference-and-deployment/deploy-llms-phone.md).

# iOSまたはAndroidスマートフォンでLLMを実行・デプロイする方法

LLMを訓練して、その後 **ローカルにデプロイできる方法をご紹介できるのを楽しみにしています** を **Androidスマートフォン** と **iPhone**。私たちは [ExecuTorch](https://github.com/pytorch/executorch/) をPyTorchとMetaと共同で使い、量子化対応学習（[QAT](/docs/jp/burogu/quantization-aware-training-qat.md)）を用いた効率的なワークフローを作成し、その後エッジデバイスへ直接デプロイできるようにしました。 [Unsloth](https://github.com/unslothai/unsloth)、TorchAO、ExecuTorchを使って、以下の方法をご紹介します:

* InstagramやWhatsAppで何十億人ものユーザーを支えるためにMetaが使っている同じ技術（ExecuTorch）を使う
* Qwen3-0.6Bをローカルで **Pixel 8** と **iPhone 15 Proで約40トークン/秒で動作させる**
* TorchAO経由でQATを適用し、精度の70%を回復する
* プライバシー優先、即時応答、オフライン機能を得る
* 私たちの [無料Colabノートブック](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb) を使ってQwen3 0.6Bをファインチューニングし、スマートフォンへのデプロイ用にエクスポートする

<a href="/pages/6b439ad8eedcbf85fcbca5c3aa910e0d71794507#ios-deployment" class="button secondary" data-icon="apple">iOSチュートリアル</a><a href="#android-deployment" class="button secondary" data-icon="android">Androidチュートリアル</a>

{% columns %}
{% column %}
**Qwen3-4B** iPhone 15 Proにデプロイ済み

<div align="left"><figure><img src="/files/2c2d043a3db5a81a9da3b33c2c41ec4ce8c42cd4" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}

{% column %}
**Qwen3-0.6B** 約40トークン/秒で実行中

<div align="left"><figure><img src="/files/db586dca3802c73f15c8a2f40c8ab1990b85b14a" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

### 🦥 モデルの学習

私たちはQwen3、Gemma3、Llama3、Qwen2.5、Phi4など、多くのモデルのスマートフォンデプロイをサポートしています！次の手順に従ってください [**無料Colabノートブック**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb) **Qwen3-0.6Bのデプロイ用:**

{% embed url="<https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_(0_6B)-Phone_Deployment.ipynb>" %}

まずUnslothを更新し、TorchAOとExecutorchをインストールします。

```bash
pip install --upgrade unsloth unsloth_zoo
pip install torchao==0.14.0 executorch pytorch_tokenizers
```

その後、単に `qat_scheme = "phone-deployment"` を使って、スマートフォンにデプロイしたいことを示します。なお、以下も設定します `full_finetuning = True` 完全ファインチューニングのためです！

```python
from unsloth import FastLanguageModel
import torch
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/Qwen3-0.6B",
    max_seq_length = 1024,
    full_finetuning = True,
    qat_scheme = "phone-deployment", # スマートフォンデプロイ用フラグ
)
```

私たちは `qat_scheme = "phone-deployment"` 実際には `qat_scheme = "int8-int4"` を内部で使用して、Unsloth/TorchAOのQATを有効化しています。これは *シミュレート* し、学習中のLinear層に対してINT4重み量子化を伴うINT8動的活性量子化を（フェイク量子化演算を通じて）16ビットのまま計算しながら実行します。学習後、モデルは実際の量子化版に変換されるため、デバイス上のモデルはより小さく、通常は **ナイーブなPTQよりも精度をよく保持します**.

Colabノートブック [で説明したとおりにファインチューニングした後、](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb)で保存します `.pte` ファイルをExecutorch経由で:

{% code expandable="true" %}

```bash
# 重みチェックポイントのstate dictキーを、ExecuTorchが期待する形式に変換する
python -m executorch.examples.models.qwen3.convert_weights "phone_model" pytorch_model_converted.bin
# ExecuTorchリポジトリからモデル設定をダウンロードする
curl -L -o 0.6B_config.json https://raw.githubusercontent.com/pytorch/executorch/main/examples/models/qwen3/config/0_6b_config.json
# ExecuTorchのpteファイルへエクスポートする
python -m executorch.examples.models.llama.export_llama \
    --model "qwen3_0_6b" \
    --checkpoint pytorch_model_converted.bin \
    --params 0.6B_config.json \
    --output_name qwen3_0.6B_model.pte \
    -kv --use_sdpa_with_kv_cache -X --xnnpack-extended-ops \
    --max_context_length 1024 --max_seq_length 128 --dtype fp32 \
    --metadata '{"get_bos_id":199999, "get_eos_ids":[200020,199999]}'
```

{% endcode %}

### 🏁 学習後のデプロイ

そして今、 `qwen3_0.6B_model.pte` という約472MBのファイルがあれば、デプロイできます！デバイスを選んで、そのまま始めましょう:

* [#ios-deployment](#ios-deployment "mention") – Xcode経由、シミュレータまたは実機
* [#android-deployment](#android-deployment "mention") – コマンドライン経由、Unsloth不要

## <i class="fa-apple">:apple:</i> iOSデプロイ

iOS上でモデルを動かすためのチュートリアルです（iPhone 16 Proでテスト済みですが、他のiPhoneでも動作します）。Xcode 15を実行できる物理的なmacOSデバイスが必要です。

### macOS開発環境のセットアップ

**Xcodeとコマンドラインツールをインストール**

1. Mac App StoreからXcodeをインストールします（バージョン15以降である必要があります）
2. ターミナルを開いて、インストールを確認します: `xcode-select -p`
3. コマンドラインツールをインストールし、ライセンスに同意します:&#x20;
   1. `xcode-select --install`
   2. `sudo xcodebuild -license accept`
4. Xcodeを初回起動し、求められたら追加コンポーネントをインストールします
5. プラットフォームの選択を求められたら、iOS 18を選び、シミュレータ用にダウンロードします

{% hint style="warning" %}
重要: 最初のXcode起動は非常に重要です！追加コンポーネントのインストールを飛ばさないでください！ [こちら](https://developer.apple.com/documentation/xcode/downloading-and-installing-additional-xcode-components) と [こちら](https://developer.apple.com/documentation/safari-developer-tools/adding-additional-simulators) で追加のヘルプを確認してください。
{% endhint %}

**すべて正常に動作するか確認:**  `xcode-select -p`

パスが表示されるはずです。表示されない場合は、手順3を繰り返してください。

![](/files/d45bb4824267ba491fb4c8fb2916d79ead06d3fc)

### Apple Developerアカウントのセットアップ

**実機のみ！**

{% hint style="info" %}
iOSシミュレータのみを使う場合は、このセクション全体をスキップしてください。物理iPhoneへのデプロイには有料の開発者アカウントが必要です。
{% endhint %}

{% columns %}
{% column %}
**Apple IDを作成する**

Apple IDをお持ちでないですか？[ こちらから登録](https://support.apple.com/en-us/108647?device-type=iphone).

#### **Xcodeにアカウントを追加する**

1. Xcodeを開く
2. Xcode → Settings → Accounts に移動
3. +ボタンをクリックしてApple IDを選択
4. 普段使っているApple IDでサインインする
   {% endcolumn %}

{% column %}

<div align="left"><figure><img src="/files/b4785fbfe4f69c704d8bc93614bcf9267de78159" alt="" width="563"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

#### **Apple Developer Programに登録する**

ExecuTorchには `increased-memory-limit機能`が必要で、これは有料の開発者アカウントを要します:

1. アクセスする[ developer.apple.com](https://developer.apple.com)
2. Apple IDでサインインする
3. Apple Developer Programに登録する

### ExecuTorchデモアプリのセットアップ

**サンプルコードを取得:**

```bash
# LLMサンプルアプリを直接ダウンロード
curl -L https://github.com/meta-pytorch/executorch-examples/archive/main.tar.gz | \
  tar -xz --strip-components=2 executorch-examples-main/llm/apple
```

{% columns %}
{% column %}
**Xcodeで開く**

1. 開く `apple/etLLM.xcodeproj` をXcodeで
2. 上部ツールバーで `iPhone 16 Pro` シミュレータをターゲットデバイスとして選択
3. 再生（▶️）を押してビルドして実行

🎉 成功！アプリはシミュレータで起動するはずです。まだ動作しません。モデルを追加する必要があります。
{% endcolumn %}

{% column %}

<figure><img src="/files/219d0c7dd3d4f372f73d0aa253955e662ff79de8" alt="" width="563"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

### シミュレータへのデプロイ

&#x20;**開発者アカウントは不要です。**

**モデルファイルを準備する**

1. Xcodeでシミュレータを停止します（停止ボタンを押す）
2. HuggingFace Hubのリポジトリに移動します（ローカルに保存していない場合）
3. 次の2つのファイルをダウンロードします:
   1. `qwen3_0.6B_model.pte` （エクスポートしたモデル）
   2. tokenizer.json（トークナイザ）

**シミュレータ上に共有フォルダを作成する**

1. シミュレータの仮想ホームボタンをクリック
2. Filesアプリ → Browse → On My iPhone を開く
3. 省略記号（•••）ボタンをタップし、次の名前の新しいフォルダを作成します `Qwen3test`

**ターミナルを使ってファイルを転送する**

```bash
# シミュレータの隠しフォルダを見つける
find ~/Library/Developer/CoreSimulator/Devices/ -type d -iname "*Qwen3test*"
```

フォルダが見つかったら、次を実行します:

```bash
cp tokenizer.json /path/to/Qwen3test/tokenizer.json
cp qwen3_0.6B_model.pte /path/to/Qwen3test/qwen3_model.pte
```

**読み込み & チャット**

{% columns %}
{% column %}

1. シミュレータ内のetLLMアプリに戻ります。タップして起動します。

<div align="left"><figure><img src="/files/91779dc944d187955b080c5b0bb268c83342fbf4" alt="" width="375"><figcaption></figcaption></figure></div>
{% endcolumn %}

{% column %}
2\. Qwen3testフォルダからモデルとトークナイザを読み込みます

<figure><img src="/files/4f055e73bbe38d7f0a5455cbbdd1af585a12a3fa" alt="" width="188"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
3\. ファインチューニングしたモデルでチャットを始めましょう！🎉

<div align="left"><figure><img src="/files/e84406a17e58e5f27cf84b3f889827bed4700fb1" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

### 実機iPhoneへのデプロイ

**初期デバイス設定**

1. USBでiPhoneをMacに接続します
2. iPhoneのロックを解除し、「このデバイスを信頼」をタップします
3. Xcodeで、Window → Devices and Simulators に移動します
4. デバイスが左側に表示されるまで待ちます（しばらく「Preparing」と表示されることがあります）

**Xcodeの署名設定を構成する**

{% columns %}
{% column %}

1. Appleアカウントを追加します: Xcode → Settings → Accounts → `+`
2. プロジェクトナビゲータでetLLMプロジェクト（青いアイコン）をクリック
3. TARGETSの下でetLLMを選択
4. Signing & Capabilitiesタブへ移動
5. 「Automatically manage signing」にチェックを入れる
6. ドロップダウンからTeamを選択
   {% endcolumn %}

{% column %}

<figure><img src="/files/673e5c3e659cc61f474485c5eb2bd217997c355a" alt="" width="375"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="warning" %}
Bundle Identifierを一意のものに変更します（例: com.yourname.etLLM）。これでプロビジョニングプロファイルのエラーの99%が解決します
{% endhint %}

**必要な機能を追加する**

1. Signing & Capabilitiesのまま、「+ Capability」をクリック
2. 「Increased Memory Limit」を検索して追加する

**ビルド & 実行**

1. 上部ツールバーで、デバイスセレクタから実機のiPhoneを選択
2. 再生（▶️）を押すか、Cmd + R を押す

**開発者証明書を信頼する**

最初のビルドは失敗します。これは正常です！

1. iPhoneで、設定 → プライバシーとセキュリティ → 開発者モード に移動
2. オンに切り替える
3. 同意して通知を受け入れる
4. デバイスを再起動し、Xcodeに戻ってもう一度再生を押す

{% hint style="warning" %}
開発者モードにより、XcodeはiPhone上でアプリを実行・インストールできます
{% endhint %}

**モデルファイルをiPhoneに転送する**

<figure><img src="/files/b4647d011f92e155b03f14e9d838a130e184c23a" alt="" width="375"><figcaption></figcaption></figure>

1. アプリが動作したら、MacでFinderを開きます
2. サイドバーでiPhoneを選択
3. Filesタブをクリック
4. etLLMを展開
5. .pteファイルとtokenizer.jsonファイルをこのフォルダに直接ドラッグ＆ドロップします
6. 気長に待ってください！これらのファイルは大きいので、数分かかることがあります

**読み込み & チャット**

{% columns %}
{% column %}

1. iPhoneで、etLLMアプリに戻ります

<div align="center"><figure><img src="/files/6bd729d4f4fd1358d78777c06decb875113a108d" alt="" width="188"><figcaption></figcaption></figure></div>

2. アプリのインターフェースからモデルとトークナイザを読み込みます

<div align="center"><figure><img src="/files/ef8048258950ee7d55a2c6ec35405f4adb61732a" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}

{% column %}
3\. ファインチューニングしたQwen3が、今やiPhone上でネイティブに動作しています！

<figure><img src="/files/2b007a4197ba6f072fc77f64ca6d9fd8b021c2f5" alt="" width="184"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

## <i class="fa-android">:android:</i> Androidデプロイ

このガイドでは、Linux/Macのコマンドライン環境を使って、AndroidデバイスにExecuTorchのLlamaデモアプリをビルドしてインストールする方法を説明します（Pixel 8でテスト済みですが、他のAndroidスマートフォンでも動作します）。この方法は依存関係を最小限に抑え（Android Studio不要）、重いビルド処理をあなたのコンピュータにオフロードします。

### 要件

開発マシンに次のものがインストールされていることを確認してください:

* Java 17（通常はJava 21がデフォルトですが、ビルド問題の原因になることがあります）
* Git
* Wget / Curl
* Androidコマンドラインツール
* [インストールガイド](https://www.xda-developers.com/install-adb-windows-macos-linux/) とセットアップ `adb` Android端末とコンピュータ上で

#### 確認

Javaのバージョンが17.xと一致していることを確認します:

```bash
# 出力は次のようになるはずです: openjdk version "17.0.x"
java -version
```

一致しない場合は、Ubuntu/Debian経由でインストールします:

```bash
sudo apt install openjdk-17-jdk
```

その後、デフォルトに設定するか、exportします `JAVA_HOME`:

```bash
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
```

別のOSやディストリビューションを使っている場合は、 [このガイド](https://docs.oracle.com/en/java/javase/25/install/overview-jdk-installation.html) に従うか、お気に入りのLLMに案内してもらってください。

### ステップ1: Android SDKとNDKをインストール

完全なAndroid Studioなしで、最小限のAndroid SDK環境をセットアップします。

1\. SDKディレクトリを作成します:

```bash
mkdir -p ~/android-sdk/cmdline-tools
cd ~/android-sdk
```

2. Androidコマンドラインツールをインストール

```bash
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
unzip commandlinetools-linux-*.zip -d cmdline-tools

# 重要: SDKの構造に合わせるため再整理する
mv cmdline-tools/cmdline-tools cmdline-tools/latest
```

### ステップ2: 環境変数を設定

これらを以下に追加します `~/.bashrc` または `~/.zshrc`:

```bash
export ANDROID_HOME=$HOME/android-sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
```

再読み込みします:

```bash
source ~/.zshrc  # またはシェルに応じて ~/.bashrc
```

### ステップ3: SDKコンポーネントをインストール

ExecuTorchには特定のNDKバージョンが必要です。

```bash
# ライセンスに同意
yes | sdkmanager --licenses

# API 34とNDK 25をインストール
sdkmanager "platforms;android-34" "platform-tools" "build-tools;34.0.0" "ndk;25.0.8775105"
```

NDK変数を設定します:

```bash
export ANDROID_NDK=$ANDROID_HOME/ndk/25.0.8775105
```

### ステップ4: コードを取得

私たちは `executorch-examples` リポジトリを使用します。ここには更新されたLlamaデモが含まれています。

```bash
cd ~
git clone https://github.com/meta-pytorch/executorch-examples.git
cd executorch-examples
```

### ステップ5: よくあるコンパイル問題を修正

現在のコードにはこれらの問題はありませんが、以前遭遇したことがあり、役に立つかもしれないので記載します:

**「SDK Location not found」を修正:**

次の `local.properties` ファイルを作成して、SDKの場所をGradleに明示的に伝えます:

```bash
echo "sdk.dir=$HOME/android-sdk" > llm/android/LlamaDemo/local.properties
```

**修正 `cannot find symbol` エラー:**

現在のコードは非推奨のメソッドを使用しています `getDetailedError()`。次のコマンドでパッチを当てます:

```bash
sed -i 's/e.getDetailedError()/e.getMessage()/g' llm/android/LlamaDemo/app/src/main/java/com/example/executorchllamademo/MainActivity.java
```

### ステップ6: APKをビルド

この手順では、アプリとネイティブライブラリをコンパイルします。

1. Androidプロジェクトへ移動:

   ```bash
   cd llm/android/LlamaDemo
   ```
2. Gradleでビルド（ツールチェーンエラーを避けるため `JAVA_HOME` を17に明示的に設定）:&#x20;

   注意: 最初の実行には数分かかります。

   ```bash
   export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
   ./gradlew :app:assembleDebug
   ```
3. 最終的に生成されたapkは次の場所にあります:

   ```
   app/build/outputs/apk/debug/app-debug.apk
   ```

### ステップ7: Androidデバイスにインストール

アプリをインストールする方法は2つあります。

#### オプションA: ADBを使う（有線/無線）

もし `adb` スマートフォンにアクセスできるなら:

```bash
adb install -r app/build/outputs/apk/debug/app-debug.apk
```

#### オプションB: 直接ファイル転送

リモートVM上にいる、またはケーブルがない場合は:

1. app-debug.apkを、スマートフォンからダウンロードできる場所にアップロードします
2. スマートフォンでダウンロードします
3. タップしてインストールします（必要なら「不明なソースからのインストール」を有効化）。

### ステップ8: モデルファイルを転送

アプリには.pteモデルとトークナイザファイルが必要です。

1. ファイルを転送: model.pte と tokenizer.bin（または tokenizer.model）をスマートフォンのストレージ（例: Downloadsフォルダ）に移動します。
2. LlamaDemoアプリを開く: スマートフォンでアプリを起動します。
3. モデルを選択
4. 設定（歯車アイコン）またはファイルピッカーをタップします。
5. Downloadsフォルダへ移動します。
6. .pteファイルを選択します。
7. トークナイザファイルを選択します。

完了です！これでデバイス上で直接LLMとチャットできます。

### トラブルシューティング

* ビルドに失敗？ java -version を確認してください。17でなければなりません。
* モデルが読み込まれない？ 次の両方を選択したことを確認してください `.pte` と `トークナイザ`.
* アプリがクラッシュする？ 有効な `.pte` ファイルは、ExecuTorch用に特別にエクスポートされている必要があります（通常はCPU向けのXNNPACKバックエンド）。

### モデルをスマートフォンに転送する

現在、 `executorchllama` 私たちがビルドしたアプリは、Android上の特定のディレクトリからのみモデルの読み込みをサポートしており、その場所は通常のファイルマネージャからはアクセスできません。ただし、adbを使えば、そのディレクトリにモデルファイルを保存できます。

#### adbが正しく動作し、接続されていることを確認してください

```shellscript
adb devices 
```

{% columns %}
{% column %}

1. 無線デバッグで接続している場合は、次のように表示されます:

   <div align="left"><figure><img src="/files/014afeac62f11c924deb1a59f5acff3e31a1b6f5" alt="" width="375"><figcaption></figcaption></figure></div>

   あるいは、ケーブルで接続している場合は:

   <div align="left"><figure><img src="/files/5cf52e6bab2ff3a0968efe54289652b0bcec8b76" alt="" width="269"><figcaption></figcaption></figure></div>

   コンピュータにスマートフォンへのアクセス権限を与えていない場合は:

   <div align="left"><figure><img src="/files/13219d9c34b509dcd7527d0f74ccd43fe8891e78" alt="" width="269"><figcaption></figcaption></figure></div>

{% endcolumn %}

{% column %}
2\. スマートフォンに、次のようなポップアップダイアログが表示されます（許可したい場合があります）

<figure><img src="/files/3403b59926b581f145387751f827a36e36ed08df" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

完了したら、配置する必要がある `.pte` と `tokenizer.json` ファイルを置くフォルダを作成します。

スマートフォン上の該当パスにそのディレクトリを作成します。

```shellscript
adb shell mkdir -p /data/local/tmp/llama
adb shell chmod 777 /data/local/tmp/llama
```

ディレクトリが正しく作成されていることを確認します。

```shellscript
adb shell ls -l /data/local/tmp/llama
合計 0
```

指定したディレクトリに内容をプッシュします。これは、お使いのコンピューター、接続状況、電話機によっては数分からそれ以上かかる場合があります。しばらくお待ちください。

```shellscript
adb push <お使いのコンピューター上のpath_to_tokenizer.json> /data/local/tmp/llama
adb push <お使いのコンピューター上のpath_to_model.pte> /data/local/tmp/llama
```

<figure><img src="/files/20a9b613c0f10195e7a8d88939941b2c5f5c570d" alt="" width="563"><figcaption></figcaption></figure>

{% columns %}
{% column %}

1. を開いてください `executorchllamademo` ステップ5でインストールしたアプリを開き、右上の歯車アイコンをタップして設定を開きます。
2. Model の横にある矢印をタップしてピッカーを開き、モデルを選択します。\
   ファイル名のない空白の白いダイアログが表示される場合、ADB によるモデルのプッシュが失敗した可能性があります。その手順をやり直してください。また、最初は「モデルが選択されていません」と表示されることがあります。
3. モデルを選択すると、アプリにモデルのファイル名が表示されるはずです。
   {% endcolumn %}

{% column %}

<div><figure><img src="/files/0a8ad562c1dc7f9b7b20d68e3d43cfff06a27df6" alt=""><figcaption></figcaption></figure> <figure><img src="/files/1631ca6bdf3a33ba1b4eeb1ee3aa624688853514" alt=""><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
5\. 次に、トークナイザーについても同じ操作を繰り返します。トークナイザー欄の横にある矢印をクリックし、対応するファイルを選択します。

<figure><img src="/files/d857ec4088478adb0157d726fb193c3bf5bafc2c" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
6\. アップロードするモデルによっては、モデルタイプを選択する必要があります。ここでは Qwen3 が選択されています。

<figure><img src="/files/3d123ee914bcf0914334dcfea173133bef544635" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
7\. 両方のファイルを選択したら、「Load Model」ボタンをクリックします。

<figure><img src="/files/1a6e77a5493f57ccda1d1f2f74dfcc5e8af43c69" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
8\. チャットウィンドウのある元の画面に戻り、「model loading」と表示されることがあります。お使いのスマートフォンの RAM とストレージ速度によっては、読み込み完了まで数秒かかる場合があります。

<figure><img src="/files/c223d5fe7da553ceeaf4ad0e9768f44585691c54" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
9\. 「successfully loaded model」と表示されたら、モデルとのチャットを開始できます。\
\
どうです、これで Android スマートフォン上で LLM をネイティブ実行できるようになりました！

<figure><img src="/files/2d4395aabccd4dc6fc4933da6fbbd986a637ac98" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

### :mobile\_phone:ExecuTorch は数十億を支えています <a href="#docs-internal-guid-7d7d5aee-7fff-f138-468c-c35853fee9ca" id="docs-internal-guid-7d7d5aee-7fff-f138-468c-c35853fee9ca"></a>

ExecuTorch [数十億人向けのオンデバイス ML 体験を支えています](https://engineering.fb.com/2025/07/28/android/executorch-on-device-ml-meta-family-of-apps/) Instagram、WhatsApp、Messenger、Facebook で。Instagram Cutouts は ExecuTorch を使用して、写真から編集可能なステッカーを抽出します。Messenger のような暗号化アプリでは、ExecuTorch により、デバイス上でプライバシーに配慮した言語識別と翻訳が可能になります。ExecuTorch は Apple、Qualcomm、ARM にわたる 12 以上のハードウェアバックエンドをサポートし、 [Meta の Quest 3 と Ray Bans](https://ai.meta.com/blog/executorch-reality-labs-on-device-ai/).

## その他のモデルのサポート

* すべての Qwen 3 dense モデル（[Qwen3-0.6B](https://huggingface.co/unsloth/Qwen3-0.6B), [Qwen3-4B](https://huggingface.co/unsloth/Qwen3-4B), [Qwen3-32B](https://huggingface.co/unsloth/Qwen3-32B) など）
* すべての Gemma 3 モデル（[Gemma3-270M](https://huggingface.co/unsloth/gemma-3-270m-it), [Gemma3-4B](https://huggingface.co/unsloth/gemma-3-4b-it), [Gemma3-27B](https://huggingface.co/unsloth/gemma-3-27b-it) など）
* すべての Llama 3 モデル（[Llama 3.1 8B](https://huggingface.co/unsloth/Llama-3.1-8B-Instruct), [Llama 3.3 70B Instruct](https://huggingface.co/unsloth/Llama-3.3-70B-Instruct) など）
* Qwen 2.5、Phi 4 Mini モデルなど、さらに多くのモデルに対応！

カスタマイズできます [**無料Colabノートブック**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb) Qwen3-0.6B 用に、上記のどのモデルでもスマートフォンに展開できるようにします！

{% columns %}
{% column %}
**Qwen3 0.6B メインのスマートフォン展開ノートブック**

{% embed url="<https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_(0_6B)-Phone_Deployment.ipynb>" %}
{% endcolumn %}

{% column %}
Gemma 3 で動作

{% embed url="<https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_(4B).ipynb>" %}
{% endcolumn %}

{% column %}
Llama 3 で動作

{% embed url="<https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(1B_and_3B)-Conversational.ipynb>" %}
{% endcolumn %}
{% endcolumns %}

こちらへ [Unslothノートブック](/docs/jp/meru/unsloth-notebooks.md) 他のすべてのノートブックのページ。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://unsloth.ai/docs/jp/ji-ben/inference-and-deployment/deploy-llms-phone.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
