Benchmark CPU · Petits modèles IA

11
Modèles
137
Tests
11
Tests/modèle

🏆 Podium — Classement global

Score = Ø Qualité × Ø Vitesse, pondéré par le français (+⅓). Le podium récompense les modèles offrant le meilleur équilibre qualité/vitesse/français.

🥈
llama3.2:3b
Q:6.4 × V:5.9 × FR:7.5
40.6
🥇
gemma3:4b
Q:6.0 × V:8.2 × FR:6.3
48.6
🥉
llama3.1:8b
Q:6.0 × V:5.5 × FR:7.7
34.6
#ModèleQualitéVitesseFrançaisScore
🥇gemma3:4b4.9/108.2 tok/s6.3/1048.6
🥈llama3.2:3b5.5/105.9 tok/s7.5/1040.6
🥉qwen3:4b3.8/108.2 tok/s3.3/1034.6
4llama3.1:8b4.8/105.5 tok/s7.7/1033.2
5phi4-mini4.7/105.4 tok/s6.9/1031.2
6qwen2.5-coder:7b4.6/105.3 tok/s7.1/1030.1
7qwen3:8b4.9/105.0 tok/s5.5/1029.0
8mistral:7b5.6/103.4 tok/s7.5/1023.8
9qwen3.5-4b3.3/104.7 tok/s3.5/1017.3
10qwen3.5-4b-mtp3.3/104.3 tok/s3.5/1015.8
11deepseek-r1:7b3.5/101.8 tok/s3.4/107.0

Classement général

Coq Français Taille
# Modèle Taille Ø tok/s Efficacité Français Coq Verdict
* Score français inclut les tokens de réflexion (CoT/Thinking Process) en anglais. Les modèles Qwen3 et DeepSeek-R1 ont un CoT intégré dans leurs poids : impossible à désactiver.

Débit moyen

Vert = réponse coq correcte · Gris = échoue au test coq

Score français

* Qwen3 et DeepSeek pénalisés par le CoT intégré en anglais

Efficacité (tok/s/Go)

Ratio performance/taille. Plus haut = meilleur rendement.

Score combiné

tok/s × français/10 — pondère vitesse et qualité française

🏅 Podiums par domaine — Qualité des réponses

Top 3 des modèles par justesse et qualité de réponse dans chaque catégorie de test. Score /10 basé sur : justesse, français, complétude.

Raisonnement (coq)

🥇
gemma3 4b
10.0/10
🥈
qwen3 8b
10.0/10
🥉
llama3.2 3b
2.0/10

Code (palindrome)

🥇
llama3.1 8b
9.0/10
🥈
qwen2.5-coder 7b
9.0/10
🥉
gemma3 4b
7.0/10

Grammaire

🥇
llama3.2 3b
7.0/10
🥈
mistral 7b
7.0/10
🥉
phi4-mini
5.0/10

Traduction

🥇
mistral 7b
7.0/10
🥈
gemma3 4b
5.0/10
🥉
llama3.2 3b
5.0/10

Latence (hello)

🥇
mistral 7b
7.0/10
🥈
llama3.1 8b
5.0/10
🥉
qwen2.5-coder 7b
5.0/10

Analyse code

🥇
llama3.2 3b
8.0/10
🥈
phi4-mini
8.0/10
🥉
gemma3 4b
4.0/10

Résumé long

🥇
llama3.2 3b
6.0/10
🥈
mistral 7b
6.0/10
🥉
qwen3 8b
5.0/10

Analyse logs

🥇
llama3.2 3b
6.0/10
🥈
qwen3 4b
6.0/10
🥉
mistral 7b
6.0/10

Rédaction article

🥇
llama3.2 3b
7.0/10
🥈
qwen3 8b
7.0/10
🥉
gemma3 4b
5.0/10

Latence pure

🥇
llama3.1 8b
8.0/10
🥈
qwen2.5-coder 7b
8.0/10
🥉
gemma3 4b
3.0/10

