# Fixe ton objectif d'entrainement : prompt, RAG ou fine-tuning ?

L'erreur la plus couteuse en IA locale n'est pas un entrainement rate — c'est un entrainement *reussi* qui resout le mauvais probleme. Avant que ton dragon n'avale un seul exemple, il te faut un objectif d'entrainement precis et la preuve que le fine-tuning est vraiment le bon outil. Cette lecon te donne un cadre de decision utilise par les equipes qui livrent des modeles fine-tunes pour de vrai.

## Les trois outils, compares honnetement

Quand un modele ne fait pas ce que tu veux, tu as trois options par ordre d'escalade :

**1. Le prompting (gratuit, instantane).** Ecrire de meilleures instructions, ajouter des exemples dans le prompt (few-shot), definir le format de sortie. Ca corrige plus de problemes que la plupart des gens ne le croient.

**2. Le RAG — Retrieval-Augmented Generation (pas cher, rapide a construire).** Stocker tes documents dans un index de recherche ; recuperer les passages pertinents et les coller dans le prompt au moment de la question. C'est le bon outil chaque fois que le probleme est *le modele ne connait pas mes faits*.

**3. Le fine-tuning (ce cours).** Changer reellement les poids du modele avec des exemples d'entrainement. Le bon outil quand le probleme est *le modele ne se comporte pas comme j'en ai besoin* — mauvais ton, mauvais format, il ignore les instructions specifiques a ta tache, il ne parle pas le langage de ton domaine.

<div class="concept-box">
<h4>Concept</h4>
La regle en une ligne que toute l'industrie utilise : <strong>le fine-tuning enseigne le comportement, le RAG fournit la connaissance.</strong> Les faits changent — mets-les dans une base de donnees. Le comportement est stable — grave-le dans les poids. Beaucoup de systemes en production utilisent les deux : un modele fine-tune <em>plus</em> du RAG.
</div>

Voici la decision sous forme de diagramme :

<svg viewBox="0 0 720 420" width="100%" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Diagramme de decision : prompt vs RAG vs fine-tuning">
    <defs>
    <marker id="arr" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto">
      <path d="M0,0 L8,4 L0,8 z" fill="#7b8cff"/>
    </marker>
  </defs>
  <rect x="230" y="16" width="260" height="52" rx="10" fill="rgba(123,140,255,0.08)" stroke="#7b8cff" stroke-width="1.5"/>
  <text x="360" y="38" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">Le modele ne fait pas</text>
  <text x="360" y="57" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">ce dont j'ai besoin</text>
  <path d="M360 68 L360 100" stroke="#7b8cff" stroke-width="1.5" fill="none" marker-end="url(#arr)"/>
  <rect x="215" y="100" width="290" height="52" rx="10" fill="rgba(123,140,255,0.08)" stroke="#7b8cff" stroke-width="1.5"/>
  <text x="360" y="122" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">Ai-je essaye un prompting serieux</text>
  <text x="360" y="141" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">avec des exemples few-shot ?</text>
  <path d="M215 126 L120 126 L120 180" stroke="#7b8cff" stroke-width="1.5" fill="none" marker-end="url(#arr)"/>
  <text x="130" y="118" fill="#4fffb0" font-family="monospace" font-size="12px">non</text>
  <rect x="30" y="180" width="180" height="52" rx="10" fill="rgba(79,255,176,0.08)" stroke="#4fffb0" stroke-width="1.5"/>
  <text x="120" y="202" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">Corrige le prompt d'abord.</text>
  <text x="120" y="221" text-anchor="middle" fill="#9aa3b5" font-family="-apple-system, sans-serif" font-size="12px">Gratuit. Fais-le aujourd'hui.</text>
  <path d="M360 152 L360 190" stroke="#7b8cff" stroke-width="1.5" fill="none" marker-end="url(#arr)"/>
  <text x="370" y="176" fill="#4fffb0" font-family="monospace" font-size="12px">oui, toujours mauvais</text>
  <rect x="215" y="190" width="290" height="52" rx="10" fill="rgba(123,140,255,0.08)" stroke="#7b8cff" stroke-width="1.5"/>
  <text x="360" y="212" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">Le probleme, ce sont des faits ou</text>
  <text x="360" y="231" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">documents manquants / changeants ?</text>
  <path d="M505 216 L600 216 L600 270" stroke="#7b8cff" stroke-width="1.5" fill="none" marker-end="url(#arr)"/>
  <text x="560" y="208" fill="#4fffb0" font-family="monospace" font-size="12px">oui</text>
  <rect x="510" y="270" width="180" height="52" rx="10" fill="rgba(251,191,36,0.08)" stroke="#fbbf24" stroke-width="1.5"/>
  <text x="600" y="292" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">Utilise le RAG.</text>
  <text x="600" y="311" text-anchor="middle" fill="#9aa3b5" font-family="-apple-system, sans-serif" font-size="12px">Les faits vivent dans un index.</text>
  <path d="M360 242 L360 280" stroke="#7b8cff" stroke-width="1.5" fill="none" marker-end="url(#arr)"/>
  <text x="370" y="266" fill="#4fffb0" font-family="monospace" font-size="12px">non — c'est le comportement</text>
  <rect x="215" y="280" width="290" height="60" rx="10" fill="rgba(79,255,176,0.08)" stroke="#4fffb0" stroke-width="1.5"/>
  <text x="360" y="305" text-anchor="middle" fill="#e6e9f0" font-family="-apple-system, sans-serif" font-size="15px">Fine-tune. Ce cours.</text>
  <text x="360" y="326" text-anchor="middle" fill="#9aa3b5" font-family="-apple-system, sans-serif" font-size="12px">Ton, format, discipline de tache, style du domaine</text>
  <path d="M360 340 L360 372" stroke="#7b8cff" stroke-width="1.5" fill="none" marker-end="url(#arr)"/>
  <text x="360" y="396" text-anchor="middle" fill="#9aa3b5" font-family="-apple-system, sans-serif" font-size="12px">Souvent la vraie reponse : modele fine-tune + RAG ensemble</text>
