درس 7 — Comparer et déployer

Gemma contre Gemini : lire les résultats

6 دقائق قراءة

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

Gemma contre Gemini : lire les résultats

Lancer les mesures

terminal
# API Gemini : Gemma et Gemini avec la même clé
python bench.py --modeles gemma-4-26b-a4b-it,gemma-4-31b-it,gemini-3.5-flash

# Vertex AI : identifiants ADC, région europe-west1
gcloud auth application-default login
GOOGLE_CLOUD_PROJECT=mon-projet GOOGLE_CLOUD_LOCATION=europe-west1 \
  python bench.py --fournisseur vertex --modeles google/gemini-2.5-flash

# En local, avec Ollama (non exécuté ici : voir la note plus bas)
LLM_FOURNISSEUR=ollama python bench.py --modeles gemma4:e2b

Coût de la mesure : 15 requêtes courtes par modèle, soit 60 appels pour les quatre modèles.

Les résultats du 2026-10-15

ModèleAccèsScoreLatence médianeLatence max
gemma-4-26b-a4b-itAPI Gemini15/157,47 s11,55 s
gemma-4-31b-itAPI Gemini15/156,01 s8,18 s
gemini-3.5-flashAPI Gemini15/152,07 s3,57 s
google/gemini-2.5-flashVertex AI, europe-west115/150,8 s1,86 s
xychart-beta
  title "Latence médiane par modèle (s), 15 questions"
  x-axis ["gemma-4-26b-a4b", "gemma-4-31b", "gemini-3.5-flash", "gemini-2.5-flash (Vertex)"]
  y-axis "secondes" 0 --> 8
  bar [7.47, 6.01, 2.07, 0.8]

Ce que disent les chiffres

Qualité : égalité parfaite, donc aucune conclusion. Quand tous les modèles obtiennent 15/15, le banc est trop facile pour les départager : c'est un effet plafond. On a seulement appris que les quatre modèles savent traiter ce type de tâche simple dans le format demandé, ce qui est déjà utile (Gemma suffit pour cette classe de tâches).

Latence : un écart réel, mais à expliquer. Les modèles Gemma raisonnent avant de répondre (bloc <thought> retiré par le client) : la plupart du temps mesuré est consacré à ce raisonnement, alors que la réponse finale ne fait que quelques tokens (1 à 40 tokens de sortie comptés selon les questions). Gemini 2.5 Flash sur Vertex AI répond le plus vite dans cette mesure.

Les quatre modèles obtiennent 15/15. Quelle conclusion est correcte ?

Pourquoi la latence de Gemma via l'API Gemini ne prédit-elle pas sa latence sur votre serveur ?

Ce qu'il manque pour décider

QuestionMesure à ajouter
Lequel est le meilleur sur mes cas difficiles ?20 à 50 questions plus dures, tirées de vrais tickets anonymisés
Combien ça coûte ?tokens d'entrée et de sortie (raisonnement compris) × prix, ou coût horaire du GPU
Combien d'utilisateurs simultanés ?test de charge (requêtes en parallèle) sur l'infrastructure cible
La qualité tient-elle en 4 bits ?même banc sur Q8_0 puis Q4_0 en local

Exercice : casser le plafond

Ajoutez trois questions plus difficiles au jeu (avec leur règle de notation) et prédisez lesquelles séparent les modèles.

Voir la solution

Exemples qui demandent plusieurs étapes ou un piège :

files/questions.json (ajouts)
{"id": "q16", "categorie": "dates", "question": "Un contrat signé le 31 janvier 2026 se renouvelle tous les mois, le dernier jour du mois. Quelle est la 3e date de renouvellement ? Réponds au format AAAA-MM-JJ.", "type": "contient", "attendu": ["2026-04-30"]},
{"id": "q17", "categorie": "calcul", "question": "Un prix passe de 100 € à 120 € puis baisse de 20 %. Quel est le prix final ? Réponds par le nombre seul.", "type": "nombre", "attendu": 96},
{"id": "q18", "categorie": "lecture", "question": "Politique : « Les notes de frais doivent être déposées dans les 30 jours. » Une dépense du 1er mars déposée le 2 avril est-elle dans les délais ? Réponds par OUI ou NON.", "type": "contient", "attendu": ["NON"]}

(31 janvier → 28 février → 31 mars → 30 avril ; 120 × 0,8 = 96 ; du 1er mars au 2 avril, 32 jours.) Mettez à jour test_quinze_questions_bien_formees, qui vérifie qu'il y en a 15, et faites tourner le banc. Les questions à plusieurs étapes et à pièges de calendrier sont typiquement celles où les plus petits modèles décrochent : c'est à vérifier, pas à supposer.

Résultat obtenu

Sortie réelle de bench.py le 2026-10-15 (extraits) :

  gemma-4-26b-a4b-it     q01 OK  11.55 s  'Na'
  gemma-4-26b-a4b-it     q06 OK   7.47 s  '```json\n{\n  "nom": "Léa Martin",\n  "ville": "Nantes",\n  "mon'
  gemma-4-31b-it         q14 OK   5.79 s  "```sql\nSELECT COUNT(*) FROM commandes WHERE statut = 'annule"
  gemini-3.5-flash       q14 OK   2.29 s  "SELECT COUNT(*) FROM commandes WHERE statut = 'annulee';"

| Modèle | Score | Latence médiane | Latence max |
| --- | --- | --- | --- |
| gemma-4-26b-a4b-it | 15/15 | 7.47 s | 11.55 s |
| gemma-4-31b-it | 15/15 | 6.01 s | 8.18 s |
| gemini-3.5-flash | 15/15 | 2.07 s | 3.57 s |

  google/gemini-2.5-flash q11 OK   1.86 s  'NON.'
| google/gemini-2.5-flash | 15/15 | 0.8 s | 1.86 s |

Le détail complet de la première exécution est dans resultats_exemple.json. Non testé ici : Ollama, llama.cpp et LM Studio (non installés, et téléchargement de modèles de plus de 2 Go exclu sur la machine de test).

Je sais faire

  • Lancer le même banc sur l'API Gemini, Vertex AI et un serveur local
  • Reconnaître un effet plafond et en tirer la bonne conclusion
  • Expliquer d'où vient l'écart de latence et ce qu'il ne prédit pas
  • Lister les mesures qui manquent pour décider
التالي