# Comment exécuter et déployer des LLMs sur votre téléphone iOS ou Android

Nous sommes ravis de montrer comment vous pouvez entraîner des LLM puis **les déployer localement** sur **téléphones Android** et **iPhones**. Nous avons collaboré avec [ExecuTorch](https://github.com/pytorch/executorch/) de PyTorch et Meta pour créer un flux de travail rationalisé utilisant l'entraînement conscient de la quantification ([QAT](https://unsloth.ai/docs/fr/blog/quantization-aware-training-qat)) puis les déployer directement sur des appareils edge. Avec [Unsloth](https://github.com/unslothai/unsloth)TorchAO et ExecuTorch, nous montrons comment vous pouvez :

* Utiliser la même tech (ExecuTorch) que Meta utilise pour alimenter des milliards d'utilisateurs sur Instagram, WhatsApp
* Déployer Qwen3-0.6B localement sur **Pixel 8** et **iPhone 15 Pro à \~40 tokens/s**
* Appliquer le QAT via TorchAO pour récupérer 70 % de la précision
* Obtenir la confidentialité en priorité, des réponses instantanées et des capacités hors ligne
* Utilisez notre [notebook Colab gratuit](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb) pour affiner Qwen3 0.6B et l'exporter pour le déploiement sur téléphone

<a href="#ios-deployment" class="button secondary" data-icon="apple">Tutoriel iOS</a><a href="#android-deployment" class="button secondary" data-icon="android">Tutoriel Android</a>

{% columns %}
{% column %}
**Qwen3-4B** déployé sur un iPhone 15 Pro

<div align="left"><figure><img src="https://550366147-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** fonctionnant à \~40 tokens/s

<div align="left"><figure><img src="https://550366147-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 %}

### 🦥 Entraînement de votre modèle

Nous prenons en charge Qwen3, Gemma3, Llama3, Qwen2.5, Phi4 et de nombreux autres modèles pour le déploiement sur téléphone ! Suivez le [**notebook Colab gratuit**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb) **pour le déploiement de Qwen3-0.6B :**

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

Tout d'abord, mettez à jour Unsloth et installez TorchAO et Executorch.

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

Ensuite, utilisez simplement `qat_scheme = "phone-deployment"` pour indiquer que nous souhaitons le déployer sur un téléphone. Notez que nous définissons aussi `full_finetuning = True` pour un affinement complet !

```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", # Indicateur pour le déploiement sur téléphone
)
```

Nous utilisons `qat_scheme = "phone-deployment"` nous utilisons en fait `qat_scheme = "int8-int4"` sous le capot pour activer le QAT Unsloth/TorchAO qui *simule* la quantification dynamique d'activation INT8 avec quantification des poids INT4 pour les couches Linéaires pendant l'entraînement (via des opérations de fausse quantification) tout en conservant les calculs en 16 bits. Après l'entraînement, le modèle est converti en une version réellement quantifiée afin que le modèle sur l'appareil soit plus petit et généralement **conserve mieux la précision que la PTQ naïve**.

Après l'affinage comme décrit dans le [notebook Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb), nous l'enregistrons ensuite dans un `.pte` fichier via Executorch :

{% code expandable="true" %}

```bash
# Convertir les clés du state dict du checkpoint de poids vers celles attendues par ExecuTorch
python -m executorch.examples.models.qwen3.convert_weights "phone_model" pytorch_model_converted.bin
# Télécharger la configuration du modèle depuis le dépôt ExecuTorch
curl -L -o 0.6B_config.json https://raw.githubusercontent.com/pytorch/executorch/main/examples/models/qwen3/config/0_6b_config.json
# Exporter vers un fichier pte ExecuTorch
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 %}

### 🏁 Déploiement après l'entraînement

Et maintenant, avec votre `qwen3_0.6B_model.pte` fichier qui fait environ 472 Mo, nous pouvons le déployer ! Choisissez votre appareil et lancez-vous :

* [#ios-deployment](#ios-deployment "mention") – Route Xcode, simulateur ou appareil
* [#android-deployment](#android-deployment "mention") – Route en ligne de commande, pas besoin de Studio

## <i class="fa-apple">:apple:</i> Déploiement iOS

Tutoriel pour faire fonctionner votre modèle sur iOS (testé sur un iPhone 16 Pro mais fonctionnera aussi sur d'autres iPhones). Vous aurez besoin d'un appareil macOS physique capable d'exécuter Xcode 15.

### Configuration de l'environnement de développement macOS

**Installer Xcode et les outils en ligne de commande**

1. Installez Xcode depuis le Mac App Store (doit être la version 15 ou ultérieure)
2. Ouvrez Terminal et vérifiez votre installation : `xcode-select -p`
3. Installez les outils en ligne de commande et acceptez la licence :&#x20;
   1. `xcode-select --install`
   2. `sudo xcodebuild -license accept`
4. Lancez Xcode pour la première fois et installez tous les composants supplémentaires lorsqu'on vous le demande
5. Si on vous demande de sélectionner des plateformes, choisissez iOS 18 et téléchargez-le pour accéder au simulateur

{% hint style="warning" %}
Important : Le premier lancement de Xcode est crucial ! Ne sautez pas l'installation de ces composants supplémentaires ! Consultez [ici](https://developer.apple.com/documentation/xcode/downloading-and-installing-additional-xcode-components) et [ici](https://developer.apple.com/documentation/safari-developer-tools/adding-additional-simulators) pour une aide supplémentaire.
{% endhint %}

**Vérifiez que tout fonctionne :**  `xcode-select -p`

Vous devriez voir un chemin affiché. Sinon, répétez l'étape 3.

![](https://550366147-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)

### Configuration du compte développeur Apple

**Pour les appareils physiques uniquement !**

{% hint style="info" %}
Ignorez toute cette section si vous utilisez uniquement le simulateur iOS. Vous n'avez besoin d'un compte développeur payant que pour le déploiement sur un iPhone physique.
{% endhint %}

{% columns %}
{% column %}
**Créez votre identifiant Apple**

Vous n'avez pas d identifiant Apple ?[ Inscrivez-vous ici](https://support.apple.com/en-us/108647?device-type=iphone).

#### **Ajoutez votre compte à Xcode**

1. Ouvrez Xcode
2. Allez dans Xcode → Settings → Accounts
3. Cliquez sur le bouton + et sélectionnez Apple ID
4. Connectez-vous avec votre identifiant Apple habituel
   {% endcolumn %}

{% column %}

<div align="left"><figure><img src="https://550366147-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 %}

#### **Inscrivez-vous au programme Apple Developer**

ExecuTorch requiert la `capacité increased-memory-limit`, qui nécessite un compte développeur payant :

1. Visitez[ developer.apple.com](https://developer.apple.com)
2. Connectez-vous avec votre identifiant Apple
3. Inscrivez-vous au programme Apple Developer

### Configurer l'application de démonstration ExecuTorch

**Récupérez le code d'exemple :**

```bash
# Télécharger l'app d'exemple LLM directement
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 %}
**Ouvrir dans Xcode**

