Chapitre 1 : Qu'est-ce que l'ajustement fin ?
Personnaliser les modèles pré-entraînés pour vos besoins
L'ajustement fin est le processus qui consiste à prendre un modèle de langage pré-entraîné et à poursuivre son entraînement sur un ensemble de données spécifique pour l'adapter à des tâches ou domaines particuliers.
La fondation de l'apprentissage par transfert
Que se passe-t-il pendant le pré-entraînement ?
Avant qu'un modèle puisse être ajusté finement, il passe par le pré-entraînement :
- Collecte de données : Des trillions de tokens provenant de livres, sites web, code, etc.
- Prédiction du prochain token : Le modèle apprend à prédire ce qui vient ensuite
- Acquisition de connaissances : Le modèle développe une compréhension du langage, des faits, du raisonnement
- Capacités générales : Lecture, écriture, résumé, codage, et plus
Des modèles comme Llama-3.1 sont pré-entraînés sur plus de 15 trillions de tokens, leur conférant une vaste connaissance et des capacités avant toute personnalisation.
Ce que l'ajustement fin change
Lorsque vous ajustez finement un modèle, vous modifiez ses poids internes pour :
1. S'adapter à des tâches spécifiques
- Suivre des formats d'instructions particuliers
- Générer des structures de sortie spécifiques (JSON, markdown, etc.)
- Se concentrer sur certains types de problèmes
2. Apprendre des connaissances de domaine
- Terminologie et protocoles médicaux
- Raisonnement juridique et citations
- Processus et langage spécifiques à l'entreprise
3. Ajuster le comportement et le style
- Ton de voix (formel, décontracté, technique)
- Préférences de longueur de réponse
- Traits de personnalité et de caractère
Pré-entraînement vs ajustement fin
| Aspect | Pré-entraînement | Ajustement fin |
|---|---|---|
| Taille des données | Trillions de tokens | Milliers à millions |
| Calcul | Milliers de GPU, mois | 1-8 GPU, heures à jours |
| Objectif | Compréhension générale du langage | Adaptation à des tâches spécifiques |
| Qui le fait | Grands laboratoires d'IA | Quiconque a accès à un GPU |
| Coût | Millions de dollars | Centaines à milliers |
Le processus d'ajustement fin
Étape 1 : Choisir un modèle de base
Sélectionnez un modèle pré-entraîné approprié pour votre cas d'utilisation :
from transformers import AutoModelForCausalLM
# Charger un modèle de base pré-entraîné
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")
Étape 2 : Préparer votre ensemble de données
Formatez vos données pour la tâche d'entraînement :
# Exemple de format de suivi d'instructions
training_example = {
"instruction": "Résumer l'article suivant",
"input": "La Banque centrale européenne a annoncé...",
"output": "La BCE a augmenté les taux d'intérêt de 0,25%..."
}
Étape 3 : Configurer l'entraînement
Configurez les paramètres d'entraînement :
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./fine-tuned-model",
learning_rate=2e-5,
num_train_epochs=3,
per_device_train_batch_size=4,
)
Étape 4 : Entraîner
Lancez le processus d'ajustement fin :
from trl import SFTTrainer
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
args=training_args,
)
trainer.train()
Étape 5 : Évaluer et déployer
Testez votre modèle et déployez-le :
# Sauvegarder le modèle ajusté finement
model.save_pretrained("./my-custom-model")
# L'utiliser pour l'inférence
output = model.generate(input_ids, max_new_tokens=100)
Ce que l'ajustement fin peut accomplir
✅ Excellents résultats
- Transfert de style : Faire en sorte qu'un modèle écrive dans le style de votre entreprise
- Suivi de format : Produire des structures JSON spécifiques de manière fiable
- Spécialisation de domaine : Expertise médicale, juridique, financière
- Suivi d'instructions : Suivre des instructions complexes en plusieurs étapes
- Caractère/personnalité : Personnalité et comportement cohérents
⚠️ Résultats modérés
- Nouvelles langues : Fonctionne mais peut nécessiter des données significatives
- Raisonnement complexe : Améliorations possibles mais limitées
- Connaissances factuelles : Mieux vaut utiliser RAG pour des faits dynamiques
❌ Mauvais résultats
- Informations en temps réel : Le modèle ne peut pas apprendre ce sur quoi il n'a pas été entraîné
- Précision mathématique : L'ajustement fin seul ne corrigera pas les erreurs de calcul
- Changements fondamentaux d'architecture : Ne peut pas ajouter de nouvelles capacités
Types d'ajustement fin
1. Ajustement fin complet
Mise à jour de tous les paramètres du modèle :
- Potentiel de personnalisation le plus élevé
- Nécessite le plus de mémoire et de calcul
- Risque d'oubli catastrophique
2. Ajustement fin efficace en paramètres (PEFT)
Mise à jour d'un petit sous-ensemble de paramètres :
- Exigences de mémoire beaucoup plus faibles
- Entraînement plus rapide
- Qualité souvent comparable à l'ajustement fin complet
- Exemples : LoRA, QLoRA, Prefix Tuning, IA3
3. Ajustement par instruction
Entraînement sur des paires instruction-réponse :
- Apprend aux modèles à suivre des instructions
- Utilise des formats comme Alpaca ou ShareGPT
- Fondation pour les modèles de type chat
4. Alignement/RLHF
Entraînement des modèles pour s'aligner sur les préférences humaines :
- Utilise des retours humains ou des données de préférence
- Méthodes : RLHF, DPO, ORPO
- Crée des modèles utiles, inoffensifs et honnêtes
Exemple du monde réel
Disons que vous construisez un bot de support client pour une entreprise de logiciels :
Sans ajustement fin
Le modèle de base pourrait :
- Donner des réponses génériques et longues
- Ne pas connaître les fonctionnalités de votre produit
- Utiliser un ton incohérent
- Ignorer la terminologie spécifique de votre entreprise
Avec ajustement fin
Le modèle personnalisé peut :
- Répondre de manière concise dans le style de votre entreprise
- Référencer correctement les fonctionnalités spécifiques du produit
- Suivre les modèles de réponse de votre équipe de support
- Escalader de manière appropriée si nécessaire
# Exemple de données d'entraînement pour un bot de support
examples = [
{
"instruction": "Le client demande des informations sur les prix",
"input": "Combien coûte le plan Pro ?",
"output": "Excellente question ! Notre plan Pro coûte 29 $/mois lorsqu'il est facturé annuellement, ou 35 $/mois pour une facturation mensuelle. Il inclut des projets illimités, un support prioritaire et des analyses avancées. Souhaitez-vous que je vous explique certaines fonctionnalités spécifiques ?"
},
# ... des centaines d'autres exemples
]
Points clés à retenir
✅ L'ajustement fin adapte les modèles pré-entraînés à des tâches ou domaines spécifiques
✅ Il s'appuie sur l'apprentissage par transfert—tirant parti des connaissances issues du pré-entraînement
✅ Différentes méthodes existent (complet, PEFT, ajustement par instruction, alignement)
✅ L'ajustement fin est puissant mais pas toujours la bonne solution
✅ Le processus implique : modèle de base → vos données → entraînement → modèle personnalisé
Prochaines étapes
Maintenant que vous comprenez ce qu'est l'ajustement fin, explorons quand c'est le bon choix dans Chapitre 2 : Quand ajuster finement vs utiliser RAG.
Vérification rapide
Avant de continuer, assurez-vous de pouvoir répondre :
- Quelle est la relation entre le pré-entraînement et l'ajustement fin ?
- Quelles sont trois choses que l'ajustement fin peut aider un modèle à apprendre ?
- Quelle est la différence entre l'ajustement fin complet et le PEFT ?