Raisonnement (docker)

🥇
mistral 7b
8.0/10
🥈
gemma3 4b
6.0/10
🥉
llama3.2 3b
6.0/10

Analyse par domaine

Débit par catégorie (tok/s)

Débit moyen (tok/s) et qualité des réponses par catégorie de test. Les valeurs en vert indiquent le meilleur score de la colonne.

Catégoriegemma3
4b
llama3.2
3b
qwen3
4b
llama3.1
8b
mistral
7b
phi4-miniqwen2.5-coder
7b
qwen3
8b
qwen3.5-4bqwen3.5-4b-mtpdeepseek-r1
7b
Raisonnement (coq)2.01.35.10.81.31.31.03.14.34.03.7
Code (palindrome)10.54.58.96.52.94.87.26.04.63.71.2
Grammaire10.37.19.66.82.67.82.56.04.64.01.4
Traduction10.27.710.04.83.57.95.25.05.64.10.8
Latence (hello)4.43.59.16.34.12.75.85.45.23.90.2
Analyse code10.111.18.76.95.38.05.75.47.06.36.1
Résumé long10.35.18.54.23.96.26.54.94.54.11.9
Analyse logs10.55.79.06.13.07.96.14.64.34.40.2
Rédaction article9.98.68.46.83.95.17.35.83.94.7
Latence pure2.63.63.84.93.00.75.83.12.42.61.1
Raisonnement (docker)9.57.28.76.53.97.45.66.24.85.01.7
Ø tok/s8.25.98.25.53.45.45.35.04.74.31.8
— = données non disponibles. Vert = meilleur score de la colonne.

Qualité par catégorie (/10)

Catégoriegemma3
4b
llama3.2
3b
qwen3
4b
llama3.1
8b
mistral
7b
phi4-miniqwen2.5-coder
7b
qwen3
8b
qwen3.5-4bqwen3.5-4b-mtpdeepseek-r1
7b
Raisonnement (coq)10.02.02.02.02.02.02.010.02.02.02.0
Code (palindrome)7.07.05.09.07.07.09.07.03.03.07.0
Grammaire3.07.03.03.07.05.03.03.03.03.03.0
Traduction5.05.03.05.07.03.05.05.03.03.03.0
Latence (hello)3.03.03.05.07.03.05.03.03.03.03.0
Analyse code4.08.04.03.04.08.03.03.04.04.03.0
Résumé long4.06.04.03.06.04.03.05.04.04.04.0
Analyse logs4.06.06.05.06.06.05.03.04.04.03.0
Rédaction article5.07.03.05.05.05.05.07.03.03.03.0
Latence pure3.03.03.08.03.03.08.03.03.03.03.0
Raisonnement (docker)6.06.06.05.08.06.03.05.04.04.04.0
Ø Qualité4.95.53.84.85.64.74.64.93.33.33.5
Score /10 basé sur : justesse de la réponse, qualité du français, complétude. Vert = meilleur score de la colonne.

Qualité des réponses par domaine

Cliquez sur chaque domaine pour voir la réponse complète de chaque modèle.

Raisonnement (coq) — piège logique

Question : « Un coq pond un œuf sur un toit penché. De quel côté tombe ? » — Attend : un coq ne pond pas.

