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

どのようにLLMをトレーニングしてから **ローカルにデプロイするかをお見せできることを楽しみにしています** に **Androidフォン** および **iPhone**。私たちは共同で作業しました： [ExecuTorch](https://github.com/pytorch/executorch/) PyTorchとMetaと協力して、量子化を意識したトレーニング（[QAT](https://unsloth.ai/docs/jp/burogu/quantization-aware-training-qat)）を使用する合理化されたワークフローを作成し、それをエッジデバイスに直接デプロイします。とともに [Unsloth](https://github.com/unslothai/unsloth)、TorchAO、ExecuTorchを使用して、次のことを示します：

* MetaがInstagramやWhatsAppで数十億に提供しているのと同じ技術（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="#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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F7tFjmj9c3p6o4eN3oHQq%2Funknown.png?alt=media&#x26;token=009699b3-e48f-4a94-bcd0-26cf6dedb8eb" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}

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

<div align="left"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FWI9nU1RQVrPbVXrIihfA%2Fimage.png?alt=media&#x26;token=5d58eb94-aeb3-42c3-a891-561ceb4e22db" 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ノートブックに記載されているようにファインチューニングした後、 [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") – コマンドライン経由（Studio不要）

## <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を繰り返してください。

![](https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FJii1jArd6GQrdaCMHvyR%2Funknown.png?alt=media\&token=bd8b7a75-23e3-4474-b84b-ab9ad34cc401)

### Apple開発者アカウントの設定

**物理デバイス用のみ！**

