IA embarquée · 8 min de lecture
Comment un modèle de langage tient sur un téléphone
Les applications d'IA locale réclament une quantité de stockage surprenante,
et ce n'est pas du superflu. Comprendre où passent ces gigaoctets explique
aussi pourquoi le modèle est rapide sur un téléphone récent et poussif sur
un ancien — et ce que le nom de fichier
Q3_K_S vous dit vraiment.
Un modèle est un gros tas de nombres
Un modèle de langage est un ensemble de paramètres appris — des poids. Chacun est un nombre, et il y en a des milliards. « 2B » dans le nom d'un modèle signifie environ deux milliards de paramètres.
Stocké en pleine précision, chaque poids occupe 4 octets. Deux milliards de poids à 4 octets font environ 8 Go, pour l'un des plus petits modèles. Voilà le problème en une phrase : le fichier est volumineux parce que les nombres sont nombreux et que chacun est stocké avec précision.
La quantification : moins de bits par nombre
La quantification stocke chaque poids sur moins de bits. Au lieu de 32 bits par poids, on en utilise 8, ou 4, ou 3 — avec des facteurs d'échelle par bloc de poids, pour que l'approximation reste proche de l'original.
La réduction de taille est à peu près linéaire :
- 32 bits — ~8 Go pour un modèle 2B. Pleine précision, inadapté au téléphone.
- 8 bits — ~2 Go. Très proche de la qualité d'origine.
- 4 bits — ~1,1 Go. Le compromis habituel.
- 3 bits — ~800 Mo. Nettement plus dégradé, encore utile.
- 2 bits — plus petit encore, et la qualité chute nettement.
C'est de la compression avec perte, comme un JPEG. Poussez-la assez loin et les artefacts apparaissent — dans un modèle de langage, ils prennent la forme de réponses plus vagues, de répétitions, ou d'un écart par rapport à la question.
La quantification ne rend pas un modèle bête de façon uniforme. Elle le rend moins précis, et l'imprécision se voit d'abord sur les entrées les plus difficiles.
Lire le nom du fichier
Un nom comme Q4_K_M ou Q3_K_S est une recette, pas un numéro de
version :
- Q4 / Q3 — à peu près le nombre de bits par poids.
- _K — un schéma « k-quant », qui répartit son budget de bits de façon inégale, en gardant plus de précision là où le modèle est le plus sensible.
- _S, _M, _L — small, medium ou large : petit, moyen ou grand au sein de ce schéma. Plus grand garde plus de qualité, et plus d'octets.
Ainsi, Q3_K_S est un petit k-quant 3 bits : compressé agressivement,
choisi quand tenir sur l'appareil compte plus que les derniers pourcents de
qualité.
GGUF : le conteneur
GGUF est le format de fichier qui contient les poids quantifiés et les métadonnées dont un moteur d'exécution a besoin — tokeniseur, architecture, gabarit de prompt. Un seul fichier, sans dossier de configuration à côté.
C'est important sur téléphone, parce que GGUF est conçu pour être projeté en mémoire. Plutôt que de charger 1,7 Go en RAM, le moteur projette le fichier dans son espace d'adressage et le système d'exploitation charge à la demande les parties réellement utilisées. C'est pourquoi un modèle plus gros que la RAM libre d'un téléphone peut quand même tourner, et pourquoi la première réponse après l'ouverture d'une application est plus lente que la suivante : les pages sont encore en train d'arriver.
Pourquoi le téléphone chauffe
Générer un mot — un token — signifie faire passer l'entrée par ces milliards de paramètres. Puis recommencer pour le token suivant. Une réponse de cent mots, c'est cent passages.
C'est du calcul soutenu sur le processeur ou l'accélérateur neuronal, exactement la charge que les téléphones supportent le moins bien thermiquement. Les appareils se brident quand ils chauffent, et une longue génération ininterrompue ralentit à mesure. Les bonnes applications locales étalent leur travail — en espaçant les tâches pour laisser la puce refroidir — plutôt que de tout enchaîner.
Pourquoi les vieux téléphones peinent
Trois contraintes, toutes incontournables :
- La bande passante mémoire. Chaque token suppose de lire une grande partie des poids. La vitesse de génération est souvent limitée par la vitesse de lecture de la mémoire, pas par la puissance de calcul brute.
- La RAM. La projection en mémoire aide, mais un appareil déjà à l'étroit paginera sans arrêt, et le système peut tout simplement fermer l'application.
- Les accélérateurs. Les puces récentes disposent de matériel adapté à ce type de calcul. Les anciennes se rabattent sur des cœurs génériques et tournent plusieurs fois plus lentement.
C'est pourquoi les applications d'IA locale annoncent un appareil minimum plutôt que d'essayer de tout prendre en charge. En dessous d'un certain seuil, l'expérience n'est pas dégradée : elle est inutilisable.
Le compromis que vous acceptez
Un modèle quantifié à la taille d'un téléphone n'égalera pas un grand modèle dans le cloud sur du raisonnement difficile. Pour une tâche bornée — que veut dire ce mot dans cette phrase, traduis cette expression — il est largement suffisant, et il apporte trois propriétés qu'un modèle dans le cloud ne peut pas offrir : il fonctionne sans connexion, il ne coûte rien à l'usage, et le texte ne quitte jamais l'appareil.
C'est tout le marché de l'IA embarquée. Vous renoncez au plus grand modèle possible, et vous gagnez la confidentialité, le hors-ligne et l'absence de compteur.
Comment ClickBook procède
ClickBook embarque un modèle GGUF quantifié et l'exécute avec llama.cpp sur votre appareil. Sur iOS, il est inclus dans l'application : il n'y a rien à télécharger. En savoir plus sur les liseuses à IA locale, ou voir comment fonctionne ClickBook.