ModèleRésultatRéponse
gemma3:4bOK« Les coqs ne pondent pas d'œufs — seules les poules pondent. » Compréhension parfaite du piège.
mistral:7bOK« Il ne tombe pas, les coqs ne pondent pas d'oeufs. » Réponse courte et correcte.
phi4-miniOKComprend la blague, explique le mécanisme fictif. Réponse détaillée et humoristique.
qwen3:8bOK« Le coq ne pond pas d'oeufs... » Correct mais avec CoT préalable.
llama3.2:3bNON« Il tombe du côté où il est assis. » Ne comprend pas le piège.
llama3.1:8bNON« L'œuf roule vers le bord du toit... » Analyse physique mais rate le piège.
qwen2.5-coder:7bNON« L'oeuf tombe du côté de la pente. » Raté.
qwen3:4bNONCoT en anglais puis réponse erronée.
qwen3.5-4bNONThinking process anglais, conclusion erronée.
qwen3.5-4b-mtpNONThinking process anglais, conclusion erronée.
deepseek-r1:7bNONCoT très long, réponse vide.
Code (palindrome) — génération de code Python
ModèleRéponse (extrait)
gemma3:4bdef is_palindrome(s): s = ''.join(c.lower() for c in s if c.isalnum()) return s == s[::-1]
llama3.1:8bdef is_palindrome(s): cleaned = ''.join(c.lower() for c in s if c.isalnum()) return cleaned == cleaned[::-1]
llama3.2:3bdef is_palindrome(s): return s == s[::-1] (trop simple, sans nettoyage)
mistral:7bdef is_palindrome(s): return s == s[::-1] avec explications détaillées
phi4-minidef is_palindrome(s): cleaned = ''.join(char.lower() for char in s if char.isalnum()); return cleaned == cleaned[::-1]
qwen2.5-coder:7bdef is_palindrome(s): return s == s[::-1] (sans nettoyage)
qwen3:4bdef is_palindrome(s): s = re.sub(...) avec import re
qwen3:8bCoT puis code correct
qwen3.5-4bThinking process puis code
qwen3.5-4b-mtpThinking process puis code
deepseek-r1:7bCoT très long, code basique

Tous les modèles produisent un code fonctionnel avec des variations mineures.