</svg>

## Bons et mauvais objectifs de fine-tuning

**Objectifs ou le fine-tuning excelle :**

- *"Repondre aux questions de support avec la voix de notre marque, en terminant toujours par une prochaine etape."* — ton + format ✔
- *"Transformer des notes de reunion en vrac en notre template exact de rapport d'avancement."* — transformation structuree ✔
- *"Classer les emails entrants dans nos 12 categories internes."* — discipline de tache ✔
- *"Ecrire des descriptions de produits qui sonnent comme notre catalogue, en roumain."* — style + langue ✔
- *"Toujours produire du JSON valide correspondant a notre schema."* — fiabilite de format ✔

**Objectifs qui finiront en larmes :**

- *"Apprendre au modele notre liste de prix 2026."* ✘ — les faits changent ; utilise le RAG. Le modele hallucinera des prix avec une confiance totale.
- *"Rendre un modele 4B aussi intelligent que Claude."* ✘ — le fine-tuning n'ajoute pas de capacite de raisonnement ; il faconne ce qui est deja la.
- *"L'entrainer sur tous nos documents pour qu'il sache tout."* ✘ — deverser des documents bruts dans le fine-tuning apprend au modele a *imiter tes documents*, pas a repondre a des questions dessus.

<div class="honest-note">
<h4>Note honnete</h4>
Si quelqu'un te dit avoir fine-tune un modele "pour qu'il connaisse les donnees de son entreprise", soit il a en fait construit du RAG, soit son modele invente avec assurance des donnees d'entreprise. Le fine-tuning sur des documents bruts est l'erreur de debutant la plus courante en IA locale — et maintenant, c'est une erreur que tu ne feras jamais.
</div>

## Notre projet de cours : definir le travail d'Ember

Pour le reste de ce cours, l'objectif d'entrainement d'Ember est l'un des cas d'usage les plus solides pour un modele local :

> **Ember est un assistant de support client pour une petite boutique en ligne. Il repond avec la voix chaleureuse-mais-precise de la boutique, dans la langue du client, structure toujours ses reponses en : reponse courte → explication → prochaine etape concrete, et refuse d'inventer des details de commande qu'il n'a pas.**

Remarque de quoi cet objectif est fait : **voix** (comportement), **structure** (format), **discipline** (refuser d'halluciner). Tout ca merite d'aller dans les poids. Les *faits* sur des commandes specifiques viendraient d'une base de donnees au runtime — pas de l'entrainement.

## Ecris une fiche d'objectif avant d'entrainer quoi que ce soit

<div class="pro-tip">
<h4>Astuce Pro</h4>
Les professionnels ecrivent l'evaluation avant l'entrainement. Si tu ne peux pas decrire comment tu vas <em>mesurer</em> le succes, tu n'as pas encore d'objectif d'entrainement — tu as un souhait.
</div>

Ta fiche d'objectif tient en quatre lignes. Voici celle d'Ember :

- **Tache :** repondre aux questions de support client pour une boutique en ligne
- **Comportement :** voix chaleureuse-precise ; structure : reponse → explication → prochaine etape ; ne jamais inventer de donnees de commande
- **Test de succes :** sur 30 questions de test mises de cote, ≥25 suivent la structure et 0 inventent des faits
- **Non-objectifs :** la connaissance produit (le travail du RAG plus tard), les langues au-dela de EN/RO

<div class="try-it">
<h4>Essaie</h4>
Ecris ta propre fiche d'objectif — quatre lignes, avec de vrais chiffres dans le test de succes. Si ta ligne "Comportement" contient les mots "connait" ou "se souvient", arrete-toi et deplace cette partie vers la ligne Non-objectifs : c'est du RAG. Garde cette fiche ; a la lecon 6, elle devient ta checklist d'evaluation.
</div>

<div class="checkpoint">
<h4>Checkpoint</h4>
Tu peux expliquer fine-tuning vs RAG en une phrase, tu sais quels objectifs meritent d'aller dans les poids, et tu as une fiche d'objectif ecrite avec un test de succes mesurable. Prochaine etape : le calcul de memoire qui te dit exactement ce que ta machine peut entrainer.
</div>
