Aller au contenu principal

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 :

  1. Collecte de données : Des trillions de tokens provenant de livres, sites web, code, etc.
  2. Prédiction du prochain token : Le modèle apprend à prédire ce qui vient ensuite
  3. Acquisition de connaissances : Le modèle développe une compréhension du langage, des faits, du raisonnement
  4. Capacités générales : Lecture, écriture, résumé, codage, et plus
Exemple

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​

AspectPré-entraînementAjustement fin
Taille des donnéesTrillions de tokensMilliers à millions
CalculMilliers de GPU, mois1-8 GPU, heures à jours
ObjectifCompréhension générale du langageAdaptation à des tâches spécifiques
Qui le faitGrands laboratoires d'IAQuiconque a accès à un GPU
CoûtMillions de dollarsCentaines à 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 :

  1. Quelle est la relation entre le pré-entraînement et l'ajustement fin ?
  2. Quelles sont trois choses que l'ajustement fin peut aider un modèle à apprendre ?
  3. Quelle est la différence entre l'ajustement fin complet et le PEFT ?