Tu peux avoir un materiel parfait et des hyperparametres parfaits, un mauvais dataset te donnera quand meme un mauvais modele — a chaque fois, sans exception. La qualite des donnees est l'heure au meilleur rendement que tu passeras dans tout ce cours. Cette lecon te montre le format, la quantite et les rituels de nettoyage qui separent un fine-tune affute d'une deception couteuse.
Le format : JSONL de type chat
Le fine-tuning d'instructions moderne utilise un exemple d'entrainement par ligne, en JSON, imitant une vraie conversation. C'est le format qu'attendent MLX comme Unsloth :
{"messages": [
{"role": "system", "content": "You are Ember, the support assistant for Nordlys Shop. Friendly and precise. Structure: short answer, explanation, next step. Never invent order details."},
{"role": "user", "content": "My order hasn't arrived and it's been 10 days. Order #4571."},
{"role": "assistant", "content": "I'm sorry about the wait — 10 days is longer than it should be.\n\nStandard delivery is 3–5 business days, so #4571 deserves a proper look. I can't see live courier data from here, so I won't guess where the package is.\n\nNext step: reply with your postal code and I'll open a trace request with the courier today. You'll get a tracking update within 24 hours."}
]}
Regarde bien — cet unique exemple enseigne quatre comportements a la fois : le ton desole-mais-pose, la structure en trois parties, le refus d'inventer des donnees de suivi, et la prochaine etape concrete. Chaque exemple est une lecon ; fais en sorte que chacun enseigne quelque chose.
Concept
Le modele apprend a imiter les tours de l'assistant, dans le contexte des tours system et user. Ton dataset est litteralement une collection de demonstrations "voici la reponse parfaite". Si une demonstration est mediocre, tu entraines la mediocrite — avec une grande precision.Combien d'exemples te faut-il ?
La reponse honnete surprend les debutants dans les deux sens :
| Type d'objectif | Exemples necessaires |
|---|---|
| Ajustement de ton/voix | 50–200 |
| Discipline de format (structure, schema JSON) | 100–500 |
| Specialisation de tache (classification, extraction) | 300–2 000 |
| Nouveau style de domaine (redaction juridique, medicale) | 1 000–10 000 |
Pour Ember, 150 a 300 excellents exemples battent 3 000 exemples mediocres scrapes. Le fine-tuning LoRA est econome en echantillons ; c'est un scalpel, pas une lance a incendie.
Note honnete
"Plus de donnees, c'est toujours mieux" est une sagesse de pre-entrainement, pas de fine-tuning. En fine-tuning, la coherence bat le volume. Dix exemples qui contredisent ton format apprennent au modele que le format est optionnel. Cent exemples impeccables lui apprennent que le format est la loi.D'ou viennent les exemples d'Ember
Trois sources, par ordre de valeur :
1. L'historique reel (le meilleur). De vrais emails de clients + les vraies reponses de ton meilleur agent, nettoyees. La realite a de la distribution : questions bizarres, fautes de frappe, colere, cas limites.
2. La generation synthetique (bien, avec precaution). Utilise un modele puissant (Claude, ou un gros modele local) pour rediger des brouillons d'exemples : "Genere 20 questions realistes de clients sur les retours pour une boutique en ligne, avec des reponses dans cette voix et cette structure exactes : [colle 3 vrais exemples]". Puis relis chacun a la main, sans exception. Tu es le dresseur en chef ; le gros modele n'est que ton assistant.
3. Les cas limites rediges a la main (l'assaisonnement essentiel). Ecris toi-meme les cas dangereux : le client qui demande des infos de commande que tu n'as pas (enseigne le refus), le message furieux (enseigne le calme), la question en roumain (enseigne l'adaptation a la langue). Ils apparaissent rarement dans les donnees en masse mais definissent le caractere de ton modele quand ca compte.
Le rituel de nettoyage
Avant l'entrainement, passe chaque exemple dans cette checklist :
- Enverrais-tu cette reponse a un vrai client ? Sinon, corrige-la ou supprime-la.
- Suit-elle exactement la structure cible ? Toutes. Aucune exception — les exceptions sont de l'anti-entrainement.
- Le prompt system est-il identique partout ? Meme formulation, octet pour octet. Tu utiliseras le meme a l'inference.
- Pas de secrets ni de donnees personnelles. Les vrais noms de clients, emails, numeros de commande sont remplaces par des faux. Les poids vont les memoriser.
- Deduplique. Des exemples quasi identiques surponderent une lecon et ennuient le dragon.
Decoupe avant d'entrainer : train / valid / test
Coupe tes donnees en trois avant l'entrainement, et ne laisse jamais le modele voir la derniere tranche :
- train.jsonl (~80%) — ce dont le modele apprend
- valid.jsonl (~10%) — surveille pendant l'entrainement pour detecter le surapprentissage (lecon 6)
- test.jsonl (~10%) — touche uniquement a la toute fin, pour noter honnetement le dragon final
Les deux toolchains lisent directement cette organisation. MLX attend un dossier avec exactement ces noms de fichiers ; avec Unsloth tu chargeras les memes fichiers avec la bibliotheque datasets.
Astuce Pro
Rends la tranche de test difficile expres. Mets-y tes cas limites les plus vicieux : les questions pieges, la reclamation furieuse en plusieurs parties, la demande d'inventer des donnees. Un modele qui passe un test difficile est entraine ; un modele qui passe un test facile a de la chance.Essaie
Construis ton dataset v1 cette semaine : 10 exemples en or ecrits a la main (tes toutes meilleures reponses), puis 100–150 exemples synthetiques generes a partir de ces exemples en or, puis le rituel de nettoyage, puis la decoupe en trois. Cible :data/train.jsonl, data/valid.jsonl, data/test.jsonl. Garde les comptes dans une note — tu itereras dessus a la lecon 6.