Guide

Statut éditorial : En attente de relecture

Préparer un dataset de fine-tuning : formats, qualité et pièges

Construire un dataset représentatif, dédupliqué et correctement séparé pour adapter un LLM sans apprendre ses erreurs.

Classification du contenu

Types

  • Données et Machine Learning
Niveau
Intermédiaire
Publié le
24 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
24 novembre 2026

Un fine-tuning apprend les régularités présentes dans les exemples, y compris incohérences, données sensibles et mauvais formats. La préparation du dataset détermine donc souvent davantage le résultat que le choix d’un hyperparamètre. Commencez par définir le comportement attendu et une évaluation indépendante.

Définir l’unité d’exemple

Pour une tâche de chat, conservez les rôles et appliquez la chat template du modèle lors de la tokenisation. Pour une extraction ou classification, utilisez des entrées et labels structurés. Chaque exemple doit représenter une situation réaliste, avec suffisamment de contexte mais sans données inutiles. Ne mélangez pas plusieurs formats implicites.

Nettoyer sans uniformiser aveuglément

Supprimez doublons, fragments incomplets, sorties contradictoires et informations personnelles non nécessaires. Vérifiez langue, encodage, licences et provenance. Conservez la diversité utile : demandes courtes et longues, erreurs utilisateur, refus légitimes et cas limites. Un dataset uniquement composé de réponses parfaites et faciles prépare mal la production.

Éviter les fuites entre splits

Séparez entraînement, validation et test par source, document ou utilisateur lorsque des variantes se ressemblent. Une simple répartition aléatoire peut placer le même texte paraphrasé des deux côtés et gonfler artificiellement le score. Gardez le test final hors du processus de réglage.

Tokenisation et batching

Mesurez la distribution des tokens avec le tokenizer exact. Décidez explicitement troncature, séquences trop longues et labels masqués. Un data collator assemble les exemples en batch et peut appliquer un padding dynamique jusqu’à la séquence la plus longue du batch, souvent plus efficace qu’un padding global. Inspectez manuellement le texte décodé après préparation.

Checklist

FAQ

Plus de données donne-t-il toujours un meilleur modèle ?

Non. Des exemples bruités ou redondants peuvent dégrader le comportement.

Peut-on générer les exemples avec un LLM ?

Oui pour compléter la couverture, avec filtrage et validation humaine sur un échantillon.

Faut-il conserver les données brutes ?

Oui si le cadre légal le permet, avec versionnage et accès contrôlé pour reproduire la transformation.

Valider un dataset conversationnel

~~~python import json from collections import Counter

ALLOWED_ROLES = {"system", "user", "assistant"} seen, errors = Counter(), []

for line_no, line in enumerate(open("train.jsonl"), start=1): row = json.loads(line) messages = row.get("messages", []) roles = [message.get("role") for message in messages] if not messages or roles[-1] != "assistant": errors.append((line_no, "assistant final manquant")) if any(role not in ALLOWED_ROLES for role in roles): errors.append((line_no, "rôle inconnu")) key = json.dumps(messages, sort_keys=True, ensure_ascii=False) seen[key] += 1

duplicates = sum(count - 1 for count in seen.values()) print({"errors": errors[:20], "duplicates": duplicates}) ~~~

Séparez train, validation et test par source ou utilisateur avant toute augmentation afin d’éviter les fuites. Retirez secrets et données personnelles, puis faites relire un échantillon. Conservez licence, provenance, règle de nettoyage et version de chaque exemple.

Sources utilisées