{% 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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FxG5ifHNeI6xKWqHw1pxL%2Funknown.png?alt=media&#x26;token=875fb5e4-e5f3-4c88-9af6-cb4e587975ca" 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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FA4n2u44u9sLlauCkhf1b%2Funknown.png?alt=media&#x26;token=c93fef18-aab6-47cb-b301-d895466314f6" 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アプリ → ブラウズ → 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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F55YWFJN49DCiHsy9EKOA%2Funknown.png?alt=media&#x26;token=4f8c8e90-df0b-4121-99eb-24437580724b" alt="" width="375"><figcaption></figcaption></figure></div>
{% endcolumn %}

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

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FpwUCX0nfarr6HSUd0pd3%2Funknown.png?alt=media&#x26;token=923b6ad3-d6e6-4e64-8223-947410c2218e" alt="" width="188"><figcaption></figcaption></figure>
{% endcolumn %}

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

<div align="left"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FJrEzy1bvVeb4qLFxPFit%2Funknown.png?alt=media&#x26;token=36b7c70b-f014-4323-bdc5-cc5bf0fd12af" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

### 物理的なiPhoneへのデプロイ

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

1. iPhoneをUSBで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. ドロップダウンからチームを選択する
   {% endcolumn %}

{% column %}

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FFm4a47e9Wuo7JiNbEeYl%2Funknown.png?alt=media&#x26;token=3f958363-6c0d-4608-8895-8376b0e1b1b1" alt="" width="375"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="warning" %}
バンドル識別子を一意のものに変更する（例：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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FqAGQov6BgjlDSqA5GENN%2Funknown.png?alt=media&#x26;token=386b17df-703c-4e2c-9969-895577a98f0a" 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="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FXY4EPFNcxaaBpjVroja3%2Funknown.jpeg?alt=media&#x26;token=7e8eca62-a5de-4705-9f0c-832b40579e78" alt="" width="188"><figcaption></figcaption></figure></div>

2. アプリのインターフェースからモデルとトークナイザーをロードする

<div align="center"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FUzKWYRNR02vkVn5S3SQ5%2Funknown.jpeg?alt=media&#x26;token=84a85440-bf98-438d-a035-d8a11912a7a8" alt="" width="188"><figcaption></figcaption></figure></div>
{% endcolumn %}

{% column %}
3\. あなたのファインチューニング済みQwen3がネイティブにiPhone上で動作します！

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FBX1nCLPbsnuRQchJXyAS%2Funknown.png?alt=media&#x26;token=d276d4d6-2fc7-4cba-87f1-634aaea29884" alt="" width="184"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

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

このガイドでは、Linux/Macのコマンドライン環境を使ってExecuTorch LlamaデモアプリをAndroidデバイスにビルドしてインストールする方法を説明します（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
```

その後デフォルトに設定するか、次をエクスポートします `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コンポーネントをインストールする

```bash
ExecuTorchは特定のNDKバージョンを要求します。
# ライセンスを受け入れる

yes | sdkmanager --licenses
# API 34 と NDK 25 をインストール
```

sdkmanager "platforms;android-34" "platform-tools" "build-tools;34.0.0" "ndk;25.0.8775105"

```bash
NDK変数を設定：
```

### export ANDROID\_NDK=$ANDROID\_HOME/ndk/25.0.8775105

ステップ4：コードを取得する `私たちは` executorch-examples

```bash
リポジトリを使用します。ここには更新されたLlamaデモが含まれています。
cd ~
git clone https://github.com/meta-pytorch/executorch-examples.git
```

### cd executorch-examples

ステップ5：一般的なコンパイル問題を修正する

**現在のコードにはこれらの問題はないかもしれませんが、以前に直面したことがあり参考になる場合があります：**

"SDK Location not found" を修正： `Create a` local.properties

```bash
ファイルを作成してGradleにSDKの場所を明示的に伝えます：
```

**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. このステップでアプリとネイティブライブラリがコンパイルされます。

   ```bash
   Androidプロジェクトに移動：
   ```
2. cd llm/android/LlamaDemo `JAVA_HOME` Gradleでビルドする（ツールチェーンエラーを避けるために明示的に&#x20;

   を17に設定）：

   ```bash
   export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
   注：最初の実行は数分かかります。
   ```
3. ./gradlew :app:assembleDebug

   ```
   生成された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：直接ファイル転送

1. リモートVM上にいるかケーブルがない場合：
2. app-debug.apkを電話からダウンロードできる場所にアップロードする
3. 電話でダウンロードする

### タップしてインストールする（促されたら「提供元不明のアプリをインストール」を許可）

ステップ8：モデルファイルを転送する

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

トークナイザーファイルを選択する

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

* 完了！これでデバイス上で直接LLMとチャットできます。
* ビルドが失敗しますか？java -version を確認してください。必ず17である必要があります。 `.pte` モデルが読み込まれませんか？両方のファイルを選択したことを確認してください： `と`.
* トークナイザー `.pte` アプリがクラッシュしますか？有効な

### ファイルは通常CPU用のXNNPACKバックエンドなど、ExecuTorch用に特別にエクスポートされている必要があります。

モデルを電話に転送する `現在、` executorchllama

#### 私たちがビルドしたアプリは、Android上の特定のディレクトリからのみモデルをロードすることをサポートしており、残念ながら通常のファイルマネージャからはアクセスできません。しかしadbを使えばそのディレクトリにモデルファイルを保存できます。

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

{% columns %}
{% column %}

1. adb devices

   <div align="left"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FX1uYoIhXRdboBK36FX9D%2Funknown.png?alt=media&#x26;token=32955e17-56b7-4e2c-a06d-a1558d51427b" alt="" width="375"><figcaption></figcaption></figure></div>

   ワイヤレスデバッグで接続している場合は次のように表示されます：

   <div align="left"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FBu88g0y9ivw0UQYsUyJJ%2Funknown.png?alt=media&#x26;token=8eda0918-398f-486d-a1f2-6976f895a7c2" alt="" width="269"><figcaption></figcaption></figure></div>

   または有線で接続している場合：

   <div align="left"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FSFkcwJyvgTcjvsPzCoDc%2Funknown.png?alt=media&#x26;token=cb4bbdb6-4b83-473c-8a96-bbf75d8ba49e" alt="" width="269"><figcaption></figcaption></figure></div>

{% endcolumn %}

{% column %}
2\. コンピュータが電話にアクセスする権限を与えていない場合：

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FfqqtrC2590Wd71uzzbA5%2Funknown.png?alt=media&#x26;token=e9a15b34-d794-47d1-ac63-cc5809f3e650" 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
```

total 0

```shellscript
内容を前述のディレクトリにプッシュします。これにはコンピュータ、接続、電話の性能によって数分かかる場合があります。しばらくお待ちください。
adb push <path_to_tokenizer.json on your computer> /data/local/tmp/llama
```

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FwqtWYiRBiyAOhi3aecn9%2Fimage.png?alt=media&#x26;token=ab04a1d1-194d-420d-a980-3336f90e7e42" alt="" width="563"><figcaption></figcaption></figure>

{% columns %}
{% column %}

1. adb push \<path\_to\_model.pte on your computer> /data/local/tmp/llama `先ほどインストールした` executorchllamademo
2. アプリを開き、右上の歯車アイコンをタップして設定を開きます。
3. Modelの隣の矢印をタップしてピッカーを開きモデルを選択します。\
   空白の白いダイアログでファイル名が表示されない場合、ADBによるモデルのプッシュが失敗している可能性があります—その手順をやり直してください。また最初は「モデル未選択」と表示されることがあります。
   {% endcolumn %}

{% column %}

<div><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FmwIP3Fg2xWNfq5h719rE%2Funknown.png?alt=media&#x26;token=3b560fc2-6820-4dd1-a8fa-1a76e5523672" alt=""><figcaption></figcaption></figure> <figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F5ft9HycpKPtCYhWgTmMn%2Funknown.png?alt=media&#x26;token=dc35909b-9541-4fb1-9c7a-7a4be242afd4" alt=""><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
5\. モデルを選択すると、アプリはモデルのファイル名を表示するはずです。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fhga4tR05b5D0IqLvB2PM%2Funknown.png?alt=media&#x26;token=fb00738e-9429-4014-836d-3e35821279cd" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
6\. 同様にトークナイザーも選択してください。トークナイザー欄の矢印をクリックして対応するファイルを選択します。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FjAZd67Ruub3gfblDrwUs%2Funknown.png?alt=media&#x26;token=cf0f6938-2e9c-4bf4-b0f2-c7512b5506ad" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
7\. アップロードするモデルに応じてモデルタイプを選択する必要があるかもしれません。ここではQwen3が選択されています。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FGaPBdnweeeRIWgWsK9Fg%2Funknown.png?alt=media&#x26;token=73ec7e74-d9f8-4080-a6b0-ef239fd640d9" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

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

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F1XHwMpnWEB2JiwNAR6hy%2Funknown.png?alt=media&#x26;token=18bcff85-b67c-4bbe-a961-28f5c5e58ce3" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}
9\. チャットウィンドウの元の画面に戻り、「model loading」と表示されるかもしれません。電話のRAMやストレージ速度によっては完了まで数秒かかることがあります。

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FRoYe3aDedHoovwfPJVOh%2Funknown.png?alt=media&#x26;token=e9a2cc0a-2407-4c0b-adf1-6e2ba122212c" alt="" width="180"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

### :mobile\_phone:「successfully loaded model」と表示されたら、モデルとチャットを開始できます。  めでたし、これであなたのAndroid電話上でネイティブに動作するLLMが手に入りました！ <a href="#docs-internal-guid-7d7d5aee-7fff-f138-468c-c35853fee9ca" id="docs-internal-guid-7d7d5aee-7fff-f138-468c-c35853fee9ca"></a>

ExecuTorch [ExecuTorchは数十億人に力を与えます](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など多数のハードウェアバックエンドをサポートしています。 [MetaのQuest 3やRay Bansでも動作します](https://ai.meta.com/blog/executorch-reality-labs-on-device-ai/).

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

* すべてのQwen 3のデンスモデル（[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-notebooks](https://unsloth.ai/docs/jp/meru/unsloth-notebooks "mention") ページで他のすべてのノートブックを確認してください。


---

# Agent Instructions: 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:

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

The question should be specific, self-contained, and written in natural language.
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.
