<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Rock Robot</title><link href="https://rockrobot.fr/" rel="alternate"/><link href="https://rockrobot.fr/feeds/all.atom.xml" rel="self"/><id>https://rockrobot.fr/</id><updated>2026-06-30T00:00:00+02:00</updated><entry><title>Hermes en local avec 16 Go de RAM : 🤯</title><link href="https://rockrobot.fr/hermes-en-local-avec-16-go-de-ram.html" rel="alternate"/><published>2026-06-30T00:00:00+02:00</published><updated>2026-06-30T00:00:00+02:00</updated><author><name>Sébastien DA ROCHA</name></author><id>tag:rockrobot.fr,2026-06-30:/hermes-en-local-avec-16-go-de-ram.html</id><summary type="html">&lt;!-- Tags: [llama.cpp, Hermes, vibecoding, local-first, AMD, Radeon, MiniMax, Ollama] --&gt;

&lt;p&gt;J'avais été agréablement surpris lors du &lt;a href="https://rockrobot.fr/opencode-ollama-vue-sur-openrouter.html"&gt;vibe coding avec OpenCode&lt;/a&gt;. &lt;a href="https://rockrobot.fr/openclaw-en-local-avec-ollama-rock-robot.html"&gt;OpenClaw&lt;/a&gt;, lui, m'avait laissé un goût amer dans la bouche.&lt;/p&gt;
&lt;p&gt;Un peu comme quand tout le monde arrive à faire un truc et que t'es le dernier de la classe à ne pas y arriver.&lt;/p&gt;
&lt;p&gt;Aujourd'hui je teste Hermes avec …&lt;/p&gt;</summary><content type="html">&lt;!-- Tags: [llama.cpp, Hermes, vibecoding, local-first, AMD, Radeon, MiniMax, Ollama] --&gt;

