📱iOS や Android の携帯で LLM を実行・デプロイする方法

ExecuTorch を使って自分の LLM をファインチューニングし、Android や iPhone にデプロイするためのチュートリアル。

どのようにLLMをトレーニングしてから ローカルにデプロイするかをお見せできることを楽しみにしていますAndroidフォン および iPhone。私たちは共同で作業しました: ExecuTorcharrow-up-right PyTorchとMetaと協力して、量子化を意識したトレーニング(QAT)を使用する合理化されたワークフローを作成し、それをエッジデバイスに直接デプロイします。とともに Unslotharrow-up-right、TorchAO、ExecuTorchを使用して、次のことを示します:

  • MetaがInstagramやWhatsAppで数十億に提供しているのと同じ技術(ExecuTorch)を使用する

  • Qwen3-0.6Bをローカルにデプロイする Pixel 8 および iPhone 15 Proで約40トークン/秒

  • TorchAOを介したQATを適用して精度の70%を回復する

  • プライバシー第一、即時応答、オフライン機能を得る

  • 私たちの 無料のColabノートブックarrow-up-right を使用してQwen3 0.6Bをファインチューニングし、電話へのデプロイ用にエクスポートします

appleiOSチュートリアルandroidAndroidチュートリアル

Qwen3-4B iPhone 15 Proにデプロイ済み

Qwen3-0.6B 約40トークン/秒で動作中

🦥 モデルのトレーニング

私たちはQwen3、Gemma3、Llama3、Qwen2.5、Phi4など、多くのモデルの電話へのデプロイをサポートしています!次に従ってください: 無料のColabノートブックarrow-up-right Qwen3-0.6Bのデプロイについて:

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

その後、単純に次を使用します qat_scheme = "phone-deployment" で電話へのデプロイを行うことを示します。ここではまた full_finetuning = True をフルファインチューニングのために設定します!

私たちは実際に qat_scheme = "phone-deployment" 内部では実際に使用します qat_scheme = "int8-int4" を内部で使用して、Unsloth/TorchAOのQATを有効にし、 をシミュレートします トレーニング中に(フェイク量子化操作を介して)Linearレイヤーの重みをINT4に量子化し、動的活性化のINT8量子化をシミュレートしながら計算は16ビットのままにします。トレーニング後、モデルは実際の量子化バージョンに変換されるため、デバイス上のモデルは小さくなり、通常は 単純なPTQよりも精度をよりよく保持します.

Colabノートブックに記載されているようにファインチューニングした後、 Colabノートブックarrow-up-rightを使って、次にそれを .pte ファイルとしてExecutorch経由で保存します:

🏁 トレーニング後のデプロイ

そして、あなたの qwen3_0.6B_model.pte ファイル(サイズは約472MB)を使ってデプロイできます!デバイスを選んですぐに始めましょう:

apple iOSデプロイ

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

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

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

  1. Mac App StoreからXcodeをインストールしてください(バージョン15以降であること)

  2. ターミナルを開いてインストールを確認します: xcode-select -p

  3. コマンドラインツールをインストールし、ライセンスに同意します:

    1. xcode-select --install

    2. sudo xcodebuild -license accept

  4. Xcodeを初回起動して、表示される追加コンポーネントをインストールします

  5. プラットフォームの選択を求められたら、iOS 18を選びシミュレータ用にダウンロードしてください

circle-exclamation

すべてが機能するか確認: xcode-select -p

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

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

物理デバイス用のみ!

circle-info

iOSシミュレータのみを使用する場合はこのセクション全体をスキップしてください。物理的なiPhoneにデプロイするには有料の開発者アカウントが必要です。

Apple IDを作成する

Apple IDを持っていませんか? ここで登録してくださいarrow-up-right.

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

  1. Xcodeを開く

  2. Xcode → Settings → Accounts に移動

  3. +ボタンをクリックしてApple IDを選択

  4. 通常のApple IDでサインインしてください

Apple Developer Programに登録する

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

  1. にアクセスしてください developer.apple.comarrow-up-right

  2. Apple IDでサインインしてください

  3. Apple Developer Programに登録する

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

例のコードを取得:

Xcodeで開く

  1. を開く apple/etLLM.xcodeproj をXcodeで開く

  2. 上部ツールバーでターゲットデバイスとして iPhone 16 Pro シミュレータを選択する

  3. 再生ボタン(▶️)を押してビルドして実行する

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

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

開発者アカウントは不要です。

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

  1. Xcodeでシミュレータを停止します(停止ボタンを押す)

  2. HuggingFace Hubのリポジトリに移動します(ローカルに保存していない場合)

  3. 次の2つのファイルをダウンロードします:

    1. qwen3_0.6B_model.pte (エクスポートしたモデル)

    2. tokenizer.json(トークナイザー)

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

  1. シミュレータの仮想ホームボタンをクリックする

  2. Filesアプリ → ブラウズ → On My iPhone を開く

  3. 省略記号(•••)ボタンをタップして、次の名前の新しいフォルダを作成します: Qwen3test

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

フォルダが見つかったら次を実行してください:

ロードしてチャットする

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

  1. Qwen3testフォルダからモデルとトークナイザーをロードします

  1. ファインチューニングしたモデルでチャットを開始しましょう! 🎉

物理的なiPhoneへのデプロイ

初期デバイス設定

  1. iPhoneをUSBでMacに接続する

  2. iPhoneのロックを解除して「このデバイスを信頼」をタップする

  3. Xcodeで、Window → Devices and Simulators に移動する

  4. 左側にデバイスが表示されるのを待ちます(しばらく「Preparing」と表示される場合があります)

