iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Python · Intermédiaire

Entraîner son IA en local

Créer chez soi une IA experte d'un domaine : choisir le matériel et le LLM de base, préparer les données, construire un RAG, fine-tuner en QLoRA, évaluer et déployer avec Ollama.

OllamaUnslothHugging FaceChromaDBQLoRAGGUF
01Pré-entraînement, fine-tuning, RAG : ce qu'on peut vraiment faire chez soi02Matériel et environnement de travail03Choisir le LLM de départ04Préparer les données : sources, nettoyage et formats05Construire le RAG local06Fine-tuner le modèle en QLoRA07Évaluer : savoir si l'IA répond vraiment bien08Exporter, déployer avec Ollama et faire évoluer l'IA
Chapitre 3·35 min

Choisir le LLM de départ

Le modèle de base est la fondation de tout le projet. Un bon choix vous fait gagner plus que n'importe quel réglage d'entraînement. Un mauvais choix — trop gros pour votre carte, mauvais en français, licence incompatible — vous oblige à tout recommencer. La bonne nouvelle : ce choix se fait en une soirée, avec une méthode simple et des mesures, pas des impressions.

Les critères, par ordre d'importance

1. La taille qui tient dans votre machine

Reprenez le tableau du chapitre 2. Pour un projet avec fine-tuning sur 12-16 Go de VRAM, visez 7-9B paramètres. Sur 24 Go, 12-14B. Plus gros n'est utile que si vous vous contentez du RAG sans fine-tuning.

Règle que j'applique : prendre le plus petit modèle qui passe le test de référence décrit plus bas. Un 8B bien spécialisé bat souvent un 32B généraliste sur un domaine étroit, et il répond trois fois plus vite.

2. La qualité en français

Tous les modèles ne se valent pas hors de l'anglais. Les familles Qwen, Mistral, Gemma et Llama gèrent correctement le français ; les très petits modèles (moins de 3B) font vite des fautes et des anglicismes. Testez toujours dans la langue de vos utilisateurs.

3. La licence

FamilleÉditeurLicence (à vérifier sur la fiche du modèle)
QwenAlibabaApache 2.0 pour la plupart des tailles
Mistral / MinistralMistral AI (France)Apache 2.0 pour les modèles ouverts, licence de recherche pour certains
GemmaGooglelicence Gemma, usage commercial autorisé sous conditions
LlamaMetalicence communautaire Llama, conditions au-delà d'un certain nombre d'utilisateurs
PhiMicrosoftMIT

Pour un usage personnel, tout convient. Pour un produit commercial, lisez la licence exacte de la version choisie : elles changent d'une génération à l'autre.

4. Instruct ou base

Prenez la version instruct (ou « chat », « it »). Elle sait déjà suivre des consignes et converser ; votre fine-tuning n'aura qu'à la spécialiser. Partir d'un modèle base demande beaucoup plus de données pour obtenir un assistant utilisable.

5. Le contexte

