Faire tourner un LLM localement sur smartphone sans dépendre du Cloud
Je détaille ici la procédure technique pour installer et exécuter un modèle de langage (LLM) directement sur le processeur de votre téléphone. L'objectif est de supprimer tout échange de données avec des serveurs externes pour garantir une confidentialité absolue et un fonctionnement hors ligne. Je me concentre sur l'utilisation de Termux pour Android et MLC LLM pour une approche multiplateforme, en précisant les réglages d'optimisation indispensables.
Le matériel : ce que la théorie ne dit pas sur la RAM
Avant de taper la moindre ligne de commande, j'ai dû me confronter à la réalité physique des puces mobiles. Faire tourner une IA exige une quantité de mémoire vive (RAM) que peu de téléphones possèdent encore.
J'ai testé plusieurs configurations. Sur un appareil avec 4 Go de RAM, le système (Android ou iOS) tue instantanément le processus dès que le modèle est chargé. Pour obtenir un résultat fluide, je recommande un minimum de 8 Go de RAM, bien que 12 Go soient l'idéal pour les modèles de 7 ou 8 milliards de paramètres (7B/8B).
Tableau de compatibilité matérielle (estimations réelles)
| Taille du modèle | Quantification | RAM minimale requise | Performance attendue |
| 1B - 3B (ex: Phi-3) | 4-bit (Q4_K_M) | 4 Go | Très rapide |
| 7B - 8B (ex: Llama 3) | 4-bit (Q4_K_M) | 8 Go | Utilisable (3-5 t/s) |
| 7B - 8B (ex: Mistral) | 6-bit (Q6_K) | 12 Go | Lenteur possible |
Avertissement thermique : Faire tourner un LLM en local sollicite le SoC (System on Chip) à 100 %. J'ai observé des montées en température atteignant 45°C en moins de dix minutes. Prévoyez de ne pas laisser le téléphone dans une coque épaisse pendant vos tests prolongés. Sandy Jasingh
Méthode 1 : Android avec Termux et Llama.cpp
C'est ma méthode préférée. Elle offre le contrôle le plus total sur les paramètres d'exécution. Nous allons utiliser Termux, un émulateur de terminal Linux, pour compiler llama.cpp, la bibliothèque de référence pour l'inférence locale.
Étape 1 : Préparer l'environnement
Je commence par installer Termux. Un point crucial : n'utilisez pas la version du Play Store, elle est obsolète. Je télécharge l'APK directement sur F-Droid.
Une fois dans le terminal, j'exécute ces commandes pour mettre à jour les dépôts et installer les dépendances de compilation :
pkg update && pkg upgrade
pkg install clang cmake git ninja
Étape 2 : Compilation de llama.cpp
J'ai remarqué que la compilation native sur le téléphone permet de mieux exploiter les instructions ARM spécifiques de la puce.
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build
cd build
cmake .. -G Ninja
ninja
Le binaire exécutable se trouve maintenant dans le dossier bin.
Étape 3 : Récupération d'un modèle optimisé
Je ne peux pas charger un modèle brut au format PyTorch. Il me faut des fichiers au format GGUF. Je me rends sur Hugging Face pour trouver des versions "quantifiées" (compressées).
Pour un bon compromis entre intelligence et performance, je vous conseille de chercher "Llama-3-8B-Instruct-GGUF". Téléchargez le fichier via curl ou wget directement dans Termux.
Mon astuce de pro : Utilisez toujours la quantification Q4_K_M. C'est le "sweet spot" où la perte de précision est quasi imperceptible pour l'humain, mais où l'empreinte mémoire est divisée par quatre. Sandy Jasingh
Méthode 2 : MLC LLM pour une approche simplifiée (Android & iOS)
Si vous ne voulez pas compiler de code manuellement, MLC LLM est la solution la plus stable. Ils ont développé une application qui utilise WebGPU ou Vulkan pour accélérer les calculs via le processeur graphique (GPU) du smartphone, ce qui est souvent plus efficace que le processeur central (CPU).
- J'installe l'application TestFlight sur iOS ou je télécharge l'APK sur le site officiel de MLC.ai.
- L'interface propose une liste de modèles pré-configurés.
- Je sélectionne "Llama-3-8B-v0.1-q4f16_1".
Ce qu'on ne vous dit pas : L'application MLC LLM est extrêmement gourmande au moment de l'indexation initiale du modèle. Si l'application plante au premier lancement, j'ai découvert qu'il fallait souvent fermer toutes les autres applications en arrière-plan pour libérer de la "swap memory".
Optimisation de l'inférence : les réglages qui changent tout
Lancer le modèle ne suffit pas ; il faut le configurer pour qu'il réponde avant que vous ne perdiez patience. Voici les paramètres que je modifie systématiquement dans llama.cpp :
Le nombre de threads (-t)
Par défaut, le système peut essayer d'utiliser tous les cœurs. Sur un processeur mobile (souvent 8 cœurs avec une architecture Big.LITTLE), j'obtiens de meilleurs résultats en limitant le nombre de threads au nombre de cœurs "performants" (généralement 4).
./main -m modèle.gguf -t 4 -n 128
Le Context Size (-c)
Le contexte consomme énormément de RAM. Si je règle le contexte sur 8192 tokens, mon téléphone sature. Je le bride souvent à 2048 pour des échanges courts, ce qui libère de la mémoire pour le calcul pur.
Comparaison des interfaces : Quelle solution choisir ?
| Solution | Difficulté | Contrôle | Performance |
| Termux + llama.cpp | Haute | Total | Excellente (CPU) |
| MLC Chat | Faible | Limité | Maximale (GPU) |
| Maid (Android) | Moyenne | Moyen | Bonne |
Gestion des erreurs courantes
Erreur "Out of Memory" (OOM)
Si le processus s'arrête brutalement avec un message "Killed", c'est que le noyau Android a récupéré la mémoire. Ma solution de contournement : activer un fichier de swap si votre téléphone est rooté, ou passer à un modèle plus petit comme Phi-3 Mini (3.8B) de Microsoft.
Lenteur extrême après 2 minutes
C'est le thermal throttling. Le processeur réduit sa fréquence pour ne pas fondre. J'ai constaté que brider la vitesse de génération à 3 tokens par seconde volontairement permet de maintenir une température stable et d'éviter les chutes de performance brutales.
Conclusion technique sur l'usage quotidien
Installer un LLM local n'est pas qu'une prouesse technique. J'utilise cette configuration pour corriger mes textes ou coder des scripts simples sans que mes données ne quittent mon appareil. Certes, la batterie fond à vue d'œil (comptez 1 % de batterie par minute de discussion intense), mais l'indépendance vis-à-vis des géants du Cloud compense largement ce coût énergétique.
Si vous possédez un iPhone récent (puce A17 Pro ou plus) ou un Android avec un Snapdragon 8 Gen 2/3, la fluidité est bluffante. Pour les modèles plus anciens, restez sur des modèles de 3 milliards de paramètres pour conserver une expérience agréable.
À propos de l'auteur : Sandy Jasingh s’appuie sur 13 ans d’expertise au cœur du secteur high-tech. Après 8 ans en magasin dans des grosses enseignes françaises, puis 5 ans comme conseillère client chat dans le high-tech. Cette double expérience, du terrain au conseil digital, lui donne une vision unique des attentes réelles des utilisateurs. Aujourd’hui rédactrice de tests et d’actualités, elle décrypte l’innovation avec un seul objectif : valider l’utilité concrète des produits au quotidien.
← Voir tous nos Tutoriels & Astuces Tech