{"id":558,"date":"2026-08-23T22:05:13","date_gmt":"2026-08-23T21:05:13","guid":{"rendered":"https:\/\/elcep.legtux.org\/?p=558"},"modified":"2026-08-23T22:05:13","modified_gmt":"2026-08-23T21:05:13","slug":"mon-royaume-pour-4-go-de-vram-faire-entrer-ollama-dans-le-gpu","status":"publish","type":"post","link":"https:\/\/elcep.legtux.org\/?p=558","title":{"rendered":"Mon royaume pour 4 Go de VRAM : faire entrer Ollama dans le GPU"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/xkcd.com\/303\/\"><img loading=\"lazy\" decoding=\"async\" width=\"413\" height=\"360\" src=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2026\/08\/image.png\" alt=\"\" class=\"wp-image-561\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2026\/08\/image.png 413w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2026\/08\/image-300x262.png 300w\" sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Dans un pr\u00e9c\u00e9dent billet, <a href=\"https:\/\/elcep.legtux.org\/?p=533\">\u00ab Mon royaume pour une IA en localhost \u00bb<\/a>, je racontais mes premiers pas avec Ollama. L\u2019enjeu \u00e9tait assez simple : si je dois confier des articles, des rapports ou des archives de recherche \u00e0 une intelligence artificielle, je pr\u00e9f\u00e8re que tout cela reste dans ma machine. Garder l\u2019IA dans sa bo\u00eete, donc, avec l\u2019espoir de conserver un peu de prise sur ce que je lui donne et sur ce qu\u2019elle en fait.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 ce stade, faire r\u00e9pondre un mod\u00e8le dans un terminal avait quelque chose de presque magique. Mais entre demander un r\u00e9sum\u00e9 de trois pages et faire analyser un v\u00e9ritable corpus de recherche, il y a un petit gouffre. C\u2019est dans ce gouffre que mon ordinateur et moi sommes tomb\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019histoire qui suit est donc un retour d\u2019exp\u00e9rience sur la mani\u00e8re dont j\u2019ai essay\u00e9 de faire travailler Ollama avec une petite carte graphique de portable. Ce n\u2019est pas un tutoriel universel : les r\u00e9glages d\u00e9pendent du mod\u00e8le, du GPU, de sa m\u00e9moire et de la taille des textes. C\u2019est plut\u00f4t un pense-b\u00eate document\u00e9 pour \u00e9viter de refaire, dans six mois, le m\u00eame chemin \u00e0 travers les journaux d\u2019erreurs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le contexte : 839 documents et une semaine de patience<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Je travaille sur les archives du projet <a href=\"https:\/\/www.santes-territoires.org\/\">Sant\u00e9 &amp; Territoires<\/a> au S\u00e9n\u00e9gal. Le corpus rassemble des comptes rendus, pr\u00e9sentations, termes de r\u00e9f\u00e9rence, tableaux, documents de travail et rapports produits autour des Living Labs de Mbane et de Keur Momar Sarr, pr\u00e8s du lac de Guiers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019objectif n\u2019\u00e9tait pas seulement de faire r\u00e9sumer les documents. Je voulais reconstruire une chronologie, retrouver les groupes impliqu\u00e9s, rep\u00e9rer les formes de participation, distinguer ce qui avait \u00e9t\u00e9 propos\u00e9 de ce qui avait r\u00e9ellement \u00e9t\u00e9 fait et suivre la mani\u00e8re dont la perspective \u00ab Une seule sant\u00e9 \u00bb avait \u00e9t\u00e9 progressivement prise en compte. Le tout en conservant, pour chaque codage, un extrait et un chemin vers le document source.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s extraction des textes, agr\u00e9gation des doublons et exclusion des images, vid\u00e9os et fichiers audio, il restait tout de m\u00eame 839 unit\u00e9s documentaires susceptibles de passer devant le LLM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u2019ai donc lanc\u00e9 mon script R, assez fier de moi, avec plusieurs <em>workers<\/em> pour les op\u00e9rations locales et Ollama pour le codage. Quelques heures plus tard, la barre de progression affichait quelque chose comme :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Codage LLM documents   16\/839 | \u00e9coul\u00e9 4h29m | ETA \u2248 231h22m<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le script annon\u00e7ait ensuite, avec un calme que je trouvais presque provocateur :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Timeout ou \u00e9chec pour D00010 chunk 4 (4000 caract\u00e8res) ;\nrepli en 2 sous-chunk(s) de 2500 caract\u00e8res au maximum.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le premier bloc attendait le timeout. Puis le script le d\u00e9coupait en deux et recommen\u00e7ait. Quand plusieurs requ\u00eates partaient en m\u00eame temps, elles se disputaient la m\u00e9moire disponible. \u00c0 ce rythme, l\u2019analyse ne ressemblait plus vraiment \u00e0 un gain de temps. Elle ressemblait plut\u00f4t \u00e0 une mani\u00e8re sophistiqu\u00e9e de transformer un ordinateur portable en radiateur et par ces temps de canicules, pas la meilleur id\u00e9e que j&rsquo;ai eu!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pas qu&rsquo;un probl\u00e8me de mod\u00e8le<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ma premi\u00e8re r\u00e9action a \u00e9t\u00e9 de chercher un mod\u00e8le plus petit. C\u2019est assez logique : un mod\u00e8le de 8 milliards de param\u00e8tres sera plus lourd qu\u2019un mod\u00e8le de 3 ou 4 milliards. Mais cela n\u2019expliquait pas compl\u00e8tement pourquoi des passages de quelques milliers de caract\u00e8res pouvaient immobiliser Ollama pendant plusieurs minutes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La machine poss\u00e8de deux processeurs graphiques :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Intel Corporation Meteor Lake-P &#91;Intel Arc Graphics]\nNVIDIA RTX 500 Ada Generation Laptop GPU<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La carte NVIDIA ne dispose que de 4 Go de VRAM. Ce n\u2019est pas \u00e9norme, mais un <code>llama3.2:latest<\/code> quantifi\u00e9 p\u00e8se environ 2 Go. Il devait donc \u00eatre possible d\u2019en faire quelque chose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La commande suivante confirmait d\u2019ailleurs qu\u2019Ollama voyait bien la carte :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvidia-smi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la liste des processus, <code>\/usr\/local\/bin\/ollama<\/code> occupait environ 666 Mio de m\u00e9moire vid\u00e9o. Mais cette information ne disait pas quelle part du mod\u00e8le \u00e9tait r\u00e9ellement ex\u00e9cut\u00e9e sur le GPU. Pour cela, il fallait demander directement \u00e0 Ollama :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama run llama3.2:latest \"R\u00e9ponds uniquement par OK\"\nollama ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Et l\u00e0, surprise :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAME               SIZE     PROCESSOR          CONTEXT\nllama3.2:latest    18 GB    71%\/29% CPU\/GPU    16384<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le mod\u00e8le t\u00e9l\u00e9charg\u00e9 faisait environ 2 Go, mais Ollama annon\u00e7ait une empreinte de 18 Go et ne pla\u00e7ait que 29 % du calcul sur le GPU. Le m\u00eame test avec <code>qwen3:4b-instruct<\/code> donnait encore moins :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qwen3:4b-instruct    18 GB    83%\/17% CPU\/GPU    16384<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le GPU \u00e9tait donc bien utilis\u00e9, mais comme une petite annexe du CPU. La majeure partie de l\u2019inf\u00e9rence se faisait toujours dans la m\u00e9moire centrale. Hors, j&rsquo;ai toujour entendu Th\u00e9o me parler de GPU dans <a href=\"https:\/\/theses.hal.science\/tel-04694904\/file\/144388_BAYET_2024_archivage.pdf\">sa th\u00e8se.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quatre contextes pour une seule petite carte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019indice principal \u00e9tait la valeur <code>CONTEXT 16384<\/code>. Ollama avait r\u00e9serv\u00e9 beaucoup plus de m\u00e9moire que n\u00e9cessaire. Le parall\u00e9lisme \u00e9tait ici particuli\u00e8rement co\u00fbteux : plusieurs requ\u00eates simultan\u00e9es signifient plusieurs contextes \u00e0 conserver en m\u00e9moire. Quatre contextes de 4 096 tokens donnent justement 16 384 tokens \u00e0 allouer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La documentation d\u2019<a href=\"https:\/\/docs.ollama.com\/faq\">Ollama<\/a> pr\u00e9cise que la m\u00e9moire n\u00e9cessaire augmente avec le produit :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OLLAMA_NUM_PARALLEL \u00d7 OLLAMA_CONTEXT_LENGTH<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sur une grosse carte, plusieurs requ\u00eates parall\u00e8les peuvent augmenter le d\u00e9bit. Sur 4 Go de VRAM, elles font surtout sortir le mod\u00e8le du GPU. Le paradoxe est assez joli : j\u2019avais demand\u00e9 plus de parall\u00e9lisme pour aller plus vite, et ce parall\u00e9lisme \u00e9tait pr\u00e9cis\u00e9ment ce qui ralentissait le calcul.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il fallait donc distinguer deux choses dans mon script :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>les op\u00e9rations de lecture, d\u2019extraction et de classement des fichiers, qui peuvent utiliser plusieurs c\u0153urs CPU ;<\/li>\n\n\n\n<li>les appels au mod\u00e8le, qui doivent rester s\u00e9quentiels tant que la m\u00e9moire du GPU est aussi contrainte.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dans R, je pouvais conserver dix travailleurs pour pr\u00e9parer les documents, mais il fallait imp\u00e9rativement revenir \u00e0 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--llm-workers 1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9gler Ollama plut\u00f4t que brutaliser R<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ollama fonctionne comme un service. Le script R lui envoie des requ\u00eates HTTP, mais c\u2019est Ollama qui d\u00e9cide o\u00f9 charger le mod\u00e8le, combien de contextes pr\u00e9parer et combien de temps le garder en m\u00e9moire. Il n\u2019y avait donc pas besoin d\u2019ajouter du code CUDA dans R. Il fallait r\u00e9gler le serveur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sous Linux, cela passe par une surcharge du service <code>systemd<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl edit ollama.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">J\u2019ai commenc\u00e9 avec cette configuration :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Service]\nEnvironment=\"OLLAMA_NUM_PARALLEL=1\"\nEnvironment=\"OLLAMA_MAX_LOADED_MODELS=1\"\nEnvironment=\"OLLAMA_CONTEXT_LENGTH=6144\"\nEnvironment=\"OLLAMA_KEEP_ALIVE=30m\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puis il faut recharger la configuration et red\u00e9marrer Ollama :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl restart ollama<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Les param\u00e8tres ont chacun un r\u00f4le assez simple :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>OLLAMA_NUM_PARALLEL=1<\/code> interdit \u00e0 un m\u00eame mod\u00e8le de pr\u00e9parer plusieurs requ\u00eates en parall\u00e8le ;<\/li>\n\n\n\n<li><code>OLLAMA_MAX_LOADED_MODELS=1<\/code> \u00e9vite que plusieurs mod\u00e8les se disputent les 4 Go de VRAM ;<\/li>\n\n\n\n<li><code>OLLAMA_CONTEXT_LENGTH<\/code> fixe la quantit\u00e9 maximale de texte et de r\u00e9ponse que le mod\u00e8le peut garder dans son contexte ;<\/li>\n\n\n\n<li><code>OLLAMA_KEEP_ALIVE=30m<\/code> \u00e9vite de recharger le mod\u00e8le entre deux documents, sans pour autant l\u2019immobiliser \u00e9ternellement dans la m\u00e9moire.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Avec un contexte de 6 144 tokens, <code>llama3.2:latest<\/code> tenait enti\u00e8rement sur le GPU. J\u2019ai ensuite tent\u00e9 8 192 tokens, parce que mon prompt contient \u00e0 la fois un codebook, un sch\u00e9ma JSON, des m\u00e9tadonn\u00e9es et plusieurs passages du document.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le r\u00e9sultat restait tr\u00e8s honorable :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAME               SIZE      PROCESSOR         CONTEXT\nllama3.2:latest    3.5 GB    9%\/91% CPU\/GPU    8192<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le mod\u00e8le \u00e9tait d\u00e9sormais ex\u00e9cut\u00e9 \u00e0 91 % sur le GPU, contre 29 % avant le r\u00e9glage. On \u00e9tait pass\u00e9 d\u2019une empreinte annonc\u00e9e de 18 Go \u00e0 3,5 Go.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gratter encore un peu de m\u00e9moire<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 8 192 tokens, la carte \u00e9tait juste \u00e0 la limite. Il restait une possibilit\u00e9 : r\u00e9duire la m\u00e9moire occup\u00e9e par le cache K\/V, c\u2019est-\u00e0-dire la m\u00e9moire dans laquelle le mod\u00e8le conserve les \u00e9l\u00e9ments du contexte d\u00e9j\u00e0 trait\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u2019ai donc ajout\u00e9 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Environment=\"OLLAMA_FLASH_ATTENTION=1\"\nEnvironment=\"OLLAMA_KV_CACHE_TYPE=q8_0\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La configuration compl\u00e8te devient :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Service]\nEnvironment=\"OLLAMA_NUM_PARALLEL=1\"\nEnvironment=\"OLLAMA_MAX_LOADED_MODELS=1\"\nEnvironment=\"OLLAMA_CONTEXT_LENGTH=8192\"\nEnvironment=\"OLLAMA_KEEP_ALIVE=30m\"\nEnvironment=\"OLLAMA_FLASH_ATTENTION=1\"\nEnvironment=\"OLLAMA_KV_CACHE_TYPE=q8_0\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Flash Attention permet de r\u00e9duire la consommation de m\u00e9moire lorsque le contexte augmente. La quantification <code>q8_0<\/code> utilise environ deux fois moins de m\u00e9moire que le cache <code>f16<\/code> par d\u00e9faut, avec une perte de pr\u00e9cision g\u00e9n\u00e9ralement faible. Il existe \u00e9galement un cache <code>q4_0<\/code>, encore plus compact, mais la perte devient plus sensible. Pour un travail de codage scientifique, je pr\u00e9f\u00e8re r\u00e9duire l\u00e9g\u00e8rement le contexte plut\u00f4t que comprimer davantage le cache.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il faut ici \u00e9viter une confusion : je n\u2019ai pas <em>fine-tun\u00e9<\/em> le mod\u00e8le au sens de l\u2019apprentissage automatique. Je n\u2019ai modifi\u00e9 ni ses poids ni son comportement appris. J\u2019ai plut\u00f4t ajust\u00e9 \u2014 <em>tun\u00e9<\/em>, si l\u2019on veut \u2014 son r\u00e9gime d\u2019inf\u00e9rence : nombre de requ\u00eates, taille du contexte, occupation de la m\u00e9moire et r\u00e9partition entre CPU et GPU.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Faire moins de requ\u00eates reste la meilleure optimisation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00eame correctement install\u00e9 sur le GPU, un LLM n\u2019a aucune raison de lire 839 documents de bout en bout si la majorit\u00e9 n\u2019est pas utile \u00e0 la question de recherche. Le r\u00e9glage mat\u00e9riel ne devait donc pas remplacer le travail m\u00e9thodologique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u2019ai repris le script R pour organiser l\u2019analyse en deux passes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re r\u00e9alise une pr\u00e9s\u00e9lection \u00e0 rappel \u00e9lev\u00e9. Elle lit le nom, le chemin et quelques passages de chaque document, puis d\u00e9cide s\u2019il peut documenter les Living Labs, la participation des parties prenantes ou la perspective \u00ab Une seule sant\u00e9 \u00bb. Les d\u00e9cisions sont export\u00e9es dans un fichier CSV et peuvent \u00eatre corrig\u00e9es manuellement.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rscript analyse_corpus_llama31_8b.R \\\n  --input \"ST_KB_destination\" \\\n  --output \"resultat_corpus_llama31\" \\\n  --model \"llama3.2:latest\" \\\n  --triage-model \"llama3.2:latest\" \\\n  --mode triage \\\n  --triage-batch-size 8 \\\n  --workers 10 \\\n  --llm-workers 1 \\\n  --api-timeout 300<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le fichier <code>00_triage_decisions.csv<\/code> poss\u00e8de une colonne <code>manual_selected<\/code>. Je peux y inscrire <code>TRUE<\/code> pour rep\u00eacher un document ou <code>FALSE<\/code> pour l\u2019\u00e9carter avant la seconde passe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La seconde passe ne lit plus n\u00e9cessairement toutes les pages. Elle pr\u00e9sente au mod\u00e8le le d\u00e9but, la fin et les passages les plus denses en termes li\u00e9s au terrain et aux cat\u00e9gories analytiques. Chaque observation doit rester associ\u00e9e \u00e0 un extrait et au chemin de sa source.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rscript analyse_corpus_llama31_8b.R \\\n  --input \"ST_KB_destination\" \\\n  --output \"resultat_corpus_llama31\" \\\n  --model \"llama3.2:latest\" \\\n  --triage-model \"llama3.2:latest\" \\\n  --mode full \\\n  --deep-reading targeted \\\n  --workers 10 \\\n  --llm-workers 1 \\\n  --api-timeout 300<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La machine travaille donc mieux, mais elle travaille surtout moins inutilement. C\u2019est probablement l\u2019optimisation la plus importante de toute cette histoire.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que j\u2019en retiens<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Faire fonctionner une IA en local ne consiste pas seulement \u00e0 t\u00e9l\u00e9charger un mod\u00e8le et \u00e0 lancer une commande. Entre le mod\u00e8le et la machine s\u2019installe tout un petit monde de param\u00e8tres : quantification, contexte, cache, parall\u00e9lisme, chargement des mod\u00e8les et partage entre CPU et GPU.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les valeurs par d\u00e9faut sont n\u00e9cessairement g\u00e9n\u00e9riques. Elles ne savent pas que mon ordinateur poss\u00e8de une RTX 500 Ada de seulement 4 Go, que je pr\u00e9f\u00e8re une requ\u00eate fiable \u00e0 quatre requ\u00eates concurrentes, ni que mon corpus contient des centaines de documents en fran\u00e7ais avec un sch\u00e9ma de codage assez lourd.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il faut donc reprendre la main sur l\u2019outil. Pas pour optimiser chaque seconde comme un nouvel ergonome de soi-m\u00eame, mais pour que la technique reste proportionn\u00e9e \u00e0 la machine et \u00e0 l\u2019usage. Dans mon cas, la frugalit\u00e9 ne consistait pas seulement \u00e0 choisir un petit mod\u00e8le. Elle consistait \u00e0 limiter le parall\u00e9lisme, choisir la taille de contexte utile, \u00e9carter les documents hors sujet et maintenir une possibilit\u00e9 de validation humaine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le mod\u00e8le est moins gros, les requ\u00eates sont moins nombreuses et le GPU est enfin devenu autre chose qu\u2019un petit t\u00e9moin lumineux dans <code>nvidia-smi<\/code>. Ce n\u2019est toujours pas le futur. Mais, cette fois, \u00e7a ressemble un peu plus \u00e0 un outil que je peux habiter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Et de la philo ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cette exp\u00e9rience prend alors un autre relief \u00e0 la lecture de G\u00fcnther Anders, mon h\u00e9ro. Le \u00ab r\u00eave des machines \u00bb n\u2019est pas celui de mieux servir les humains, mais celui d\u2019un monde enti\u00e8rement organis\u00e9 selon leur propre fonctionnement, dans lequel l\u2019homme finit par devenir un rouage de l\u2019appareil qu\u2019il a construit. Le d\u00e9calage prom\u00e9th\u00e9en appara\u00eet lorsque notre capacit\u00e9 \u00e0 produire de tels dispositifs d\u00e9passe notre capacit\u00e9 \u00e0 nous les repr\u00e9senter, \u00e0 les ma\u00eetriser et \u00e0 d\u00e9cider collectivement de leurs usages. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 une \u00e9chelle \u00e9videmment bien modeste, mon premier r\u00e9flexe avait pr\u00e9cis\u00e9ment consist\u00e9 \u00e0 adapter mon travail aux exigences d\u2019Ollama : multiplier les traitements, d\u00e9couper les documents, attendre des centaines d\u2019heures et laisser la machine imposer son rythme \u00e0 l\u2019enqu\u00eate. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Param\u00e9trer le mod\u00e8le, limiter les requ\u00eates et s\u00e9lectionner les textes pertinents pourrait peut \u00eatre revenir \u00e0 inverser cette relation : faire entrer la machine dans les contraintes de la recherche, plut\u00f4t que transformer le chercheur \u2014 et son corpus \u2014 en simples rouages de la machine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quelques commandes \u00e0 garder sous le coude<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Identifier les cartes graphiques :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lspci | grep -Ei \"VGA|3D|Display\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Surveiller la carte NVIDIA :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>watch -n 1 nvidia-smi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00e9rifier o\u00f9 Ollama a charg\u00e9 le mod\u00e8le :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Afficher la configuration transmise au service :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl show ollama --property=Environment<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Arr\u00eater un mod\u00e8le et lib\u00e9rer sa m\u00e9moire :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ollama stop llama3.2:latest<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Quelques r\u00e9f\u00e9rences<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/elcep.legtux.org\/?p=533\">Mon royaume pour une IA en localhost<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.ollama.com\/gpu\">Ollama \u2014 prise en charge des GPU<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.ollama.com\/faq\">Ollama \u2014 contexte, parall\u00e9lisme, Flash Attention et cache K\/V<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.ollama.com\/context-length\">Ollama \u2014 longueur du contexte<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/ollama.com\/library\/llama3.2\/tags\">Llama 3.2 dans la biblioth\u00e8que Ollama<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dans un pr\u00e9c\u00e9dent billet, \u00ab Mon royaume pour une IA en localhost \u00bb, je racontais mes premiers pas avec Ollama. L\u2019enjeu \u00e9tait assez simple : si je dois confier des articles, des rapports ou des archives de recherche \u00e0 une intelligence artificielle, je pr\u00e9f\u00e8re que tout cela reste dans ma machine. Garder l\u2019IA dans sa &hellip; <a href=\"https:\/\/elcep.legtux.org\/?p=558\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Mon royaume pour 4 Go de VRAM : faire entrer Ollama dans le GPU<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":561,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[12,83,5],"class_list":["post-558","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geekeries","tag-linux","tag-ollama","tag-r"],"_links":{"self":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=558"}],"version-history":[{"count":4,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/558\/revisions"}],"predecessor-version":[{"id":563,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/558\/revisions\/563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/media\/561"}],"wp:attachment":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}