La longueur de contexte (nombre de tokens lisibles d'un coup) compte pour le RAG : il faut y faire tenir les consignes, 5 à 10 passages et la question. 8 000 tokens suffisent largement ; la plupart des modèles récents en acceptent 32 000 ou plus.

6. Les modèles « à raisonnement »

Certains modèles récents (Qwen3, DeepSeek-R1 distillés…) produisent une phase de réflexion avant de répondre. C'est utile pour les problèmes complexes, coûteux en temps et en tokens pour des questions factuelles. Qwen3 permet de désactiver cette phase (/no_think dans le message ou option du chat template). Pour un assistant de connaissances, je la désactive.

Où trouver les modèles

  • Ollama (ollama.com/library) : modèles prêts à l'emploi, quantifiés, pour tester et servir
  • Hugging Face (huggingface.co) : les poids originaux, nécessaires pour le fine-tuning
  • Unsloth sur Hugging Face : des versions pré-quantifiées en 4 bits, optimisées pour l'entraînement, qui se téléchargent plus vite

Sur Hugging Face, la fiche d'un modèle (model card) donne la licence, le contexte, le chat template et souvent des benchmarks. Lisez-la entièrement avant de vous engager.

Les formats de fichiers de modèles

FormatExtensionUsage
safetensors.safetensorspoids originaux, entraînement avec PyTorch / Transformers
GGUF.ggufinférence quantifiée avec llama.cpp, Ollama, LM Studio
Adaptateur LoRAadapter_model.safetensorsla petite « couche » produite par un fine-tuning
MLXdossier .safetensorsinférence et entraînement sur Mac Apple Silicon

Le parcours typique : on entraîne à partir des safetensors, on fusionne l'adaptateur LoRA avec le modèle, on convertit en GGUF, on sert avec Ollama.

Dans les noms GGUF, le suffixe indique la quantification : Q4_K_M est le compromis standard, Q5_K_M et Q6_K gagnent un peu de qualité pour plus de mémoire, Q8_0 est presque sans perte.

La méthode : un banc d'essai sur votre domaine

Les classements publics mesurent des connaissances générales. Ce qui compte, c'est la performance sur vos questions. Construisez un jeu de 30 à 50 questions représentatives, avec la réponse attendue écrite par vous ou un expert.

data/bench.jsonl
{"question": "Quand semer les tomates sous abri ?", "reponse": "De fin février à mi-mars, à 20-25 °C, pour un repiquage en pleine terre après les dernières gelées (mi-mai en général)."}
{"question": "Pourquoi les feuilles basses de mes tomates jaunissent-elles ?", "reponse": "Souvent un manque d'azote ou le vieillissement naturel des feuilles basses ; si des taches brunes apparaissent, suspecter l'alternariose ou le mildiou."}
{"question": "Peut-on planter des poireaux à côté des carottes ?", "reponse": "Oui, c'est une association classique : l'odeur du poireau éloigne la mouche de la carotte et inversement pour la teigne du poireau."}

Variez les types de questions : faits simples, diagnostics, conseils pratiques, questions pièges hors sujet (« Comment réparer ma voiture ? ») auxquelles l'assistant devrait refuser de répondre.

Ce fichier deviendra le noyau du jeu d'évaluation du chapitre 7. Ne mettez jamais ces questions dans les données d'entraînement, sinon vous mesurerez la mémoire du modèle, pas sa compétence.

Le script de comparaison

eval/banc_essai.py
import json
import time
from pathlib import Path
 
import ollama
 
MODELES = ["qwen3:8b", "gemma3:12b", "mistral-small", "llama3.1:8b"]
SYSTEME = "Tu es un assistant expert du potager. Réponds en français, de façon précise et concise."
 
questions = [json.loads(l) for l in Path("data/bench.jsonl").read_text(encoding="utf-8").splitlines() if l.strip()]
resultats = []
 
for modele in MODELES:
    for q in questions:
        debut = time.perf_counter()
        rep = ollama.chat(
            model=modele,
            messages=[
                {"role": "system", "content": SYSTEME},
                {"role": "user", "content": q["question"]},
            ],
            options={"temperature": 0.2},
        )
        resultats.append({
            "modele": modele,
            "question": q["question"],
            "attendu": q["reponse"],
            "obtenu": rep["message"]["content"],
            "secondes": round(time.perf_counter() - debut, 1),
        })
        print(f"{modele:16} {resultats[-1]['secondes']:5}s  {q['question'][:50]}")
 
Path("eval/banc_essai.json").write_text(json.dumps(resultats, ensure_ascii=False, indent=2), encoding="utf-8")
for m in qwen3:8b gemma3:12b mistral-small llama3.1:8b; do ollama pull $m; done
uv run eval/banc_essai.py

Adaptez la liste aux modèles qui tiennent dans votre VRAM et aux versions disponibles au moment où vous lisez : de nouvelles générations sortent tous les quelques mois, la méthode ne change pas.

Pour l'instant, lisez les réponses vous-même et notez-les de 0 à 2 (fausse, partielle, correcte). Au chapitre 7, on automatisera cette notation.

Lire les résultats

Trois observations à faire :

  • Le score brut : quel modèle a le plus de réponses correctes sans aucune aide ?
  • Le type d'erreurs : un modèle qui dit « je ne suis pas sûr » vaut mieux qu'un modèle qui invente avec aplomb. Ce dernier sera plus dur à corriger.
  • La vitesse : un modèle deux fois plus lent pour 5 % de bonnes réponses en plus n'est pas forcément un bon choix pour un assistant interactif.

Sur un domaine grand public comme le potager, un bon 8B répond déjà correctement à une bonne partie des questions générales et se trompe sur les détails (dates précises, variétés, doses). C'est exactement ce que le RAG va corriger.

Mon choix pour le fil rouge

Pour la suite du cours, j'utilise Qwen3 8B : licence Apache 2.0, bon niveau en français, fine-tuning QLoRA possible sur 12 Go de VRAM avec Unsloth, et une version pré-quantifiée disponible pour l'entraînement. Tout le code fonctionne avec un autre modèle en changeant son nom ; seul le chat template diffère, et les bibliothèques le gèrent pour vous.

Le chat template

Chaque famille de modèles attend un format de conversation précis, avec des balises spéciales. Par exemple, pour Qwen :

<|im_start|>system
Tu es un assistant expert du potager.<|im_end|>
<|im_start|>user
Quand semer les tomates ?<|im_end|>
<|im_start|>assistant
De fin février à mi-mars sous abri…<|im_end|>

Llama, Gemma et Mistral utilisent d'autres balises. Vous n'écrirez jamais ces balises à la main : le tokenizer du modèle les applique via apply_chat_template. Mais retenez qu'entraîner et servir un modèle avec deux templates différents est la cause numéro un des modèles fine-tunés qui répondent n'importe quoi une fois dans Ollama.


Le bon modèle de base est le plus petit qui tient dans votre machine, parle bien votre langue, a une licence compatible et obtient un score correct sur vos propres questions. Mesurez-le maintenant : ce score de départ est la référence qui prouvera, ou non, que tout le travail des chapitres suivants sert à quelque chose.

Précédent
Matériel et environnement de travail
Suivant
Préparer les données : sources, nettoyage et formats

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main