درس 3 — Faire tourner Gemma en local

Quantification et matériel nécessaire

6 دقائق قراءة

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Quantification et matériel nécessaire

Le calcul de base

Un modèle doit tenir en mémoire (la VRAM du GPU, ou la RAM pour un calcul sur processeur ou sur un Mac à mémoire unifiée). La taille des poids se calcule simplement :

meˊmoire des poids≈nombre de parameˋtres×octets par parameˋtre\text{mémoire des poids} \approx \text{nombre de paramètres} \times \text{octets par paramètre}

PrécisionOctets par paramètreGemma 4 31B (calcul brut)
BF16 (16 bits)231 × 2 = 62 Go
8 bits131 Go
4 bits0,515,5 Go

La documentation de Gemma donne des valeurs un peu plus élevées, car elle ajoute 20 % de marge, mais ne compte toujours que les poids :

ModèleBF168 bits (SFP8)4 bits (Q4_0)
Gemma 4 E2B11,4 Go5,7 Go2,9 Go
Gemma 4 E4B17,9 Go8,9 Go4,5 Go
Gemma 4 12B26,7 Go13,4 Go6,7 Go
Gemma 4 26B A4B57,7 Go28,8 Go14,4 Go
Gemma 4 31B69,9 Go34,9 Go17,5 Go

Source : ai.google.dev/gemma/docs/core, consultée le 2026-10-15.

Ce qui s'ajoute : le contexte

Pendant la génération, le modèle garde en mémoire une représentation de chaque token déjà lu : le cache KV (key/value cache). Sa taille grandit avec la longueur du contexte et avec le nombre de requêtes servies en parallèle. Pour quelques milliers de tokens, c'est modeste ; pour 128K tokens, cela peut représenter plusieurs gigaoctets. Ajoutez aussi le système d'exploitation et le logiciel de service.

flowchart LR
  P["Poids (selon la quantification)"] --> T["Mémoire totale nécessaire"]
  K["Cache KV (croît avec le contexte et le parallélisme)"] --> T
  S["Système + logiciel de service"] --> T

La quantification

Quantifier, c'est représenter chaque poids avec moins de bits : au lieu d'un nombre à virgule sur 16 bits, on stocke un entier sur 8 ou 4 bits et un facteur d'échelle par petit bloc de poids. On divise la mémoire par 2 ou par 4, et la génération va souvent plus vite (moins de données à lire), au prix d'une légère perte de qualité, plus marquée en 4 bits et sur les petits modèles.

Google publie aussi des versions QAT (quantization-aware training) : le modèle est entraîné en tenant compte de la quantification, ce qui limite la perte en 4 bits. Sur Hugging Face, elles portent qat dans leur nom (par exemple google/gemma-4-E2B-it-qat-q4_0-gguf).

Gemma 4 12B en 4 bits pèse environ 6,7 Go de poids. Votre portable a un GPU de 8 Go. Que faut-il anticiper ?

Le format GGUF

GGUF est le format de fichier de llama.cpp, repris par Ollama et LM Studio. Un seul fichier contient les poids quantifiés, le tokenizer et les métadonnées (architecture, gabarit de conversation). Le suffixe indique la quantification :

SuffixeBitsCommentaire
BF16, F1616pas de perte, le plus lourd
Q8_08perte quasi imperceptible
Q6_K, Q5_K_M6, 5compromis
Q4_K_M, Q4_04le choix le plus courant en local

Pour les modèles multimodaux, un second fichier mmproj-…gguf contient l'encodeur d'images.

Quel fichier choisir pour un premier essai de Gemma 4 E2B sur un portable de 8 Go de RAM sans GPU dédié ?

Exercice : dimensionner un serveur

Votre équipe veut servir Gemma 4 26B A4B à 10 utilisateurs simultanés, avec des contextes d'environ 8 000 tokens. Vous hésitez entre un GPU de 24 Go et un de 48 Go. Raisonnez en ordre de grandeur.

Voir la solution
  • Poids en 4 bits : environ 14,4 Go (documentation). En 8 bits : 28,8 Go, impossible sur 24 Go.
  • Sur 24 Go en 4 bits, il reste moins de 10 Go pour le cache KV de 10 conversations de 8 000 tokens et le logiciel : c'est possible avec un parallélisme réduit, mais serré.
  • Sur 48 Go, le 4 bits laisse une grande marge, et le 8 bits devient envisageable si la qualité l'exige.

La seule réponse fiable vient d'une mesure : lancez le serveur avec la configuration visée, puis observez la mémoire occupée (nvidia-smi, ou ollama ps qui indique la répartition GPU/CPU) sous une charge réaliste.

Résultat obtenu

Fichiers réellement publiés pour Gemma 4 E2B au format GGUF, lus le 2026-10-15 par l'API Hugging Face (/api/models/ggml-org/gemma-4-E2B-it-GGUF/tree/main) :

gemma-4-E2B-it-BF16.gguf         9.31 Go
gemma-4-E2B-it-Q8_0.gguf         4.97 Go
gemma-4-E2B-it-Q4_0.gguf         2.84 Go
mmproj-gemma-4-E2B-it-BF16.gguf  0.99 Go
mmproj-gemma-4-E2B-it-Q8_0.gguf  0.56 Go

Le rapport BF16 / Q4_0 est d'environ 3,3, et non 4 : les outils de conversion gardent en général certains tenseurs (par exemple la table d'embeddings) en plus haute précision, et chaque bloc 4 bits stocke aussi son facteur d'échelle.

Je sais faire

  • Calculer la mémoire des poids d'un modèle selon sa précision
  • Expliquer ce qu'est le cache KV et pourquoi il s'ajoute
  • Expliquer la quantification, QAT et lire un suffixe GGUF
  • Dimensionner une machine en ordre de grandeur, puis vérifier par la mesure
التالي