1. Ouvrir `apple/etLLM.xcodeproj` dans Xcode
2. Dans la barre d'outils supérieure, sélectionnez `iPhone 16 Pro` Simulateur comme appareil cible
3. Appuyez sur Play (▶️) pour construire et exécuter

🎉 Succès ! L'application devrait maintenant se lancer dans le simulateur. Elle ne fonctionnera pas encore, nous devons ajouter votre modèle.
{% endcolumn %}

{% column %}

<figure><img src="https://550366147-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 %}

### Déploiement sur le simulateur

&#x20;**Aucun compte développeur n'est nécessaire.**

**Préparez vos fichiers de modèle**

1. Arrêtez le simulateur dans Xcode (appuyez sur le bouton stop)
2. Accédez à votre dépôt HuggingFace Hub (si non enregistré localement)
3. Téléchargez ces deux fichiers :
   1. `qwen3_0.6B_model.pte` (votre modèle exporté)
   2. tokenizer.json (le tokenizer)

**Créez un dossier partagé sur le simulateur**

1. Cliquez sur le bouton Home virtuel du simulateur
2. Ouvrez l'app Fichiers → Parcourir → Sur mon iPhone
3. Appuyez sur le bouton ellipsis (•••) et créez un nouveau dossier nommé `Qwen3test`