Xcodeの署名を設定する

  1. Appleアカウントを追加:Xcode → Settings → Accounts → +

  2. プロジェクトナビゲータでetLLMプロジェクト(青いアイコン)をクリックする

  3. TARGETSの下でetLLMを選択する

  4. Signing & Capabilitiesタブに移動する

  5. 「Automatically manage signing」をチェックする

  6. ドロップダウンからチームを選択する

circle-exclamation

必要な機能を追加する

  1. Signing & Capabilitiesのまま、+ Capabilityをクリックする

  2. 「Increased Memory Limit」を検索して追加する

ビルドして実行する

  1. 上部ツールバーでデバイスセレクタから物理iPhoneを選択する

  2. 再生ボタン(▶️)を押すか Cmd + R を押す

開発者証明書を信頼する

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

  1. iPhoneで、設定 → プライバシーとセキュリティ → 開発者モード に移動する

  2. オンに切り替える

  3. 注意事項に同意して受け入れる

  4. デバイスを再起動し、Xcodeに戻って再度再生を押す

circle-exclamation

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

  1. アプリが実行中になったら、MacでFinderを開く

  2. サイドバーであなたのiPhoneを選択する

  3. Filesタブをクリックする

  4. etLLMを展開する

  5. .pteとtokenizer.jsonファイルをこのフォルダにドラッグ&ドロップする

  6. しばらくお待ちください!これらのファイルは大きく、数分かかる場合があります

ロードしてチャットする

  1. iPhoneでetLLMアプリに戻る

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

  1. あなたのファインチューニング済みQwen3がネイティブにiPhone上で動作します!

android Androidデプロイ

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

要件

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

  • Java 17(Java 21がデフォルトの場合がありますがビルドの問題を引き起こすことがあります)

  • Git

  • Wget / Curl

  • Androidコマンドラインツール

  • インストールのガイドarrow-up-right と設定 adb をあなたのAndroidとコンピュータに

検証

Javaのバージョンが17.xであることを確認してください:

一致しない場合はUbuntu/Debianでインストールしてください:

その後デフォルトに設定するか、次をエクスポートします JAVA_HOME:

別のOSやディストリビューションを使用している場合は、次の ガイドarrow-up-right に従うか、お気に入りのLLMに手順を尋ねてください。

ステップ1:Android SDK & NDKをインストールする

フルのAndroid Studioなしで最小限のAndroid SDK環境を設定します。

1. SDKディレクトリを作成:

  1. Androidコマンドラインツールをインストールする

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

次をあなたの ~/.bashrc または ~/.zshrc:

export PATH=$ANDROID_HOME/platform-tools:$PATH

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

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

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

export ANDROID_NDK=$ANDROID_HOME/ndk/25.0.8775105

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

cd executorch-examples

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

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

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

echo "sdk.dir=$HOME/android-sdk" > llm/android/LlamaDemo/local.properties 次のような cannot find symbol

エラーを修正する: 現在のコードは非推奨のメソッドgetDetailedError()

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

ステップ6:APKをビルドする

  1. このステップでアプリとネイティブライブラリがコンパイルされます。

  2. cd llm/android/LlamaDemo JAVA_HOME Gradleでビルドする(ツールチェーンエラーを避けるために明示的に

    を17に設定):

  3. ./gradlew :app:assembleDebug

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

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

アプリをインストールするには2つのオプションがあります。

オプションA:ADBを使用する(有線/無線) adb もしあなたが

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を使えばそのディレクトリにモデルファイルを保存できます。

  1. adb devices

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

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

  1. コンピュータが電話にアクセスする権限を与えていない場合:

許可を与えるかどうかを求めるポップアップが電話に表示されるので確認してください(許可することを推奨) .pte および 準備ができたら、配置する必要がある tokenizer.json

ファイル用のフォルダを作成します。

adb shell chmod 777 /data/local/tmp/llama

total 0

  1. adb push <path_to_model.pte on your computer> /data/local/tmp/llama 先ほどインストールした executorchllamademo

  2. アプリを開き、右上の歯車アイコンをタップして設定を開きます。

  3. Modelの隣の矢印をタップしてピッカーを開きモデルを選択します。 空白の白いダイアログでファイル名が表示されない場合、ADBによるモデルのプッシュが失敗している可能性があります—その手順をやり直してください。また最初は「モデル未選択」と表示されることがあります。

  1. モデルを選択すると、アプリはモデルのファイル名を表示するはずです。

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

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

  1. 両方のファイルを選択したら「Load Model」ボタンをクリックします。

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

📱「successfully loaded model」と表示されたら、モデルとチャットを開始できます。 めでたし、これであなたのAndroid電話上でネイティブに動作するLLMが手に入りました!

ExecuTorch ExecuTorchは数十億人に力を与えますarrow-up-right Instagram、WhatsApp、Messenger、Facebookでオンデバイスの機械学習体験を実現しています。Instagram CutoutsはExecuTorchを使用して写真から編集可能なステッカーを抽出します。Messengerのような暗号化されたアプリでは、ExecuTorchはオンデバイスでプライバシーに配慮した言語識別や翻訳を可能にします。ExecuTorchはApple、Qualcomm、ARMなど多数のハードウェアバックエンドをサポートしています。 MetaのQuest 3やRay Bansでも動作しますarrow-up-right.

その他のモデルサポート

あなたはカスタマイズできます 無料のColabノートブックarrow-up-right Qwen3-0.6Bのための設定をカスタマイズして、上記の任意のモデルを電話にデプロイできるように!

Qwen3 0.6B 主な電話デプロイ用ノートブック

私たちの Unslothは主に2つの方法で使用できます:当社の無料ノートブックか、ローカルでの使用です。 ページで他のすべてのノートブックを確認してください。

最終更新

役に立ちましたか?