Grammaire française — correction de texte
ModèleQualitéRéponse (extrait)
llama3.1:8bExcellent« J'ai mangé et ensuite je suis allé au cinéma avec mes amis. » + détail des erreurs.
llama3.2:3bExcellent« J'ai mangé puis je suis allé au cinéma... » Correction précise de l'auxiliaire.
mistral:7bExcellentListe les erreurs (auxiliaire, participe passé) + version corrigée.
phi4-miniCorrect« J'ai mangé puis je suis allé... » Correct mais réponse courte.
gemma3:4bCorrectCorrige l'auxiliaire, réponse concise.
qwen2.5-coder:7bCorrectCorrection littérale, moins naturelle.
qwen3:4bFaibleCoT en anglais avant correction.
qwen3:8bCorrectCoT puis correction correcte.
deepseek-r1:7bFaibleCoT très long, correction sommaire.
Traduction (anglais → français)
ModèleRéponse
llama3.1:8b« Le renard brun rapide saute par-dessus le chien paresseux. » — Parfait, idiomatique.
gemma3:4b« Le rapide renard brun saute par-dessus le chien paresseux. » — Correct, léger anglicisme d'ordre.
llama3.2:3b« Le renard brun rapide saute au-dessus du chien paresseux. » — Correct.
mistral:7b« Le renard brun rapide saute par-dessus le chien paresseux. » — Correct.
phi4-mini« Le rapide renard brun saute par-dessus le chien paresseux. » — Correct mais littéral.
qwen2.5-coder:7b« Le renard brun rapide saute par-dessus le chien paresseux. » — Correct.
qwen3:8bCoT puis traduction correcte.
deepseek-r1:7bCoT très long (>3s) pour une traduction correcte mais lent.
Analyse de code — fonction Python de traitement
ModèleQualitéRéponse (extrait)
phi4-miniExcellentAnalyse complète : bugs potentiels, problèmes perf, suggestions. Très structuré.
llama3.2:3bExcellent« Utilise un cache dictionary, tri par score, filtre les éléments... » Clair et concis.
gemma3:4bCorrect3 points d'amélioration : gestion erreurs, complexité, type hints.
llama3.1:8bCorrectIdentifie eval() dangereux, fichiers non fermés, division par zéro.
mistral:7bCorrectAnalyse des risques, suggestions d'amélioration.
qwen3:4bFaibleCoT anglais avant analyse.
deepseek-r1:7bFaibleCoT très long, réponse quasi vide.
Résumé long — texte sur les LLMs
ModèleQualitéRéponse (extrait)
mistral:7bExcellent5 points clés identifiés, 3 thèmes principaux. Synthèse professionnelle en français parfait.
llama3.2:3bExcellentRésumé structuré : évolution, coûts, démocratisation, défis, futur. Clair.
llama3.1:8bExcellentSynthèse en 3 phrases : essor des LLMs depuis 2020, défis, modèles compacts.
gemma3:4bCorrectPlus court (2-3 phrases). Capte l'essentiel.
qwen3:8bCorrectCoT puis résumé correct en français.
phi4-miniCorrect3 thèmes : accélération LLM, coûts, démocratisation.
deepseek-r1:7bFaibleCoT en anglais >200 tokens pour 1 phrase en français.
Analyse de logs — diagnostic d'incident serveur
ModèleQualitéRéponse (extrait)
llama3.2:3bExcellentCause racine identifiée : épuisement connexions PostgreSQL. Chronologie claire.
llama3.1:8bExcellentAnalyse complète : perte connexion DB, timeout, redémarrage api-gateway. Structure pro.
qwen3:4bCorrectAnalyse correcte malgré le CoT préalable.
mistral:7bCorrectDiagnostic correct : connexions PostgreSQL saturées.
phi4-miniCorrect« Cause Racine : surcharge des connexions PostgreSQL. » Clair et direct.
deepseek-r1:7bCorrectAnalyse détaillée malgré le CoT.
Rédaction d'article — avantages des petits modèles IA locaux
ModèleQualitéRéponse (extrait)
phi4-miniExcellentArticle complet : accessibilité, confidentialité, coûts, performance. Ton pro, français irréprochable.
qwen3:8bExcellent« Les petits modèles d'IA : une puissance à portée de main. » Article bien structuré.
llama3.1:8bExcellent5-6 phrases, ton engageant, arguments solides. Français parfait.
gemma3:4bCorrectPlus concis. Capte les points clés.
llama3.2:3bCorrectArticle court mais complet.
qwen2.5-coder:7bCorrect« Les petits modèles d'IA permettent une utilisation optimisée... » Correct.
Raisonnement Docker — dépannage réseau bridge→host
ModèleQualitéRéponse (extrait)
gemma3:4bExcellentExplique clairement la perte d'isolation réseau en mode host. Propose réseau personnalisé.
llama3.2:3bExcellent« Le mode host partage la stack réseau de l'hôte, les conteneurs perdent leurs IP virtuelles. »
mistral:7bExcellent« Je comprends votre problème, c'est un classique... » 2 solutions bien expliquées.
phi4-miniExcellentDiagnostic précis : isolation réseau, perte de résolution DNS. Solutions concrètes.
deepseek-r1:7bExcellentAnalyse complète malgré le CoT : réseau bridge vs host, solutions.
llama3.1:8bCorrect« Problème classique : en mode host + perte communication via noms de conteneur. »
qwen3:4bCorrectAnalyse correcte avec CoT.
qwen3:8bCorrectCoT puis réponse correcte.

Protocole de test reproductible

Benchmark exécuté sur Ubuntu 24.04.4 LTS (kernel 6.8.0-136), Docker 29.6.2, Ollama 0.32.1 en conteneur Docker. Chaque bloc ci-dessous est indépendant et copiable.

A. Installer Docker + Ollama

Option 1 : Ollama en conteneur Docker (recommandé, configuration de référence)
# Installer Docker sur Ubuntu
curl -fsSL https://get.docker.com | sh

# Lancer Ollama en Docker
docker run -d --name ollama --restart unless-stopped   -v ollama_data:/root/.ollama   -p 127.0.0.1:11434:11434   ollama/ollama:0.32.1