**Transférer des fichiers en utilisant le Terminal**

```bash
# Trouver le dossier caché du simulateur
find ~/Library/Developer/CoreSimulator/Devices/ -type d -iname "*Qwen3test*"
```

Lorsque vous voyez le dossier, exécutez ce qui suit :

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

**Charger & discuter**

{% columns %}
{% column %}

1. Retournez à l'app etLLM dans le simulateur. Touchez-la pour lancer.

<div align="left"><figure><img src="https://550366147-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\. Chargez le modèle et le tokenizer depuis le dossier Qwen3test

<figure><img src="https://550366147-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\. Commencez à discuter avec votre modèle affiné ! 🎉

<div align="left"><figure><img src="https://550366147-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 %}

### Déploiement sur votre iPhone physique

**Configuration initiale de l'appareil**

1. Connectez votre iPhone à votre Mac via USB
2. Déverrouillez votre iPhone et appuyez sur « Faire confiance à cet appareil »
3. Dans Xcode, allez à Window → Devices and Simulators
4. Attendez que votre appareil apparaisse à gauche (il peut afficher « Preparing » pendant un moment)

**Configurer la signature dans Xcode**

{% columns %}
{% column %}

1. Ajoutez votre compte Apple : Xcode → Settings → Accounts → `+`
2. Dans le navigateur de projet, cliquez sur le projet etLLM (icône bleue)
3. Sélectionnez etLLM sous TARGETS
4. Allez à l'onglet Signing & Capabilities
5. Cochez « Automatically manage signing »
6. Sélectionnez votre équipe dans le menu déroulant
   {% endcolumn %}

{% column %}

<figure><img src="https://550366147-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" %}
Changez l'identifiant de bundle en quelque chose d'unique (par ex., com.votrenom.etLLM). Cela corrige 99 % des erreurs de profil de provisioning
{% endhint %}

**Ajouter la capacité requise**

1. Toujours dans Signing & Capabilities, cliquez sur + Capability
2. Recherchez « Increased Memory Limit » et ajoutez-la

**Construire & exécuter**

1. Dans la barre d'outils supérieure, sélectionnez votre iPhone physique dans le sélecteur d'appareil
2. Appuyez sur Play (▶️) ou pressez Cmd + R

**Faites confiance au certificat du développeur**

Votre première construction échouera—c'est normal !

1. Sur votre iPhone, allez dans Réglages → Confidentialité et sécurité → Mode développeur
2. Activez-le
3. Acceptez et validez les avertissements
4. Redémarrez l'appareil, revenez à Xcode et appuyez à nouveau sur Play

{% hint style="warning" %}
Le Mode développeur permet à Xcode d'exécuter et d'installer des apps sur votre iPhone
{% endhint %}

**Transférer les fichiers du modèle vers votre iPhone**

<figure><img src="https://550366147-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. Une fois l'app en cours d'exécution, ouvrez Finder sur votre Mac
2. Sélectionnez votre iPhone dans la barre latérale
3. Cliquez sur l'onglet Fichiers
4. Déployez etLLM
5. Glissez-déposez vos fichiers .pte et tokenizer.json directement dans ce dossier
6. Soyez patient ! Ces fichiers sont volumineux et peuvent prendre quelques minutes

**Charger & discuter**

{% columns %}
{% column %}

1. Sur votre iPhone, revenez à l'app etLLM

<div align="center"><figure><img src="https://550366147-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. Chargez le modèle et le tokenizer depuis l'interface de l'app

<div align="center"><figure><img src="https://550366147-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\. Votre Qwen3 affiné fonctionne maintenant nativement sur votre iPhone !

