Exécuter TinyLlama sur une carte à 10 $ avec PicoLM – Tutoriel complet
Exécuter TinyLlama sur une carte à 10 $ avec PicoLM – Tutoriel complet
L’IA embarquée n’est plus un luxe réservé aux GPU ou aux serveurs cloud. PicoLM, un moteur d’inférence léger en C uniquement, vous permet d’exécuter un modèle complet de 1 milliard de paramètres sur un appareil de 256 MB comme le Raspberry Pi Zero 2W ou le LicheeRV Nano. Ce tutoriel passe en revue chaque étape :
- Pourquoi PicoLM ? | TinyLlama 1.1B au format GGUF, sans dépendances, binaire de moins de 80 KB, ~45 MB de RAM d’exécution.
- Prérequis matériels – Raspberry Pi 5 (4 cœurs), Pi 4, Pi 3 B+ ou Pi Zero 2W ; ou une carte RISC‑V telle que le LicheeRV.
- Build‑et‑installation – ligne de commande unique pour Pi/Linux, compilation complète pour Windows.
- Télécharger le modèle – un fichier unique de 638 MB ; mapper en mémoire les poids, pas de copie en RAM.
- Effectuer un test rapide – voir le pipeline prompt‑réponse.
- Performance – graphiques de tokens par seconde, utilisation de la RAM, et comment ajuster les threads.
- Intégrer avec PicoClaw – l’assistant Go ultra‑léger qui transmet les invites et lit le JSON de sortie.
- Options avancées – contraintes de grammaire JSON, persistance du cache KV, précision mixte, utilisation offline sans GPU.
- FAQ & dépannage – pièges courants et conseils de débogage.
- Étapes suivantes – étendre à Llama‑2, d’autres modèles LLaMA, ajouter des outils personnalisés.
1. Pourquoi PicoLM ?
| Fonctionnalité | Avantage |
|---|---|
| Implémentation pure C | Pas de bibliothèques externes, détection SIMD au moment de la compilation |
| Native GGUF | Lit les poids Q4_K_M directement |
| Flash Attention | Empreinte mémoire O(seq) |
| Cache KV FP16 | Réduit la taille du cache de 88 MB à 44 MB |
| JSON contraint par grammaire | Appel d’outil fiable dans les petits modèles |
| Cross‑compilation pour RISC‑V | Exécuter sur le LicheeRV Nano |
| Binaire très léger (~80 KB) | Déployer partout |
Résultat – TinyLlama 1.1B fonctionne sur une carte à ~10 $ avec 256 MB de RAM et 45 MB de mémoire d’exécution.
2. Prérequis matériels
| Carte | RAM | Coût | Remarques |
|---|---|---|---|
| Raspberry Pi 5 4 cœurs | 2 GB+ | $60 | Meilleure performance |
| Raspberry Pi 4 4 cœurs | 1 GB | $35 | Bon compromis |
| Raspberry Pi 3 B+ | 512 MB | $25 | Toujours fonctionnel |
| Raspberry Pi Zero 2W | 512 MB | $15 | Ultra‑bon marché |
| LicheeRV Nano | 512 MB | $10 | RISC‑V, SIMD similaire à NEON |
Vous aurez besoin d’une carte SD d’au moins 1 GB d’espace de stockage pour le modèle et l’exécution.
3. Build & install
Installer en une ligne (Pi/Linux)
curl -sSL https://raw.githubusercontent.com/RightNow-AI/picolm/main/install.sh | bash
Ce script :
1. Détecte votre architecture (ARM64, ARMv7, x86‑64).
2. Installe gcc, make, et curl si absent.
3. Compile PicoLM avec les drapeaux SIMD optimaux.
4. Télécharge le modèle TinyLlama 1.1B Q4_K_M.
5. Ajoute picolm à votre $PATH.
Build complet (multiplateforme)
git clone https://github.com/rightnow-ai/picolm.git
cd picolm/picolm
# Détection automatique du CPU pour une build native
make native
# ou cross‑compilation pour Raspberry Pi depuis un hôte x86
make cross-pi
# Build pour RISC‑V
make riscv
Windows (MSVC)
cd picolm
build.bat
picolm.exe model.gguf -p "Hello" -n 20
4. Télécharger le modèle
La cible par défaut make model récupère TinyLlama 1.1B Chat (Q4_K_M) – 638 MB.
cd /opt/picolm
make model
Si vous préférez un autre GGUF, placez‑le sous ~/.picolm/models/ et mettez à jour la configuration plus tard.
5. Test rapide
./picolm /opt/picolm/models/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf -p "Explain gravity in one sentence" -n 30
Vous devriez voir une explication courte et cohérente. La taille du binaire est d’environ 80 KB et le programme consomme <45 MB de RAM.
6. Benchmarks de performance
| Dispositif | Coût | Tokens/s | RAM | Remarques |
|---|---|---|---|---|
| Pi 5 4 cœurs | $60 | ~10 | 45 MB | NEON 4 cœurs |
| Pi 4 4 cœurs | $35 | ~8 | 45 MB | NEON |
| Pi 3 B+ | $25 | ~4 | 45 MB | NEON |
| Pi Zero 2W | $15 | ~2 | 45 MB | ARMv7 |
| LicheeRV Nano | $10 | ~1 | 45 MB | SIMD RISC‑V |
Astuce : utilisez le drapeau
-jpour augmenter le nombre de threads (max 8 sur Pi 5). Sur RISC‑V, vous êtes limité aux performances mono‑thread.
7. Intégrer avec PicoClaw
PicoClaw est un assistant Go léger qui lance PicoLM en sous‑processus. Configurez‑le pour utiliser le binaire compilé :
{
"agents": {
"defaults": {"provider": "picolm", "model": "picolm-local"}
},
"providers": {
"picolm": {
"binary": "~/.picolm/bin/picolm",
"model": "~/.picolm/models/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf",
"max_tokens": 256,
"threads": 4,
"template": "chatml"
}
}
}
Exécutez :
picoclaw agent -m "What is photosynthesis?"
PicoClaw gère le protocole, votre appareil reste hors ligne, et la réponse apparaît instantanément.
8. Options avancées
| Option | Utilité |
|---|---|
--json |
Force la sortie JSON grammaticalement valide (essentiel pour l’appel d’outil). |
--cache file.kvc |
Persiste le cache KV ; saute le pré‑remplissage sur invites répétées. |
-t <float> |
Température ; mettre à 0 pour sortie gourmande. |
-k <float> |
Noyau d’échantillonnage Top‑p. |
-s <int> |
Graine RNG. |
-c <int> |
Remplace la longueur de contexte (ex. 512 pour appareils contraints). |
Exemple de test JSON
./picolm /opt/picolm/models/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf --json -p "Return JSON with name and age" -n 40 -t 0.3
Vous recevrez quelque chose comme {"name":"Alice","age":30}.
9. FAQ & dépannage
Q : Mon Pi s’arrête après quelques secondes.
A : La carte SD peut être lente ; essayez une carte UHS‑I haute vitesse et activez le cache d’écriture (ddrescue).
Q : Je reçois une erreur « Out‑of‑memory ».
A : Réduisez -j ou la longueur du contexte. Pour le Pi Zero, gardez le contexte à 512.
Q : Combien d’espace de stockage le modèle occupe‑t‑il ? A : 638 MB pour TinyLlama 1.1B Q4_K_M. D’autres modèles varient (Llama‑2 7B = 4,1 GB).
Q : Cela peut‑il exécuter Llama‑2 7B ? A : Oui, si votre appareil dispose d’environ 1,4 GB de RAM d’exécution pour le cache KV. Le Pi 4 avec 4 GB fonctionnera, mais plus lentement.
10. Étapes suivantes
- Ajouter des outils personnalisés : PicoClaw peut appeler des binaires externes (ex. requêtes Web) et intégrer les réponses dans JSON.
- Supporter plus de modèles : tout modèle GGUF LLaMA‑architecture fonctionne ; téléchargez depuis Hugging Face et mettez à jour la configuration.
- Améliorer la vitesse : noyaux AVX2 ou AVX‑512 pour CPUs de bureau, décodage spéculatif, ou noyaux SIMD plus gros.
- Emballage AI embarqué : embarquez PicoLM dans une image d’application pour Raspberry Pi OS ou Alpine Linux.
En résumé
PicoLM démontre qu’un LLM d’un milliard de paramètres peut tourner sur une carte à 10 $ avec 256 MB de RAM sans GPU, cloud ou accès Internet. Avec une installation de 2 minutes, un binaire de 80 KB et une empreinte de 45 MB de RAM, c’est le LLM local le moins cher que vous trouverez. Que vous soyez un bricoleur IoT, un défenseur de la vie privée ou un développeur repoussant les limites de l’inférence en bordure, PicoLM vous offre une solution LLM entièrement hors ligne, open‑source et hautement optimisée.