# Vérification
docker exec ollama ollama --version
docker exec ollama ollama list
Option 2 : Ollama directement sur l'OS
curl -fsSL https://ollama.com/install.sh | sh
# Vérification
ollama --version

B. Télécharger les modèles

# 11 modèles (37 Go total)
docker exec ollama ollama pull gemma3:4b
docker exec ollama ollama pull llama3.2:3b
docker exec ollama ollama pull qwen3:4b
docker exec ollama ollama pull llama3.1:8b
docker exec ollama ollama pull mistral:7b
docker exec ollama ollama pull phi4-mini
docker exec ollama ollama pull qwen2.5-coder:7b
docker exec ollama ollama pull qwen3:8b
docker exec ollama ollama pull qwen3.5-4b
docker exec ollama ollama pull qwen3.5-4b-mtp
docker exec ollama ollama pull deepseek-r1:7b

# Vérification
docker exec ollama ollama list
Si Ollama est installé directement (sans Docker), retirer docker exec ollama.

C. Benchmark rapide (5 tests par modèle)

#!/bin/bash
MODELES="gemma3:4b llama3.2:3b qwen3:4b llama3.1:8b mistral:7b phi4-mini qwen2.5-coder:7b qwen3:8b qwen3.5-4b qwen3.5-4b-mtp deepseek-r1:7b"
for M in $MODELES; do
  echo "=== $M ==="
  for test in     "raisonnement_coq|Un coq pond un oeuf sur le toit d'une grange. De quel cote tombe l'oeuf ?|100"     "code_palindrome|Ecris une fonction Python is_palindrome(s). Donne juste le code.|100"     "grammaire_francais|Corrige: J'ai mange et ensuite j'ai alle au cinema avec mes amis.|80"     "traduction|Traduis en francais: The quick brown fox jumps over the lazy dog|100"     "latence_hello|Dis simplement bonjour.|20"; do
    IFS='|' read -r n p t <<< "$test"
    curl -s http://127.0.0.1:11434/api/generate -H "Content-Type: application/json"       -d "{"model":"$M","prompt":"$p","options":{"num_predict":$t,"temperature":0.7},"stream":false}"
    echo ""
  done
  # Decharger le modele
  curl -s http://127.0.0.1:11434/api/generate -H "Content-Type: application/json"     -d "{"model":"$M","prompt":"x","keep_alive":0,"stream":false}" > /dev/null
done

D. Benchmark réaliste (5 tests par modèle)

#!/bin/bash
# Meme structure que le bloc C
# Tests: analyse_code (300t), resume_long (400t), analyse_logs (350t), redaction_article (500t), latence_pure (5t)
# Modeles et dechargement identiques au bloc C
# Voir le fichier batch5.csv pour les prompts complets

E. Test Docker (1 test par modèle)

#!/bin/bash
MODELES="gemma3:4b llama3.2:3b qwen3:4b llama3.1:8b mistral:7b phi4-mini qwen2.5-coder:7b qwen3:8b qwen3.5-4b qwen3.5-4b-mtp deepseek-r1:7b"
for M in $MODELES; do
  curl -s http://127.0.0.1:11434/api/generate -H "Content-Type: application/json"     -d "{"model":"$M","prompt":"Explique pourquoi changer le network Docker de bridge a host peut empecher les conteneurs de communiquer entre eux.","options":{"num_predict":300,"temperature":0.7},"stream":false}"
  echo ""
  curl -s http://127.0.0.1:11434/api/generate -H "Content-Type: application/json"     -d "{"model":"$M","prompt":"x","keep_alive":0,"stream":false}" > /dev/null
done

Notes

Plateforme de test : VPS KVM4 · 16 Go RAM · 4 vCPU · CPU only · Ubuntu 24.04.4 LTS · Docker 29.6.2 · Ollama 0.32.1
Données brutes : batch5.csv (141 lignes) · 11 catégories · temps, tokens, tok/s, réponses complètes
Modèle exclu : qwen3.5-9b (OOM avec 16 Go RAM)