Contents
- 1 Prism LM ous offre un Qwen 27B 9x plus petit
- 2 La configuration utilisée
- 3 Installer CUDA sous WSL2
- 4 Installer Bonsai 2 27B
- 5 Un modèle 27B dans seulement 7,2 Go
- 6 Lancer Bonsai 2
- 7 45 tokens/s sur une RTX 5060 Ti
- 8 Pourquoi Bonsai affiche-t-il son raisonnement ?
- 9 Transformer Bonsai en serveur API local
- 10 Peut-on utiliser Bonsai avec Codex CLI ?
- 11 Le message « high demand » était trompeur
- 12 Pourquoi Codex et Bonsai ne fonctionnent pas encore ensemble ?
- 13 Prochaine étape : utiliser Aider
- 14 Ce que je retiens de cette expérience
- 15 Conclusion
Prism LM ous offre un Qwen 27B 9x plus petit
Faire tourner un modèle de 27 milliards de paramètres en local avec seulement 16 Go de VRAM, ça paraît ambitieux.
C’est pourtant ce que j’ai réussi à faire avec Bonsai 2 27B de PrismML, une NVIDIA RTX 5060 Ti 16 Go, Windows et WSL2.
C’est intéressant pour un développeur car Qwen est considéré comme un remplaçant de Claude en open weight. Imaginez pouvoir coder avec un nombre de tokens infini !
Le résultat obtenu est plutôt impressionnant :
Prompt : 181.2 tokens/s Génération : 45.4 tokens/s << très bon en fait
Le modèle GGUF ne pèse qu’environ 7,2 Go, malgré ses quelque 26,9 milliards de paramètres.
Dans cet article, je ne vais pas détailler toutes les tentatives qui ont échoué. Je vais directement montrer la configuration qui a fonctionné.
La configuration utilisée
Ma machine :
- Windows
- WSL2
- Ubuntu 26.04
- NVIDIA RTX 5060 Ti
- 16 Go de VRAM
- 32 Go de RAM
- CUDA Toolkit 13.4
- Bonsai 2 27B PQ2_0
Premier test depuis WSL :
nvidia-smi
La RTX 5060 Ti est correctement reconnue avec environ 16 Go de VRAM.
Attention aux versions CUDA
Chez moi, nvidia-smi indique :
CUDA Version: 13.1
alors que :
nvcc --version
renvoie :
Cuda compilation tools, release 13.4, V13.4.92
Ce n’est pas contradictoire.
nvidia-smi donne une information liée au support CUDA du driver NVIDIA alors que nvcc indique la version du CUDA Toolkit réellement installé.
Installer CUDA sous WSL2
J’ai d’abord essayé d’installer l’ensemble du toolkit CUDA.
Mais sur Ubuntu 26.04, cela entraînait des dépendances supplémentaires, notamment autour des outils graphiques NVIDIA et de Nsight.
Pour compiler et exécuter Bonsai, je n’avais pas besoin de tout cela.
L’installation minimale qui a fonctionné :
sudo apt install -y cuda-compiler-13-4 cuda-libraries-dev-13-4
J’ai ensuite ajouté CUDA à mon environnement :
echo 'export PATH=/usr/local/cuda-13.4/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-13.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
Puis :
nvcc --version
À ce stade, CUDA était opérationnel.
Installer Bonsai 2 27B
Point important : je n’ai finalement pas installé llama.cpp séparément.
Le projet Bonsai fournit les scripts et binaires dont il a besoin.
J’ai simplement cloné le dépôt :
cd ~ git clone https://github.com/PrismML-Eng/Bonsai-demo.git cd Bonsai-demo
Puis lancé :
./setup.sh
Après téléchargement et préparation de l’environnement :
Setup complete! BONSAI_FAMILY=bonsai2 BONSAI_MODEL=27B
Le dépôt contenait notamment son propre :
bin/cuda/llama-cli
C’est donc cette version qui est utilisée pour Bonsai.
Un modèle 27B dans seulement 7,2 Go
Le modèle installé est :
Ternary-Bonsai-2-27B-PQ2_0.gguf
Il se trouve dans :
~/Bonsai-demo/models/bonsai2-gguf/27B/
Le serveur rapporte environ :
26 895 998 464 paramètres 7 195 047 936 octets PQ2_0 2.13 bpw
Donc environ 26,9 milliards de paramètres dans un fichier de seulement 7,2 Go.
C’est précisément ce qui rend ce type de modèle intéressant pour les GPU disposant de 16 Go de VRAM.
Lancer Bonsai 2
Le lancement est très simple :
cd ~/Bonsai-demo ./scripts/run_llama.sh
Le script sélectionne automatiquement le modèle et le backend CUDA.
Une fois chargé, on peut directement discuter avec le modèle depuis le terminal.
45 tokens/s sur une RTX 5060 Ti
C’était évidemment le test que j’attendais le plus.
Sur ma RTX 5060 Ti 16 Go :
Prompt: 181.2 t/s Generation: 45.4 t/s
Il faut distinguer les deux valeurs.
181 tokens/s correspondent essentiellement au traitement du prompt initial.
45 tokens/s correspondent à la génération des nouveaux tokens.
Pour l’utilisation quotidienne, c’est surtout le deuxième chiffre qui compte.
Et à environ 45 tokens par seconde, l’utilisation interactive est très confortable.
Pourquoi Bonsai affiche-t-il son raisonnement ?
Au premier test, j’ai également vu apparaître quelque chose d’assez inhabituel :
[Start thinking] We need to respond to user...
Puis le modèle analyse la demande avant de produire sa réponse.
Ce n’est pas un bug.
Bonsai 2 fonctionne avec un mécanisme de raisonnement et le script fourni conserve ce comportement.
Dans une interface utilisateur, on pourrait évidemment choisir de masquer cette partie pour ne présenter que la réponse finale.
Transformer Bonsai en serveur API local
Faire discuter le modèle dans un terminal est intéressant.
Mais mon véritable objectif est de pouvoir l’utiliser depuis d’autres applications et notamment depuis des agents de développement.
Bonsai fournit justement llama-server.
Le lancement standard est :
./scripts/start_llama_server.sh
Chez moi, le port 8080 était déjà utilisé par Stremio.
Pas de problème : le script permet de changer le port.
J’utilise donc :
PORT=8081 ./scripts/start_llama_server.sh
On peut vérifier immédiatement l’API :
curl http://localhost:8081/v1/models
Le serveur répond correctement et expose le modèle Bonsai.
J’ai également testé directement l’endpoint :
/v1/responses
avec une requête simple : HTTP 200.
Peut-on utiliser Bonsai avec Codex CLI ?
C’était mon test suivant.
J’utilise régulièrement Codex CLI et l’idée était séduisante :
Codex CLI
↓
Bonsai 2 27B
↓
RTX 5060 Ti
Autrement dit : remplacer le modèle distant par mon modèle local.
J’ai configuré Codex pour utiliser :
http://localhost:8081/v1
Codex reconnaît effectivement Bonsai.
L’écran indique bien :
model: /home/yvonh/Bonsai-demo/models/bonsai2-gguf/27B/Ternary-Bonsai-2-27B-PQ2_0.gguf
Mais au premier prompt :
We're currently experiencing high demand, which may cause temporary errors.
Étrange pour un modèle qui tourne… sur ma propre machine.
Le message « high demand » était trompeur
En regardant directement les logs de llama-server, j’ai découvert la véritable erreur :
unsupported Responses tool type 'namespace' skipped
ainsi que :
unsupported Responses tool type 'web_search' skipped
Et surtout :
Jinja Exception: System message must be at the beginning.
Le serveur finissait donc par retourner une erreur HTTP 500.
Codex transformait simplement cette erreur en message générique :
We're currently experiencing high demand
Le problème n’était donc absolument pas une saturation de Bonsai.
Pourquoi Codex et Bonsai ne fonctionnent pas encore ensemble ?
Une requête simple sur /v1/responses fonctionne.
Mais Codex n’envoie pas une requête simple.
Un agent de développement manipule des outils, des commandes, des fichiers et différents types de messages.
Dans mon cas, Codex envoyait notamment des tools que le serveur Bonsai ne reconnaissait pas :
namespace web_search
Le template utilisé par le modèle imposait également une contrainte sur la position du message system.
On se retrouve donc avec :
Codex CLI
↓
Responses API
↓
tools + instructions
↓
incompatibilité de format
↓
llama-server
↓
HTTP 500
Le problème est donc une incompatibilité entre les protocoles/templates, pas un manque de puissance du modèle.
Prochaine étape : utiliser Aider
Plutôt que de commencer immédiatement à écrire un proxy entre Codex et Bonsai, j’ai décidé de tester une solution plus simple : Aider.
Aider est également un agent de programmation utilisable directement depuis le terminal.
L’idée devient :
Aider ↓ API OpenAI-compatible ↓ llama-server ↓ Bonsai 2 27B ↓ RTX 5060 Ti
Je garde volontairement mes différents composants séparés :
/home/yvonh/ ├── Bonsai-demo/ # modèle + serveur ├── aider-env/ # Aider └── team-of/ # projet de développement
L’installation d’Aider se fera dans son propre environnement Python.
Ce que je retiens de cette expérience
Le résultat le plus intéressant n’est finalement même pas la configuration de WSL ou CUDA.
C’est ce chiffre :
Bonsai 2 27B ≈ 26,9 milliards de paramètres ≈ 7,2 Go de GGUF RTX 5060 Ti 16 Go ≈ 45 tokens/s
Il devient donc parfaitement réaliste de faire tourner un modèle de près de 27 milliards de paramètres sur une carte graphique grand public de 16 Go.
Et avec 45 tokens/s, on ne parle pas seulement d’une démonstration technique.
Le modèle est suffisamment rapide pour être réellement utilisé.
Conclusion
Mon environnement final ressemble aujourd’hui à ceci :
Windows
│
└── WSL2
│
└── Ubuntu 26.04
│
├── CUDA 13.4
│
└── Bonsai-demo
│
└── Bonsai 2 27B PQ2_0
│
└── RTX 5060 Ti 16 Go
│
└── ~45 tokens/s
La partie LLM local fonctionne.
La partie serveur API fonctionne.
Le prochain objectif est maintenant plus ambitieux : voir si ce 27B peut réellement remplacer une partie des modèles cloud dans mon workflow de développement.
Et notamment répondre à une question beaucoup plus intéressante que « est-ce que le modèle démarre ? » :
un modèle 27B local à 45 tokens/s est-il suffisamment bon pour travailler comme véritable agent de développement sur une base de code réelle ?
C’est ce que je vais tester avec Aider.
Mots-clés : Bonsai 2 27B, PrismML, RTX 5060 Ti, LLM local, llama.cpp, llama-server, WSL2, CUDA, GGUF, Aider, Codex CLI, IA locale, modèle 27B, NVIDIA 16 Go.