<figure><img src="https://550366147-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> Déploiement Android

Ce guide couvre comment construire et installer l'application de démonstration ExecuTorch Llama sur un appareil Android (testé avec Pixel 8 mais fonctionnera aussi sur d'autres téléphones Android) en utilisant un environnement en ligne de commande Linux/Mac. Cette approche minimise les dépendances (pas besoin d'Android Studio) et décharge le processus de compilation lourd sur votre ordinateur.

### Prérequis

Assurez-vous que votre machine de développement dispose des éléments suivants installés :

* Java 17 (Java 21 est souvent par défaut mais peut causer des problèmes de build)
* Git
* Wget / Curl
* Outils en ligne de commande Android
* [Guide d'installation](https://www.xda-developers.com/install-adb-windows-macos-linux/) et configuration `adb` sur votre Android et votre ordinateur

#### Vérification

Vérifiez que votre version de Java correspond à 17.x :

```bash
# La sortie devrait ressembler à : openjdk version "17.0.x"
java -version
```

Si ce n'est pas le cas, installez-la via Ubuntu/Debian :

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

Puis définissez-la comme par défaut ou exportez `JAVA_HOME`:

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

Si vous êtes sur un autre OS ou distribution, vous pouvez suivre [ce guide](https://docs.oracle.com/en/java/javase/25/install/overview-jdk-installation.html) ou simplement demander à votre LLM préféré de vous guider.

### Étape 1 : Installer Android SDK & NDK

Configurez un environnement SDK Android minimal sans le plein Android Studio.

1\. Créez le répertoire SDK :

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

2. Installer les outils en ligne de commande Android

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

# Important : Réorganiser pour satisfaire la structure du SDK
mv cmdline-tools/cmdline-tools cmdline-tools/latest
```

### Étape 2 : Configurer les variables d'environnement

Ajoutez celles-ci à votre `~/.bashrc` ou `~/.zshrc`:

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

Rechargez-les :

```bash
source ~/.zshrc  # ou ~/.bashrc selon votre shell
```

### Étape 3 : Installer les composants du SDK

ExecuTorch requiert des versions NDK spécifiques.

```bash
# Accepter les licences
yes | sdkmanager --licenses

# Installer l'API 34 et NDK 25
sdkmanager "platforms;android-34" "platform-tools" "build-tools;34.0.0" "ndk;25.0.8775105"
```

Définir la variable NDK :

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

### Étape 4 : Récupérer le code

Nous utilisons le `repository executorch-examples` qui contient la démo Llama mise à jour.

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

### Étape 5 : Corriger les problèmes de compilation courants

Notez que le code actuel n'a pas ces problèmes mais nous les avons rencontrés précédemment et cela pourrait vous être utile :

**Corriger « SDK Location not found » :**

Créez un `fichier local.properties` pour indiquer explicitement à Gradle où se trouve le SDK :

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

**Corriger `erreur cannot find symbol :` Le code actuel utilise une méthode dépréciée**

getDetailedError() `. Patchez-la avec cette commande :`sed -i 's/e.getDetailedError()/e.getMessage()/g' llm/android/LlamaDemo/app/src/main/java/com/example/executorchllamademo/MainActivity.java

```bash
Étape 6 : Construire l'APK
```

### Cette étape compile l'app et les bibliothèques natives.

Accédez au projet Android :

1. cd llm/android/LlamaDemo

   ```bash
   Construire avec Gradle (définir explicitement
   ```
2. à 17 pour éviter les erreurs de toolchain) : `JAVA_HOME` Remarque : La première exécution prendra quelques minutes.&#x20;

   ./gradlew :app:assembleDebug

   ```bash
   export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
   L'apk final généré se trouve à :
   ```
3. app/build/outputs/apk/debug/app-debug.apk

   ```
   Étape 7 : Installer sur votre appareil Android
   ```

### Vous avez deux options pour installer l'app.

Option A : Utiliser ADB (filaire/sans fil)

#### Si vous avez

accès à votre téléphone : `adb` adb install -r app/build/outputs/apk/debug/app-debug.apk

```bash
Option B : Transfert de fichier direct
```

#### Si vous êtes sur une VM distante ou n'avez pas de câble :

Téléversez l'app-debug.apk dans un emplacement d'où vous pouvez la télécharger sur le téléphone

1. Téléchargez-la sur votre téléphone
2. Appuyez pour installer (activez « Installer depuis des sources inconnues » si demandé).
3. Étape 8 : Transférer les fichiers du modèle

### L'application a besoin du modèle .pte et des fichiers tokenizer.

Transférer les fichiers : Déplacez votre model.pte et tokenizer.bin (ou tokenizer.model) dans le stockage de votre téléphone (par ex., dossier Téléchargements).

1. Ouvrir l'application LlamaDemo : Lancez l'app sur votre téléphone.
2. Sélectionner le modèle
3. Appuyez sur Paramètres (icône engrenage) ou sur le sélecteur de fichiers.
4. Accédez à votre dossier Téléchargements.
5. Sélectionnez votre fichier .pte.
6. Sélectionnez votre fichier tokenizer.
7. Terminé ! Vous pouvez maintenant discuter avec le LLM directement sur votre appareil.

Dépannage

### La compilation échoue ? Vérifiez java -version. Elle DOIT être 17.

* Le modèle ne se charge pas ? Assurez-vous d'avoir sélectionné à la fois le
* ET le `.pte` tokenizer `L'application plante ? Des`.
* fichiers valides doivent être exportés spécifiquement pour ExecuTorch (généralement backend XNNPACK pour le CPU). `.pte` Transférer le modèle vers votre téléphone

### Actuellement,

executorchllama `l'app que nous avons construite ne prend en charge le chargement du modèle que depuis un répertoire spécifique sur Android qui n'est malheureusement pas accessible via les gestionnaires de fichiers classiques. Mais nous pouvons sauvegarder les fichiers du modèle dans ce répertoire en utilisant adb.` Assurez-vous qu'adb fonctionne correctement et est connecté

#### adb devices

```shellscript
Si vous vous êtes connecté via le débogage sans fil, vous verrez quelque chose comme ceci : 
```

{% columns %}
{% column %}

1. Ou si vous vous êtes connecté via un câble :

   <div align="left"><figure><img src="https://550366147-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>

   Si vous n'avez pas donné les permissions à l'ordinateur pour accéder à votre téléphone :

   <div align="left"><figure><img src="https://550366147-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>

   Alors vous devez vérifier votre téléphone pour un dialogue popup qui ressemble à ceci (que vous voudrez peut-être autoriser)

   <div align="left"><figure><img src="https://550366147-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\. Une fois fait, il est temps de créer le dossier où nous devons placer les

<figure><img src="https://550366147-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 %}

tokenizer.json `.pte` et `fichiers.` Créez le répertoire indiqué sur le chemin du téléphone.

adb shell mkdir -p /data/local/tmp/llama

```shellscript
adb shell chmod 777 /data/local/tmp/llama
Vérifiez que le répertoire est correctement créé.
```

adb shell ls -l /data/local/tmp/llama

```shellscript
total 0
Poussez le contenu vers ce répertoire. Cela peut prendre quelques minutes ou plus selon votre ordinateur, la connexion et le téléphone. Veuillez être patient.
```

adb push \<path\_to\_tokenizer.json on your computer> /data/local/tmp/llama

```shellscript
adb push <path_to_model.pte on your computer> /data/local/tmp/llama
Ouvrez l'application
```

<figure><img src="https://550366147-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. executorchllamademo `que vous avez installée à l'étape 5, puis touchez l'icône d'engrenage en haut à droite pour ouvrir les Paramètres.` Touchez la flèche à côté de Model pour ouvrir le sélecteur et sélectionnez un modèle.\
   Si vous voyez une boîte blanche vide sans nom de fichier, votre push ADB du modèle a probablement échoué - refaites cette étape. Notez aussi qu'il peut initialement afficher « no model selected ».
2. Après avoir sélectionné un modèle, l'app devrait afficher le nom du fichier du modèle.
3. Répétez maintenant la même opération pour le tokenizer. Cliquez sur la flèche à côté du champ tokenizer et sélectionnez le fichier correspondant.
   {% endcolumn %}

{% column %}

<div><figure><img src="https://550366147-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://550366147-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\. Vous devrez peut-être sélectionner le type de modèle selon celui que vous téléchargez. Qwen3 est sélectionné ici.

<figure><img src="https://550366147-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\. Une fois les deux fichiers sélectionnés, cliquez sur le bouton « Load Model ».

<figure><img src="https://550366147-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\. Vous reviendrez à l'écran initial avec la fenêtre de chat, et il se peut qu'il affiche « model loading ». Cela peut prendre quelques secondes en fonction de la RAM et des vitesses de stockage de votre téléphone.

<figure><img src="https://550366147-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\. Une fois qu'il indique « successfully loaded model », vous pouvez commencer à discuter avec le modèle.\
\
Et voilà, vous avez maintenant un LLM fonctionnant nativement sur votre téléphone Android !

<figure><img src="https://550366147-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\. ExecuTorch alimente des milliards

<figure><img src="https://550366147-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:alimente des expériences ML sur appareil pour des milliards de personnes <a href="#docs-internal-guid-7d7d5aee-7fff-f138-468c-c35853fee9ca" id="docs-internal-guid-7d7d5aee-7fff-f138-468c-c35853fee9ca"></a>

ExecuTorch [sur Instagram, WhatsApp, Messenger et Facebook. Instagram Cutouts utilise ExecuTorch pour extraire des stickers éditables à partir de photos. Dans des applications chiffrées comme Messenger, ExecuTorch permet l'identification linguistique et la traduction sensibles à la confidentialité sur l'appareil. ExecuTorch prend en charge plus d'une douzaine de backends matériels chez Apple, Qualcomm, ARM et](https://engineering.fb.com/2025/07/28/android/executorch-on-device-ml-meta-family-of-apps/) Quest 3 et Ray-Bans de Meta [Support d'autres modèles](https://ai.meta.com/blog/executorch-reality-labs-on-device-ai/).

## Tous les modèles denses Qwen 3 (

* Qwen3-32B[Qwen3-0.6B](https://huggingface.co/unsloth/Qwen3-0.6B), [Qwen3-4B](https://huggingface.co/unsloth/Qwen3-4B), [etc)](https://huggingface.co/unsloth/Qwen3-32B) Tous les modèles Gemma 3 (
* Gemma3-270M[Gemma3-4B](https://huggingface.co/unsloth/gemma-3-270m-it), [Gemma3-27B](https://huggingface.co/unsloth/gemma-3-4b-it), [Tous les modèles Llama 3 (](https://huggingface.co/unsloth/gemma-3-27b-it) Tous les modèles Gemma 3 (
* Llama 3.1 8B[Llama 3.3 70B Instruct](https://huggingface.co/unsloth/Llama-3.1-8B-Instruct), [Qwen 2.5, Phi 4 Mini models, et bien plus encore !](https://huggingface.co/unsloth/Llama-3.3-70B-Instruct) Tous les modèles Gemma 3 (
* Vous pouvez personnaliser le

pour Qwen3-0.6B afin de permettre le déploiement sur téléphone pour n'importe lequel des modèles ci-dessus ! [**notebook Colab gratuit**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_\(0_6B\)-Phone_Deployment.ipynb) Notebook principal de déploiement sur téléphone pour Qwen3 0.6B

{% columns %}
{% column %}
**Fonctionne avec Gemma 3**

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

{% column %}
Fonctionne avec Llama 3

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

{% column %}
Allez sur notre

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

page pour tous les autres notebooks. [unsloth-notebooks](https://unsloth.ai/docs/fr/commencer/unsloth-notebooks "mention") &#x20;