&lt;p&gt;J'avais été agréablement surpris lors du &lt;a href="https://rockrobot.fr/opencode-ollama-vue-sur-openrouter.html"&gt;vibe coding avec OpenCode&lt;/a&gt;. &lt;a href="https://rockrobot.fr/openclaw-en-local-avec-ollama-rock-robot.html"&gt;OpenClaw&lt;/a&gt;, lui, m'avait laissé un goût amer dans la bouche.&lt;/p&gt;
&lt;p&gt;Un peu comme quand tout le monde arrive à faire un truc et que t'es le dernier de la classe à ne pas y arriver.&lt;/p&gt;
&lt;p&gt;Aujourd'hui je teste Hermes avec ma toute nouvelle carte graphique moyen de gamme. Voici mes pérégrinations.&lt;/p&gt;
&lt;h2&gt;Le setup&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Debian 13 (Trixie)&lt;/li&gt;
&lt;li&gt;AMD Radeon RX 9060 XT 16 Go&lt;/li&gt;
&lt;li&gt;CPU Ryzen 5 3700X&lt;/li&gt;
&lt;li&gt;32 Go de RAM DDR4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L'objectif : faire tourner un assistant personnel capable de gérer des contextes conséquents, sans envoyer mes données dans un cloud dont je ne maîtrise pas la localisation juridique.&lt;/p&gt;
&lt;h2&gt;Étape 1 : Ollama, les bonnes premières impressions&lt;/h2&gt;
&lt;p&gt;J'installe Ollama, version 0.24.0, et je le configure en Vulkan (on rajoute la variable d'environnement &lt;code&gt;OLLAMA_VULKAN=1&lt;/code&gt;). Premier test avec &lt;strong&gt;Qwen 3.5:9B&lt;/strong&gt;, le modèle tient en VRAM avec un contexte de 64K, réponse fluide, latence acceptable. Je me dis que ce hard est enfin suffisamment puissant.&lt;/p&gt;
&lt;p&gt;Je tente de monter en puissance. &lt;strong&gt;Gemma4:26B&lt;/strong&gt; en IQ4_XS depuis Huggingface. Ollama télécharge, et l'éjecte le modèle au moment du chargement&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;llama_model_load&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;loading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;loading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;architecture&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;unknown&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;architecture&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;gemma4&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Même scénario avec d'autres modèles et quantifications d'Onslaught. Ollama doit modifier la fiche de description du modèle pour que ça passe : il y a des modèles Gemma 4 disponibles sur &lt;a href="https://ollama.com/library/gemma4"&gt;ollama.com&lt;/a&gt;. Il faudrait que je trouve leur process de quantification des modèles... flemme.&lt;/p&gt;
&lt;h2&gt;Étape 2 : Le tests d'Hermes&lt;/h2&gt;
&lt;p&gt;Je bascule sur &lt;strong&gt;Hermes&lt;/strong&gt;, je l'installe dans un docker. c'est plus&lt;/p&gt;
&lt;p&gt;Premier constat : le mail comme frontend c’est… rustique. Pour la messagerie instantanée, je tente une passerelle &lt;strong&gt;Matrix&lt;/strong&gt; auto-hébergée avec &lt;strong&gt;Conduit&lt;/strong&gt; et &lt;strong&gt;Element&lt;/strong&gt;. Après trois heures de batailles sur la configuration du reverse proxy &lt;em&gt;traefik&lt;/em&gt; et des certificats Let's Encrypt, j'abandonne faute de temps. Je vais tester sur l’instance publique de Matrix.org (et je me note de remplacer traefix).&lt;/p&gt;
&lt;p&gt;Les &lt;strong&gt;tools&lt;/strong&gt; — ces fonctions que l'agent peut invoquer pour agir sur le système — s'enchaînent mal, et le modèle boucle sur une vérification inutile. Il refuse d'utiliser le serveur MCP configuré et veut impérativement utiliser &lt;code&gt;curl&lt;/code&gt; pour faire des appels API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pire :&lt;/strong&gt; à chaque redémarrage de la passerelle llama.cpp, l'historique de conversation est réinitialisé. Pas de persistance de session dans cette configuration. Ça fait bizarre d'avoir un salon de conversation où  l’interlocuteur a tout oublié d'une ligne sur l'autre.&lt;/p&gt;
&lt;p&gt;Ollama a cessé plusieurs fois de répondre à l'inférence alors que le reste de l’API fonctionnait. Obligé de le redémarrer. Ça c’est réglé en basculant de Vulkan à ROCm. Et là c'est une galère sans nom. N'utilisez pas Debian (pas pour l'instant) pour faire tourner ROCm : les paquets de la doc officielle on des conflits de version avec les paquets système, notamment rocm-info. C'est dommage que je n'aie pas pris de notes, mais mon conseil : si vous voulez utiliser ROCm, pour l'instant, passez sous Ubuntu.&lt;/p&gt;
&lt;p&gt;J’ai deux astuces pour ollama cependant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La librairie de calcul ROCm n’est pas installée automatiquement, il faut réinstaller ollama.&lt;/li&gt;
&lt;li&gt;Si vous avez nvidia-smi installé, l’installeur n’installera pas ROCm, il pensera que vous avez une Nvidia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Étape 3 : La tentation du SaaS&lt;/h2&gt;
&lt;p&gt;Fatigué, je cède. &lt;strong&gt;MiniMax&lt;/strong&gt;, développeur chinois de LLM propose un service SaaS qui est réputé pour avoir un bon rapport quota de token/prix. En plus, le modèle est très fort en Agentic AI d'après les tests. Inscription, paiement par carte avec conversion EUR/Dollars : 217 € TTC crédités.&lt;/p&gt;
&lt;p&gt;L'intégration dans Hermes est immédiate : une URL d'API, une clé, et l'agent reprend du service. Leur modèle M2.7 code, lit mes mails via IMAP, planifie des tâches dans Nextcloud. Le confort est radical.&lt;/p&gt;
&lt;p&gt;Mais des anomalies surviennent. Au milieu d'une réponse en français impeccable, des mots russe apparaissent, parfois des caractères chinois.&lt;/p&gt;
&lt;p&gt;Je n'ai pas investigué plus loin, je l'avais vu sur les vidéos de &lt;a href="https://www.youtube.com/@minutora"&gt;Minutora&lt;/a&gt;. Parfois je lui fais la remarque, il répond que c'était une blague et reparle bien français pendant un temps.&lt;/p&gt;
&lt;p&gt;En tout cas, si je trouve que ce modèle n'est pas extrêmement rigoureux, mais débrouillard et plutôt intelligent, en plus de ne pas être cher.&lt;/p&gt;
&lt;p&gt;Tout de même, ça me chagrine d'envoyer des données perso ou faire du travail stratégique pour l'entreprise avec un serveur en Chine (même problème avec les SaaS américains au passage). Pour l'open source, ça me dérange moins, les données sont déjà publiques.&lt;/p&gt;
&lt;h2&gt;L'erreur de conception découverte trop tard&lt;/h2&gt;
&lt;p&gt;Pendant une pause, je me suis dit "Mais il est bête ce modèle ? C'est comme s'il avait perdu la mémoire". Des commentaires sur LinkedIn me conseillaient de tester Qwen3.6:35B en q2_0. Des tests le placent juste en dessous de Minimax M2.7 en agentic AI, et davs certains cas Qwen3.6:27B est même au-dessus.&lt;/p&gt;
&lt;p&gt;Quand ma curiosité reprend le dessus sur la flemme, je retourne aux tests locaux… pour passer sur llama.cpp.&lt;/p&gt;
&lt;p&gt;Premier point, je n'ai pas réussi à compiler llama.cpp avec ROCm, j'avais les libs installées mais pas les sdk... qui refusaient de s'installer. Donc je teste la compilation avec Vulkan.&lt;/p&gt;
&lt;p&gt;J'essaye le modèle Qwen3.6 27B en q2, il se charge en mémoire mais il est trop long à répondre… donc tant pis, je me rabats sur le Qwen3.6:35B-A3B qui est un mixture of experts, donc ça divise la quantité de calculs par 6 par rapport à un modèle classique :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;build/bin/llama-server -fa 1 -c 65535 --port 13434 --host 0.0.0.0 -hf unsloth/Qwen3.6-35B-A3B-GGUF:UD-IQ2_XXS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Petite explication :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-fa 1&lt;/code&gt; : active l'attention flash, il faut un moteur spécial pour ça, qui a priori n'existe que pour Nvidia (initule pour moi mais c'est joli);&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c 65535&lt;/code&gt; : notre contexte de  64K, je n'avais pas assez de ram pour mettre plus&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port 13434&lt;/code&gt; : alors la doc préconise le port 8080... qu'on utilise tout le temps pour développer, Ollama utilise le 11434, Docker Model Runner le 12434... donc llama.cpp utilisera le 13434, normal non ?&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--host 0.0.0.0&lt;/code&gt; : sur mon infra, Hermes est sur une autre machine que ma station de travail, donc la station de travail écoute sur le tout réseau local.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-hf unsloth/Qwen3.6-35B-A3B-GGUF:UD-IQ2_XXS&lt;/code&gt; : Unsloth propose sur HuggingFace une pléthore de quantifications de modèles open source.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;N.B.: En rédigeant l'article je me rends compte que j'ai oublié d'activer la quantification du KV Cache avec &lt;code&gt;-ctk q8_0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Et là ça marche bien. Les outils sont appelés. Il peut chercher dans sa mémoire tout seul.&lt;/p&gt;
&lt;p&gt;J'ai l'impression que Qwen3.6 est plus concis et plus efficace que Minimax M2.7, c'est un peu déroutant. Je n'ai pas vu de problèmes de traduction comme sur Minimax.&lt;/p&gt;
&lt;p&gt;Par contre, la première requête est très longue. Le prompt processing sur cette machine est très long (500 tok/s, donc avec un contexte de 50000 tokens... on attend plus d'une minute). Il faut que je trouve comment optimiser ça, c'est dans ma todo-list. A priori la bande passante mémoire de la RX 9060 XT (288 Go/s) devient le goulot d'étranglement pour cette étape. La génération est plutôt rapide avec environ 50 tokens/s.&lt;/p&gt;
&lt;h2&gt;Local ou SaaS ? Le bilan&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Local&lt;/strong&gt; (llama.cpp)&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;SaaS&lt;/strong&gt; (MiniMax)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forces&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Confidentialité des données stratégiques et personnelles ; zéro abonnement récurrent ; montée en compétence profonde sur le fonctionnement des LLM&lt;/td&gt;
&lt;td&gt;Accessible partout (tant qu'on a de la 5G) ; contexte immense par défaut ; zéro configuration ; quotas généreux (217 €/an peu limitant)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Faiblesses&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bruit à maîtriser ; achat du matériel ; veille technique sur le moteur d'inférence&lt;/td&gt;
&lt;td&gt;Coût annuel ; dépendance au réseau&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Opportunités&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Maîtrise qui permet de limiter les coûts futurs en cloud&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Menaces&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Problèmes de licence ; erreur d'achat matériel ; perte de temps importante ; panne hardware ; modèles veroles (déjà rencontré : spam de requêtes SQL et de macros Excel)&lt;/td&gt;
&lt;td&gt;&lt;em&gt;fuite de données&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Faire du bon vibecoding en local avec 16 Go de VRAM, c'est possible. Il faut cependant renoncer  au confort d'Ollama, et se lancer dans la compilation et la configuration de llama.cpp donc retrousser les manches pour plonger dans les arcanes des LLM.&lt;/p&gt;
&lt;p&gt;En tout cas maintenant je peux vibe coder de n'importe où en lançant ma station de travail éteinte grâce à Minimax, et je peux utiliser Qwen3.6 en local pour traiter des données sensibles.&lt;/p&gt;</content><category term="IA"/></entry><entry><title>OpenClaw en local avec Ollama - Rock Robot</title><link href="https://rockrobot.fr/openclaw-en-local-avec-ollama-rock-robot.html" rel="alternate"/><published>2026-05-21T00:00:00+02:00</published><updated>2026-05-21T00:00:00+02:00</updated><author><name>Sébastien DA ROCHA</name></author><id>tag:rockrobot.fr,2026-05-21:/openclaw-en-local-avec-ollama-rock-robot.html</id><summary type="html">&lt;!-- summary: Installer et configurer OpenClaw avec Ollama pour un assistant IA local performant sur GPU --&gt;

&lt;p&gt;J’ai dû rédiger un CV pour un client potentiel ; c'était l’occasion de tester OpenClaw en local.&lt;/p&gt;
&lt;p&gt;Je voulais profiter de l’occasion pour tester des modèles plus puissants sur ma carte graphique Nvidia RTX 2070, avec 8 Go de RAM.&lt;/p&gt;
&lt;p&gt;À l'époque (oui oui, l'année dernière), elle faisait …&lt;/p&gt;</summary><content type="html">&lt;!-- summary: Installer et configurer OpenClaw avec Ollama pour un assistant IA local performant sur GPU --&gt;

&lt;p&gt;J’ai dû rédiger un CV pour un client potentiel ; c'était l’occasion de tester OpenClaw en local.&lt;/p&gt;
&lt;p&gt;Je voulais profiter de l’occasion pour tester des modèles plus puissants sur ma carte graphique Nvidia RTX 2070, avec 8 Go de RAM.&lt;/p&gt;
&lt;p&gt;À l'époque (oui oui, l'année dernière), elle faisait tourner vaillamment Llama 3.1 et Qwen3 en 8B.
Quand on a besoin de faire un résumé, de rédiger un document ou de faire tourner un chat,
il suffit d'un petit contexte de 4K qui tient facilement dans 8 Go de RAM.
Mais ça, c'était avant le vibe coding&lt;/p&gt;
&lt;p&gt;Est-ce qu'on peut faire tourner les agents OpenCode ou OpenClaw avec un LLM en local ?&lt;/p&gt;
&lt;h2&gt;Configuration de base d'Ollama avec Qwen3.5:2b&lt;/h2&gt;
&lt;p&gt;Je ne vous fais pas l'affront de faire un tuto sur l'installation d'Openclaw et d'Ollama.
Il y en a plein sur Internet, donc je pars du principe que vous y êtes arrivés sans souci.
Par contre je vais vous montrer ce que j'ai dû corriger.&lt;/p&gt;
&lt;p&gt;Contrairement à OpenCode, OpenClaw sait régler la taille du contexte des modèles sur Ollama.
D'ailleurs, il se moque pas mal de la taille de contexte par défaut d'Ollama
(ce que je vous ai montré &lt;a href="/vibe-coding-open-source-en-local-sur-un-ordinateur-portable-rock-robot.html"&gt;dans l'article précédent&lt;/a&gt;).
On le voit à la taille du contexte affichée par &lt;code&gt;ollama ps&lt;/code&gt; une fois qu’on lui pose une question :
c’est la taille maximale du modèle.&lt;/p&gt;
&lt;p&gt;Si vous voulez éviter de consommer toute la RAM de votre carte graphique,
éditez votre fichier &lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt; et modifiez la valeur de &lt;code&gt;contextWindow&lt;/code&gt; de votre modèle:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;models&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;providers&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;ollama&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;models&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;qwen3.5:2b&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;contextWindow&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;65536&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ici j'ai demandé un contexte de 65536 tokens.&lt;/p&gt;
&lt;p&gt;Donc pour commencer, j'ai utilisé Qwen3.5 en 2b avec 64K tokens. Ça tenait en mémoire sans trop de problèmes, c'était rapide.&lt;/p&gt;
&lt;p&gt;Honnêtement, ce modèle n'est pas bon.
Il fait des fautes de français et n'est pas très pertinent mais surtout il part facilement en cacahuète :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il boucle sur lui-même régulièrement ;&lt;/li&gt;
&lt;li&gt;Quand il lance des commandes qui échouent, il n'arrive pas vraiment à corriger les problèmes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J'ai donc essayé d'utiliser un meilleur modèle.&lt;/p&gt;
&lt;h2&gt;Tests avec Qwen3.5:4b&lt;/h2&gt;
&lt;p&gt;À l’époque, j’utilisais un modèle Qwen3 en 8b sans trop de problèmes, mais avec de grands contextes, ce n’est pas la peine d’y penser.
Mais est-ce que Qwen 3.5 est vraiment meilleur que Qwen 3 ?
Et est-ce que les améliorations permettent à un modèle 4B d’être aussi performant que le modèle 8B de la génération précédente ?&lt;/p&gt;
&lt;p&gt;Cet &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1rivckt/visualizing_all_qwen_35_vs_qwen_3_benchmarks/#lightbox"&gt;article&lt;/a&gt;
présente un graphique indiquant les performances en fonction des cas d'utilisation et des poids/génération des modèles  :
&lt;img alt="Graphique de comparaison entre les modèles Qwen3 et Qwen3" src="/images/2026-05-21_ollama-openclaw/qwen_comparison.png"&gt;&lt;/p&gt;
&lt;p&gt;Il ne parle pas de Qwen3:8b mais on peut voir deux choses sur le graphique :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pour un agent, le modèle 4B est 30% plus performant que le 2B ;&lt;/li&gt;
&lt;li&gt;Ce n'est pas trop la peine d'utiliser un grand contexte avec le 2B.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Donc j'ai essayé le modèle 4B en passant le contexte à 32K tokens.&lt;/p&gt;
&lt;p&gt;Ça tient en VRAM, c'est rapide, mais dès qu'il lance une commande qui plante et affiche un log d’erreur... le contexte déborde.
Si j'ai de la chance, la compression du contexte se lance automatiquement, sinon on est bon pour recommencer la session.
Ça devient rapidement inutilisable.&lt;/p&gt;
&lt;p&gt;Et là je me souviens que quelqu'un m'a parlé de TurboQuant 4 de Google qui compresse le KV Cache,
donc normalement on pourrait utiliser un contexte de 64K dans 8Go de RAM&lt;/p&gt;
&lt;h2&gt;Compression du KV Cache&lt;/h2&gt;
&lt;p&gt;Le KV Cache est une technologie qui réduit considérablement (de 5 à 10 fois) le temps de traitement,
mais cela se fait souvent au détriment de la consommation de mémoire.&lt;/p&gt;
&lt;p&gt;En fouinant dans les logs d'Ollama, on voit la décomposition de l'utilisation de la RAM par Ollama :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;offloading 32 repeating layers to GPU&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;offloading output layer to CPU&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;offloaded 32/33 layers to GPU&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;model weights&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CUDA0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;2.0 GiB&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;model weights&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CPU&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1.6 GiB&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;kv cache&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CUDA0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1.8 GiB&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;compute graph&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CUDA0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1.0 GiB&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;compute graph&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CPU&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;126.6 MiB&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;total memory&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;6.6 GiB&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ollama décompose ses besoins en RAM :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les poids (model weights) : le modèle en lui-même ;&lt;/li&gt;
&lt;li&gt;Le fameux KV Cache ;&lt;/li&gt;
&lt;li&gt;Le graphe de calculs (compute graph) : stocke les résultats intermédiaires et permet de faire des optimisations de calculs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Donc le KV Cache consomme pas mal de RAM et ça empire quand on augmente la taille du contexte.&lt;/p&gt;
&lt;p&gt;Donc j'ai cherché si Ollama (et surtout llama.cpp, qui fait l'inférence) pouvait utiliser &lt;a href="https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/"&gt;TurboQuant 4&lt;/a&gt; de Google.
Il y a un projet "&lt;a href="https://github.com/AtomicBot-ai/atomic-llama-cpp-turboquant"&gt;Atomic llama.cpp&lt;/a&gt;",
un fork de llama.cpp qui implémente l'algorithme, mais ce n’est pas utilisé par Ollama.&lt;/p&gt;
&lt;p&gt;Par contre, dans &lt;a href="https://github.com/ggml-org/llama.cpp/discussions/20969"&gt;cette discussion&lt;/a&gt; sur le projet GitHub de llama.cpp,
certains intervenants trouvent que ce n'est pas si intéressant par rapport aux algorithmes de compression déjà implémentés dans llama.cpp.
Donc, il existe déjà la possibilité de quantifier le KV Cache en 8 bits (&lt;code&gt;q8_0&lt;/code&gt;) pratiquement sans perdre en pertinence.
On peut aussi quantifier en 4 bits (&lt;code&gt;q4_0&lt;/code&gt;), mais les pertes sont plus marquées ;
en effet, les petits modèles seraient plus impactés que les grands.&lt;/p&gt;
&lt;p&gt;Ok donc on peut déjà utiliser la quantification du KV Cache (même si elle ne sera pas aussi efficace que TurboQuant)
mais qu’est-ce que ça représente réellement ?
Et bien, pour vous faire une idée, il y a pas mal de simulateurs de consommation de VRAM sur Internet.
Personnellement, je vous conseille &lt;a href="https://smcleod.net/vram-estimator/"&gt;celui-ci&lt;/a&gt; qui semble assez clair et complet.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture d'écran du simulateur de VRAM" src="/images/2026-05-21_ollama-openclaw/vram-simulator.png"&gt;&lt;/p&gt;
&lt;p&gt;En haut, vous pouvez mettre l’URL du modèle sur Hugging Face, mais vous pouvez, à la place, renseigner la taille du modèle, la quantification du modèle et la taille du contexte qui vous intéresse.&lt;/p&gt;
&lt;p&gt;Dans les graphiques du dessous, vous avez une ligne par quantification du KV Cache et sur cette ligne :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;À droite, la RAM consommée par le modèle, le KV Cache et le total ;&lt;/li&gt;
&lt;li&gt;En couleur foncée : la consommation des poids du modèle (vous voyez que le foncé est identique sur les 3 lignes) ;&lt;/li&gt;
&lt;li&gt;En couleur claire : la consommation du KV Cache quantifié (vous voyez que les barres diminuent en fonction de la quantification).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J'utilise le &lt;code&gt;q8_0&lt;/code&gt;, déjà que les petits modèles ne sont pas super pertinents, on va éviter la quantification &lt;code&gt;q4_0&lt;/code&gt;.
Et avec le &lt;code&gt;q8_0&lt;/code&gt; j'ai déjà pu doubler la quantité de contexte.&lt;/p&gt;
&lt;p&gt;Mais comment on fait dans Ollama ? C'est indiqué &lt;a href="https://docs.ollama.com/faq#how-can-i-set-the-quantization-type-for-the-k/v-cache"&gt;dans la doc&lt;/a&gt;.
Il suffit d'utiliser la variable d'environnement suivante quand on lance &lt;code&gt;ollama server&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;OLLAMA_KV_CACHE_TYPE=q8_0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Finalement, j'ai rapidement atteint la limite de 8 Go de RAM pour utiliser les 64K de tokens : j’ai quand même dû éteindre Firefox.&lt;/p&gt;
&lt;h2&gt;OpenClaw et Reaction Resume&lt;/h2&gt;
&lt;p&gt;Une fois que mon OpenClaw avait suffisamment de contexte, j’ai créé ma base de connaissances.
Ensuite je voulais qu’OpenClaw fasse la mise en page de mon CV tout seul.&lt;/p&gt;
&lt;p&gt;Pour ça, j’ai trouvé un programme open source : &lt;a href="https://github.com/amruthpillai/reactive-resume"&gt;Reactive Resume&lt;/a&gt;, également accessible en ligne sur &lt;a href="https://rxresu.me"&gt;le site https://rxresu.me&lt;/a&gt;.
C'est un site qui permet de créer son CV section par section, d'utiliser des templates de CV et de faire un peu de mise en page.
Il a un serveur MCP intégré et aussi un skill disponible pour les agents.&lt;/p&gt;
&lt;p&gt;Alors je ne sais pas si OpenClaw a du mal avec le MCP,
mais il n'arrivait pas à utiliser le serveur MCP quand je lui indiquais dans son fichier de configuration,
ni quand j'ai installé le skill &lt;code&gt;mcporter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;J'ai lu quelque part que les agents préfèrent les skills aux serveurs MCP, donc j'ai installé le skill &lt;code&gt;resume-builder&lt;/code&gt;
(écrit par l'équipe de Reactive Resume et, oui, je l'ai lu avant de l'installer).
L'approche du skill est intéressante ;
elle recommande à OpenClaw de créer un JSON selon un format disponible sur Internet et de faire une requête HTTP pour l'envoyer à Reactive Resume.
Cependant, de mémoire, les petits modèles ont du mal à générer un JSON qui respecte scrupuleusement un standard.
Je suis un peu sceptique.&lt;/p&gt;
&lt;p&gt;Mais à partir de là, OpenClaw n'arrivait même plus à lire un fichier ;
j’ai peut-être fait une erreur dans la configuration.
Le LLM n'arrivait plus à appeler ses &lt;code&gt;tools&lt;/code&gt;,
pourtant, ils apparaissent dans l'interface textuelle en lançant &lt;code&gt;/tools&lt;/code&gt;.
Donc je ne suis pas sûr que l'interface soit fiable.
Ça démontre un manque de rigueur dans la conception de l'outil.&lt;/p&gt;
&lt;p&gt;J’ai beaucoup appris sur OpenClaw, et je pense qu’un simple utilisateur ne pourrait pas s’en sortir.
Et je suis super emballé par le principe de déléguer des tâches à un agent.
Mais pour un logiciel qui a pas mal fait la hype ces derniers mois, je trouve que ce soft marche très mal.
La doc est très technique, mais elle manque cruellement d’explications de base sur le fonctionnement global.&lt;/p&gt;
&lt;p&gt;Pour être honnête, j'ai craqué et fait le CV à la main sur l'appli.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Avec du temps et de la patience, on peut utiliser une carte graphique avec seulement 8 Go de RAM avec des agents IA,
pour peu qu’on accepte de faire des compromis.&lt;/p&gt;
&lt;p&gt;En l’état, je ne peux pas recommander OpenClaw : soit il a des permissions trop larges et pourrait poser problème,
soit ses protections sont si strictes qu’il devient inutilisable.
La doc est obscure. Peut-être que j'étais dans un cas particulier, mais je n'ai pas l'impression d'être le seul à galérer.&lt;/p&gt;
&lt;p&gt;L'expérience avec OpenCode était bien plus agréable.&lt;/p&gt;
&lt;p&gt;J’ai commandé une carte AMD 9060 XT avec 16 Go de RAM. Et oui, j’ai envie de tester ce que fait la concurrence même si c’est pas très hype. Et Ollama a intégré un nouvel agent, Hermes. Je vous en dis plus la semaine prochaine.&lt;/p&gt;</content><category term="AI"/></entry><entry><title>Vibe coding Open Source en local sur un ordinateur portable - Rock Robot</title><link href="https://rockrobot.fr/vibe-coding-open-source-en-local-sur-un-ordinateur-portable-rock-robot.html" rel="alternate"/><published>2026-05-07T00:00:00+02:00</published><updated>2026-05-07T00:00:00+02:00</updated><author><name>Sébastien DA ROCHA</name></author><id>tag:rockrobot.fr,2026-05-07:/vibe-coding-open-source-en-local-sur-un-ordinateur-portable-rock-robot.html</id><summary type="html">&lt;p&gt;Vibe coding Open Source en local sur un ordinateur portable.&lt;/p&gt;
&lt;p&gt;Vu que mon expérience de la semaine dernière a épuisé mon quota de tokens sur Mammouth.ai, je voulais voir si je pouvais vibe coder en local sur de tous petits modèles avec un ordinateur portable doté d'une carte graphique …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Vibe coding Open Source en local sur un ordinateur portable.&lt;/p&gt;
&lt;p&gt;Vu que mon expérience de la semaine dernière a épuisé mon quota de tokens sur Mammouth.ai, je voulais voir si je pouvais vibe coder en local sur de tous petits modèles avec un ordinateur portable doté d'une carte graphique AMD intégrée au CPU (un 7430U pour les curieux). J'ai eu plusieurs soucis mais aussi de bonnes surprises.&lt;/p&gt;
&lt;p&gt;D'abord pour remplacer CUDA, j'installe l'équivalent de chez AMD : ROCm, qui a en plus le bon goût d'être Open Source. Ensuite j'installe Ollama, je cherche un petit modèle et je découvre Granite 4.1 avec 3 milliards de paramètres.&lt;/p&gt;
&lt;p&gt;Je n'ai jamais entendu parler de ce modèle d'IBM. Il peut appeler des tools donc on peut s'en servir avec un agent. Par contre il ne raisonne pas, ça risque de donner des problèmes de pertinence, on verra ce que ça donne.&lt;/p&gt;
&lt;p&gt;Je lance Open Code avec &lt;code&gt;ollama code --model granite4.1:3b&lt;/code&gt;. Et là je vois que le contexte est limité à 4k, c'est bien trop peu pour un agent : 128K c'est confortable mais ça fera trop de calculs pour mon petit portable, je vais essayer 32K qui est le minimum recommandé.&lt;/p&gt;
&lt;p&gt;Les logs de Ollama confirment que le modèle utilise 4096 tokens de contexte :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;INFO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;go&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1848&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;vram-based default context&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;total_vram&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;0 B&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;default_num_ctx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Il y a 3 façons d'augmenter la taille du contexte dans ollama :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l'application cliente peut le forcer lors de la requête en passant l'option num_ctx,&lt;/li&gt;
&lt;li&gt;on peut créer son propre modèle (en définissant un Modelfile, un peu comme Docker et ses Dockerfile). qui reprend le modèle de base et surcharge num_ctx,&lt;/li&gt;
&lt;li&gt;on peut rajouter la variable d'environnement &lt;code&gt;OLLAMA_CONTEXT_LENGTH=32768&lt;/code&gt; quand on lance &lt;code&gt;ollama serve&lt;/code&gt;,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J'aurais préféré le configurer depuis Open Code mais il ne gère pas ce paramètre donc je me rabats sur la dernière solution.&lt;/p&gt;
&lt;p&gt;Je relance Open Code et là tout est très lent. Puisque le contexte consommé dès le départ est d'environ 10k, je diminue la taille du contexte à 16384 tokens pour alléger un peu la RAM et les calculs.&lt;/p&gt;
&lt;p&gt;C'est mieux mais j'ai l'impression que c'est le CPU qui fait tout le calcul. Je vois ces lignes dans les logs :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;failure during GPU discovery&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OLLAMA_LIBRARY_PATH&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;[/usr/local/lib/ollama /usr/local/lib/ollama/rocm]&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;extra_envs&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;map[GGML_CUDA_INIT:1 ROCR_VISIBLE_DEVICES:0]&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;runner crashed&amp;quot;&lt;/span&gt;
&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;inference compute&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;library&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;compute&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;libdirs&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pci_id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;30.7 GiB&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;available&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;21.0 GiB&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Le GPU n'est pas trouvé. Ollama le confirme :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;ollama&lt;span class="w"&gt; &lt;/span&gt;ps
NAME&lt;span class="w"&gt;             &lt;/span&gt;ID&lt;span class="w"&gt;              &lt;/span&gt;SIZE&lt;span class="w"&gt;      &lt;/span&gt;PROCESSOR&lt;span class="w"&gt;    &lt;/span&gt;CONTEXT&lt;span class="w"&gt;    &lt;/span&gt;UNTIL
granite4.1:3b&lt;span class="w"&gt;    &lt;/span&gt;6fd349357287&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.4&lt;span class="w"&gt; &lt;/span&gt;GB&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;%&lt;span class="w"&gt; &lt;/span&gt;CPU&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="m"&gt;16384&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;minutes&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;now
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;De ce que j'ai vu sur Internet ROCm ne supporte que les cartes graphiques récentes, c'est à dire séparées du CPU.
Par contre llama.cpp, la bibliothèque utilisée par Ollama pour l'inférence, gère aussi l'accélération en utilisant Vulkan, mais c'est encore expérimental donc pour l'activer, il suffit d'ajouter la variable d'environnement &lt;code&gt;OLLAMA_VULKAN=1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un redémarrage du serveur plus tard, le modèle se charge bien dans le GPU.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;ollama&lt;span class="w"&gt; &lt;/span&gt;ps
NAME&lt;span class="w"&gt;             &lt;/span&gt;ID&lt;span class="w"&gt;              &lt;/span&gt;SIZE&lt;span class="w"&gt;      &lt;/span&gt;PROCESSOR&lt;span class="w"&gt;    &lt;/span&gt;CONTEXT&lt;span class="w"&gt;    &lt;/span&gt;UNTIL
granite4.1:3b&lt;span class="w"&gt;    &lt;/span&gt;6fd349357287&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;.6&lt;span class="w"&gt; &lt;/span&gt;GB&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;%&lt;span class="w"&gt; &lt;/span&gt;GPU&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="m"&gt;16384&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;minutes&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;now
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Là je vois bien dans &lt;code&gt;htop&lt;/code&gt; que le CPU n'est pas utilisé. Par contre &lt;code&gt;nvtop&lt;/code&gt; ne marche pas aussi bien que dans l'environnement Nvidia : il déclare que la RAM allouée est de 512Mo et il détecte une utilisation de 100% du GPU mais pas le process ollama. En utilisant le paquet snap de nvtop à la place du paquet Debian 13, la RAM est correctement affichée, mais toujours pas d'affichage du process ollama.&lt;/p&gt;
&lt;p&gt;Finalement si on discute avec le modèle en utilisant &lt;code&gt;ollama run granite4.1:3b&lt;/code&gt;, l'utilisation est fluide, donc on peut utiliser un petit modèle de langue en local pour chatter. Par contre pour l'utilisation de Open Code, le système est beaucoup trop lent (11 minutes pour lire un fichier de 4Ko, 4 minutes pour une question sur ce même texte) et le modèle est loin d'être pertinent. J'ai testé aussi le modèle Gemma4:e2b de Google, le système est devenu encore plus lent, c'était là aussi inutilisable.&lt;/p&gt;</content><category term="AI"/></entry><entry><title>Vibe coding avec Mammouth.ai pour une carte des LLM - Rock Robot</title><link href="https://rockrobot.fr/vibe-coding-avec-mammouthai-pour-une-carte-des-llm-rock-robot.html" rel="alternate"/><published>2026-05-01T00:00:00+02:00</published><updated>2026-05-01T00:00:00+02:00</updated><author><name>Sébastien DA ROCHA</name></author><id>tag:rockrobot.fr,2026-05-01:/vibe-coding-avec-mammouthai-pour-une-carte-des-llm-rock-robot.html</id><summary type="html">&lt;p&gt;Zut je dois faire mon article linkedin mais je suis chez la famille avec juste mon ordinateur portable. Je veux faire une carte qui présente différents modèles sur une carte.&lt;/p&gt;
&lt;p&gt;Le problème c'est que je n'ai pas de donnée... et que je ne sais pas emcore comment je vais intégrer …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Zut je dois faire mon article linkedin mais je suis chez la famille avec juste mon ordinateur portable. Je veux faire une carte qui présente différents modèles sur une carte.&lt;/p&gt;
&lt;p&gt;Le problème c'est que je n'ai pas de donnée... et que je ne sais pas emcore comment je vais intégrer ça dans une carte.&lt;/p&gt;
&lt;p&gt;Pour génerer des données, j'ai testé la fonction Recherche de Mistral.ai, on peut en faire jusau'à 5 par mois gratuitement, et, des fois, ça marche pas mal : c'est un
petit agent qui peut faire plein de recherches sur Internet et vous proposer une synthèse. Et c'est vraiment un agent : il lance autant de recherches qu'il a besoin.
Pas comme la fonction "recherche sur le web" qui fait une pauvre recherche.&lt;/p&gt;
&lt;p&gt;Donc notre petit Mistral nation arrive à me faire un Geojson pas trop mal, il arrive même à me placer les modèles sur la carte... mais le modèle a une cutoff en 2024 et du coup exit GLM, Kimi qui font le buzz cette année.&lt;/p&gt;
&lt;p&gt;Bon, finalement une petite requête csur chatgpt me donne un Geojson de depart un peu plus exploitable.&lt;/p&gt;
&lt;p&gt;Maitenant il reste à faire le viewer de carte. Je veux l'intégrer sur mon site mais je ne sais pas trop par quel bout le prendre.
C'est pas très grave, c'est l'occasion de tester les agent de code.&lt;/p&gt;
&lt;p&gt;Alors j'ai commencé à regarder Open Code plus Ollama mais là je suis chez la famille sur mon portable... donc pas de vrai carte graphique.
Je voulais voir ce qu'on peut utiliser sur une machine un peu standard. Donc on va commencer par un service SaaS&lt;/p&gt;
&lt;p&gt;Donc j'ai sortie mamouth.ai et son agent de code https://info.mammouth.ai/fr/docs/mammouth-code/ (c'est un fork d'OpenCode pour simplifier le déployement).&lt;/p&gt;
&lt;p&gt;J'ai voulu testé Qwen3.5 30B-A3B (oui le 3.6 est déjà sorti mais il n'est pas diponible sur mammouth.ai aujourd'hui),
 c'est un relativement gros modèle mais en mixture of expert donc il fait 10x de calcul pour un résultat similaire à du 30B.
J'aurais pu utiliser un modèle Claude de chez Anthropic, mais le but c'est de tester des solutions Open Source avant tout.&lt;/p&gt;
&lt;p&gt;Le coût : avec un abonnement starter mammouth inclus $2 d'appels à des API. On peut en acheter plus hein. Mais là le but c'est de tester le vibe coding.&lt;/p&gt;
&lt;p&gt;Donc au bout de mon quota de $2, j'ai un service qui marche mal,
le gros de la structure est faite certes mais la moitié de ce que j'ai demandé ne marche pas
et je n'ai plus de crédit parce que Qwen relançait en boucle la même opération.
Ce n'est pas très grave parce que Mammouth a détecté un problème en causant un rate limite.&lt;/p&gt;
&lt;p&gt;Mais quand même le petit agent a quand même bien dégrossi le travail, j'ai appris plein de trucs sur Pelican, le moteur de site statique que j'utilise.
L'interface ne marche pas mais elle est propre... bien plus propre que ce que j'aurais fait dans un premier jet.&lt;/p&gt;
&lt;p&gt;Alors mon impression : c'est pas mal pour dégrossir mais il faut être patient car c'est un peu lent et que ça va vite couter cher.&lt;/p&gt;</content><category term="AI"/></entry><entry><title>Comment choisir son modèle de langage Open Source - Rock Robot</title><link href="https://rockrobot.fr/comment-choisir-son-modele-de-langage-open-source-rock-robot.html" rel="alternate"/><published>2026-04-27T00:00:00+02:00</published><updated>2026-04-27T00:00:00+02:00</updated><author><name>Sébastien DA ROCHA</name></author><id>tag:rockrobot.fr,2026-04-27:/comment-choisir-son-modele-de-langage-open-source-rock-robot.html</id><summary type="html">&lt;p&gt;Capacités techniques (on peut trouver ces informations facilement):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Taille du modèle&lt;/strong&gt; : Le nombre de paramètres du modèle par exemple: 30B, 8B ou B signifie millards (Billion en anglais). Les modèles plus grands ont généralement une meilleure compréhension du langage et peuvent générer des réponses plus cohérentes et contextuellement appropriées. Cependant …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Capacités techniques (on peut trouver ces informations facilement):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Taille du modèle&lt;/strong&gt; : Le nombre de paramètres du modèle par exemple: 30B, 8B ou B signifie millards (Billion en anglais). Les modèles plus grands ont généralement une meilleure compréhension du langage et peuvent générer des réponses plus cohérentes et contextuellement appropriées. Cependant, ils nécessitent plus de mémoire (RAM) pour fonctionner. Le modèle de 30B sont bon mais il faut du matériel haut de gamme, les 8B sont un bon compromis pour les tâches pas trop exigentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mixture of experts&lt;/strong&gt; : Les modèles mixture of expert (MOE) prennent beaucoup de RAM mais sont plus rapides car seul une partie des paramètres est utilisé à chaque passe. C'est souvent un bon compromis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formats de données acceptés&lt;/strong&gt; : on parle de multi modale, certains modèles acceptent des images, très rarement on peut leur donner de l'audio ou des videos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quantification&lt;/strong&gt; : un même modèle peut être livré avec des tailles paramètres différents, par exemple l'encodage "q4" permet de diminuer la RAM nécéssaire par 4 mais en perdant un peu de pertinence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reflexion/réponse flash&lt;/strong&gt; : c'est la capacité à réfléchir et structurer sa réponse avant de répondre, ça améliore grandement la pertinence de la réponse au détriment de la vitesse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Utilisation d'outils&lt;/strong&gt; : la plupart des modèles récents sont capable d'appeler des fonctions, par exemple pour faire des recherches Internet, connaitre la date, envoyer des mails. C'est une fonctionnalité indispensable pour les agents IA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Taille de contexte&lt;/strong&gt; : C'est la quantité de données (souvent texte) que le modèle peut retenir (exprimé en token). Pour des agents, ils faut de modèles capables de retenir un maximum d'informations, 32K est un minimum. Je vous ferai un article dédié.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Capacités opérationneles (là il faut un peu de recherche):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt; : La capacité du modèle à accomplir des tâches spécifiques comme la génération de texte, la traduction, la réponse à des questions, etc. Les métriques de performance peuvent inclure la précision, la fluidité et la cohérence des réponses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Données d'entraînement&lt;/strong&gt; : La qualité et la diversité des données utilisées pour entraîner le modèle. Un modèle entraîné sur un large éventail de données sera généralement plus polyvalent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date de cutoff&lt;/strong&gt; : Date à laquelle on a arrété de moisonner les données d'entrainement, le modèle ne connaitra pas d'information passé cette date.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Licence&lt;/strong&gt; : Les conditions d'utilisation et de distribution du modèle. Certaines licences open source permettent une utilisation libre comme Apache, tandis que d'autres peuvent imposer des restrictions par exemple sur le nombre de clients de l'entreprise (Llama).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facilité d'utilisation&lt;/strong&gt; : La simplicité avec laquelle le modèle peut être intégré et utilisé dans des applications. Cela inclut la disponibilité sur des moteurs d'inférence (comme ollama).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coût et ressources nécessaires&lt;/strong&gt; : Les ressources informatiques nécessaires pour exécuter le modèle, y compris la mémoire, la puissance de calcul et le stockage. Les modèles plus grands peuvent nécessiter des ressources plus importantes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spécialisation&lt;/strong&gt; : Certains modèles sont spécialisés dans des domaines spécifiques (par exemple, la médecine, le droit) et peuvent être plus performants dans ces domaines que des modèles généralistes. On peut avoir des informations en s'interessant aux benchs existant. Je ferais prochainement un article sur les bench pertinent selon votre metier, suivez-moi pour ne pas le rater&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Biais&lt;/strong&gt; : Les modèles peuvent reproduire des stéréotypes sociaux et raciaux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filtres et modération&lt;/strong&gt; : certains modèles comme Grok sont connus pour ne pas avoir de filtres, on peut leur demander n'importe quoi.&lt;/li&gt;
&lt;/ul&gt;</content><category term="AI"/></entry><entry><title>Astuces</title><link href="https://rockrobot.fr/astuces.html" rel="alternate"/><published>2026-04-25T17:50:00+02:00</published><updated>2026-04-25T17:50:00+02:00</updated><author><name>Sébastien DA ROCHA</name></author><id>tag:rockrobot.fr,2026-04-25:/astuces.html</id><summary type="html">&lt;p&gt;Quelques lignes de commandes à garder sous le coude.&lt;/p&gt;
&lt;h2&gt;Générer une clé hexa de 16 caractères&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;openssl rand -hex 16
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Envoyer un flux audio sur un autre autre ordinateur en réseau&lt;/h2&gt;
&lt;p&gt;Sous Linux on peut facilement envoyer le flux audio d'un ordinateur (le client) sur un autre ordinateur qui dispose …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Quelques lignes de commandes à garder sous le coude.&lt;/p&gt;
&lt;h2&gt;Générer une clé hexa de 16 caractères&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;openssl rand -hex 16
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Envoyer un flux audio sur un autre autre ordinateur en réseau&lt;/h2&gt;
&lt;p&gt;Sous Linux on peut facilement envoyer le flux audio d'un ordinateur (le client) sur un autre ordinateur qui dispose d'un meilleur système de son.&lt;/p&gt;
&lt;p&gt;Par exemple chez moi, mon ampli est de l'autre côté de la pièce, j'ai branché dessus un Raspberry Pi 3 qui pilote aussi l'imprimante 3D.&lt;/p&gt;
&lt;p&gt;Il suffit de créer un tunnel audio entre les deux ordinateur avec Pulseaudio ou Pipewire.&lt;/p&gt;
&lt;p&gt;Sous Debian 13, même si c'est pipewire qui gère le son, il faut installer le paquet &lt;code&gt;pulseaudio-utils&lt;/code&gt; sur les deux ordinateurs :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo apt install pulseaudio-utils
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Sur le serveur, celui est branché à l'ampli, il faut faire :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;pactl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;load&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;native&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;protocol&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4656&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;listen&lt;/span&gt;&lt;span class="o"&gt;=&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IP_SERVER&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Où &lt;code&gt;&amp;lt;IP_SERVER&amp;gt;&lt;/code&gt; est l'IP du serveur (pas du client).&lt;/p&gt;
&lt;p&gt;Sur le client (là ou tourne le programme qui emet le flux audio) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;pactl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;load&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;tunnel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sink&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tcp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IP_SERVER&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4656&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Encore une fois où &lt;code&gt;&amp;lt;IP_SERVER&amp;gt;&lt;/code&gt; est l'IP du serveur (pas du client).&lt;/p&gt;</content><category term="Divers"/></entry></feed>