Gemma 4 ne rentrait pas dans mon GPU — jusqu'à ce que je supprime ce qu'il n'utilisait pas

Hier, je vous présentais les modèles Gemma 4 de Google. Des modèles impressionnants, sortis le 3 avril 2026 sous licence Apache 2.0, avec un système de raisonnement intégré et une architecture multimodale texte + image.

Le problème : ils étaient trop gros pour mon GPU.

Le modèle E4B (le plus intéressant pour l'analyse en profondeur) demandait 9,8 Go de VRAM. Mon GPU n'en a que 6.

Du coup, j'ai trouvé une parade. En les passant en text-only, ils rentrent dans 6 Go — et en bonus, leurs performances explosent.


Avant de continuer de lire la suite de l'article, je vous invite à vous inscrire à ma newsletter, pour connaître en avant première les futurs sujets traités chaque semaine.


Le problème : 3 modèles dans 6 Go, c'est serré

Mon infrastructure d'IA locale — que je décrivais dans mon article sur Ollama comme mon « 286 à moi » — tourne avec 3 modèles Ollama chargés en permanence :

Modèle Rôle VRAM
bge-m3:q8_0 Embedding (recherche sémantique) 655 Mo
qwen2.5-coder:0.5b Génération rapide (résumés, formatage) 720 Mo
qwen3:4b Raisonnement (analyse, scoring) 3 298 Mo

Total : 4 673 Mo sur 6 000 Mo disponibles. Il reste 1 327 Mo de marge.

Quand j'ai voulu intégrer Gemma 4 pour remplacer qwen3 sur certaines tâches d'analyse profonde, le mur était immédiat :

  • gemma4:e2b (le petit) : 2 800 Mo — possible en déchargeant d'autres modèles, mais ça casse le pipeline
  • gemma4:e4b (le puissant) : 9 830 Mo — littéralement impossible, il dépasse à lui seul la VRAM totale

Chaque appel au modèle E4B nécessitait de décharger l'embedding, ce qui interrompait la recherche sémantique pendant 2 à 5 secondes. Inacceptable en production, même pour des tâches asynchrones. J'avais déjà documenté ces contraintes lors de l'audit de performance de mon PC.


La découverte : 50 % de la VRAM servait à voir des images

Gemma 4, comme beaucoup de modèles récents (LLaVA, Qwen2-VL, Phi-3-vision), est un VLM — un modèle vision-langage. Il embarque un composant appelé mmproj (multimodal projector) : un encodeur d'images qui traduit les pixels en tokens compréhensibles par le transformer.

Ce composant pèse lourd :

Composant VRAM estimée Utilité pour du texte pur
Transformer (couches texte) ~60 % Essentiel
KV cache (mémoire contextuelle) ~25 % Essentiel
mmproj (encodeur vision) ~15-30 % Aucune

Dans mon cas d'usage — analyse de confiance, scoring de qualité, classification de tâches — aucune image n'est jamais envoyée au modèle. Le composant vision est du poids mort.

C'est comme acheter un SUV pour faire des courses en ville : vous payez le poids du châssis renforcé et de la garde au sol sans jamais quitter le bitume.


La solution : créer des variants text-only

Étape 1 — trouver les bons fichiers GGUF

Les modèles Ollama officiels (gemma4:e2b, gemma4:e4b) incluent systématiquement le composant vision. Pour s'en débarrasser, il faut partir de fichiers GGUF « text-only » — des versions du modèle repackagées sans le multimodal projector.

Plusieurs packagers sur Hugging Face proposent ces variants. Les fichiers GGUF text-only sont identifiables par la mention "text" dans leur nom : gemma-4-9b-text-Q4_K_M.gguf au lieu de gemma-4-9b-it-Q4_K_M.gguf.

La quantization Q4_K_M (4 bits, K-Quant Medium) est le sweet spot pour les modèles de 2B à 9B paramètres : elle réduit la taille de ~55 % avec une perte de qualité inférieure à 4 %.

Étape 2 — importer dans Ollama

# Télécharger le GGUF text-only depuis Hugging Face
wget "https://huggingface.co/bartowski/gemma-4-9b-text-GGUF/resolve/main/gemma-4-9b-text-Q4_K_M.gguf"

# Créer le modèle dans Ollama
ollama create gemma4-e4b-q4km-text --from ./gemma-4-9b-text-Q4_K_M.gguf

Étape 3 — contraindre le contexte pour économiser encore plus

Le KV cache (la mémoire qui stocke l'historique de conversation) est proportionnel à la taille du contexte. Gemma 4 supporte jusqu'à 128K tokens de contexte — mais pour des tâches de scoring et de classification, 4 096 tokens suffisent largement.

FROM gemma4-e4b-q4km-text

# Réduire le contexte de 32k à 4k → -87 % de KV cache
PARAMETER num_ctx 4096

# Paramètres officiels Gemma 4
PARAMETER temperature 1.0
PARAMETER top_p 0.95
PARAMETER top_k 64

Cette seule ligne num_ctx 4096 récupère environ 3 400 Mo de VRAM. C'est la décision la plus impactante de tout le processus — un principe d'optimisation de tokens appliqué au niveau matériel.

ollama create gemma4-e4b-q4km-text-4k -f Modelfile

Les résultats : c'est spectaculaire

VRAM : ça rentre (enfin)

Modèle VRAM avant VRAM après Variation
E2B multimodal → text-only 2 800 Mo 4 030 Mo* Mesure corrigée
E4B multimodal → text-only + ctx 4k 9 830 Mo 6 364 Mo -35 %

*La mesure initiale du E2B multimodal était sous-estimée (mode CPU offload partiel). En mode pure GPU, la mesure est plus fiable.

Le E4B text-only à 6 364 Mo ne cohabite toujours pas avec bge-m3 (655 Mo) simultanément. Mais avec une stratégie de chargement/déchargement séquentiel (500 ms d'overhead), c'est exploitable — surtout pour des tâches asynchrones qui tournent quand personne n'est devant l'écran.

Vitesse : +75 % de tokens par seconde

Modèle TPS avant TPS après Gain
E2B 35,2 61,5 +75 %
E4B 24,6 38,3 +56 %

L'accélération vient de deux facteurs :
1. Le GPU ne charge plus l'encodeur vision — la bande passante mémoire est intégralement dédiée au texte
2. Le KV cache réduit (pour E4B) — moins d'accès mémoire à chaque token généré

61,5 tokens par seconde sur un modèle 2B, c'est une réponse de 200 mots en moins de 2 secondes. Sur un GPU grand public.

Qualité : aussi bon, voire mieux

C'est le résultat le plus surprenant. La suppression du composant vision n'a pas dégradé la qualité — elle l'a légèrement améliorée :

Variant Précision Brier score Verdict
gemma4:e4b (multimodal) 95 % 0,046 Calibré
gemma4-e4b-q4km-text-4k ~95 % 0,041 Légèrement meilleur

Le Brier score mesure la calibration de confiance : est-ce que le modèle sait dire « je ne suis pas sûr » quand il devrait ? Un score de 0,041 signifie que ses déclarations de confiance sont presque parfaitement alignées avec sa précision réelle.

L'hypothèse : en supprimant le mmproj, on libère de la capacité de représentation interne pour les tâches textuelles. Le modèle concentre toute sa puissance sur ce qu'on lui demande réellement.


Validation : le modèle résiste-t-il aux pièges ?

Un bon score sur des questions faciles ne prouve rien. J'ai donc lancé un probe adversarial avec 10 questions stratégiques, dont 3 questions pièges conçues pour tromper le modèle :

Type de piège Question Réaction du modèle
Fausse prémisse « Quel prix Nobel Einstein a-t-il reçu pour la relativité ? » Corrige la prémisse (effet photoélectrique), confiance 100 %
Futur incertain « Cours de l'action NVIDIA au Q3 2026 ? » Confiance basse — le modèle sait qu'il ne sait pas
Hors domaine « Traduction en tzeltal de 'je suis heureux' » Confiance basse — refuse de deviner

Confiance moyenne sur les pièges : 46,7 % — exactement ce qu'on attend d'un modèle bien calibré.

Ce comportement est critique pour un système de routing automatique : quand le modèle doute, il escalade vers un modèle plus puissant (Claude Haiku) au lieu de répondre n'importe quoi. C'est exactement le type de surveillance que j'ai mis en place sur mes agents IA.


L'architecture finale : une cascade de précision

Le text-only E4B s'intègre dans une cascade de décision à 3 niveaux :

Question entrante
       │
       ▼
[gemma4-e2b-text] — Analyse initiale rapide (~40 ms)
       │
       ├── Confiance ≥ 92 % → Réponse validée ✓
       │
       └── Confiance < 92 % → Escalade
              │
              ▼
       [gemma4-e4b-text-4k] — Analyse approfondie (~80 ms)
              │
              ├── Confiance ≥ 92 % → Réponse validée ✓
              │
              └── Confiance < 92 % → Escalade vers Claude

Le E2B filtre le volume (questions simples), le E4B traite les cas ambigus, et Claude Haiku prend le relais pour les situations vraiment incertaines.

Coût total de cette cascade : 0 € pour les deux premiers niveaux (modèles locaux) + quelques centimes par jour pour les escalades vers Claude. L'ensemble est observé par 920 appels de métriques quotidiens.


Ce que ça change concrètement

Avant (multimodal) Après (text-only)
E4B inutilisable sur GPU 6 Go E4B opérationnel avec 6 364 Mo
24,6 tokens/s (E4B) 38,3 tokens/s (+56 %)
Pipeline d'embedding interrompu à chaque appel Interruption limitée à 500 ms
Composant vision chargé pour rien VRAM intégralement dédiée au texte
Brier 0,046 Brier 0,041 (meilleure calibration)

Le guide en 5 minutes pour reproduire ça chez vous

Prérequis : Ollama 0.20+, un GPU avec au moins 6 Go de VRAM (NVIDIA, AMD ou Apple Silicon).

# 1. Télécharger le GGUF text-only
wget "https://huggingface.co/bartowski/gemma-4-9b-text-GGUF/resolve/main/\
gemma-4-9b-text-Q4_K_M.gguf" -O gemma4-text.gguf

# 2. Créer le modèle de base
ollama create gemma4-e4b-text --from gemma4-text.gguf

# 3. Créer un Modelfile avec contexte réduit
cat > Modelfile << 'EOF'
FROM gemma4-e4b-text
PARAMETER num_ctx 4096
PARAMETER temperature 1.0
PARAMETER top_p 0.95
PARAMETER top_k 64
EOF

# 4. Créer le variant optimisé
ollama create gemma4-e4b-text-4k -f Modelfile

# 5. Tester
ollama run gemma4-e4b-text-4k "Explique le principe de moindre action en physique."

Si vous n'avez besoin que du modèle 2B (plus rapide, suffisant pour du triage) :

wget "https://huggingface.co/bartowski/gemma-4-2b-text-GGUF/resolve/main/\
gemma-4-2b-text-Q4_K_M.gguf" -O gemma4-e2b-text.gguf
ollama create gemma4-e2b-text --from gemma4-e2b-text.gguf

Les leçons à retenir

1. Les modèles multimodaux ne sont pas toujours le bon choix. Si vous ne traitez que du texte, vous payez un surcoût VRAM permanent pour une fonctionnalité inutilisée. La tendance à tout rendre multimodal crée un gaspillage silencieux sur les GPU contraints.

2. Le contexte est le premier levier d'optimisation VRAM. Passer de 32K à 4K tokens de contexte a économisé plus de VRAM que la suppression du composant vision. Si vos tâches n'ont pas besoin d'un long historique, réduisez num_ctx en priorité.

3. Q4_K_M est le sweet spot. La quantization Q3 (3 bits) détruit la qualité (33 % de score dans mes tests). Q4_K_M offre le meilleur compromis taille/qualité pour les modèles 2B à 9B.

4. La calibration de confiance est plus importante que la précision brute. Un modèle qui dit « je ne sais pas » quand il ne sait pas est plus utile qu'un modèle qui répond toujours avec 100 % de confiance — même s'il a raison plus souvent.

5. L'IA locale viable, c'est maintenant. Avec un GPU à 200 € et des modèles open source sous Apache 2.0, on fait tourner une cascade d'analyse à 3 niveaux sans serveur cloud, sans abonnement, sans latence réseau.


Pour aller plus loin

Est-ce que vous avez déjà tenté de faire tourner des LLM en local sur un GPU contraint ? Dites-moi en commentaire quel modèle vous avez réussi (ou pas) à caser dans votre VRAM.


Retrouvez mes articles précédents :
- Mon 286 à moi, c'est Ollama — pourquoi et comment j'ai monté mon stack LLM local
- L'IA locale m'a révélé les failles cachées de mon PC — audit performance GPU/CPU
- 920 appels LLM par jour à votre insu — l'architecture d'observabilité complète
- Quand vos agents IA oublient les consignes — la surveillance des agents autonomes

Qui suis-je ?

Je suis Mathieu GRENIER, CTO d'Easystrat une startup de Montpellier, en France. Je manage une équipe d'une dizaine d'ingénieurs (Graphistes, IA, frontend, backend, devOps, AWS) en remote depuis le Japon.

J'ai aussi mon activité de freelance, où je conseille des entrepreneurs dans leurs projets d'application.

Avec mon expérience personnelle de plus de 15 ans en ESN, j'ai pu travailler pour un large panel d'entreprises de différentes tailles. Ma compréhension des problèmes métiers est une de mes grandes forces et permet à mes clients de pouvoir se projeter plus facilement.

L'essentiel de mon travail consiste à canaliser l'énergie des entrepreneurs sur l'essence même de leur projet.

La technologie, les méthodes, le management sont le cœur de mes compétences.

Vous pouvez me faire confiance sur ces points là.

Si vous voulez me parler d'un de vos projets, n'hésitez pas à m'envoyer un email avec vos disponibilités à : contact@mathieugrenier.fr

Tous les articles de ce blog sont écrits par moi, même si je peux m'aider de l'IA pour illustrer mes propos. Mais jamais je ne fournis d'articles 100 % IA.

Mathieu Grenier 8 avril 2026
Partager cet articlE