Table des matières

Fine-tuning de modèles de langage (LLM)

Introduction

Le fine-tuning (ajustement fin) représente l'étape suivante dans la personnalisation des modèles de langage, après le prompt engineering et le RAG. Cette technique permet d'adapter un modèle pré-entraîné à des tâches spécifiques ou à un domaine particulier en poursuivant son entraînement sur un ensemble de données ciblées.

Ce guide explore les niveaux de personnalisation des LLM, le processus de fine-tuning, et comment le mettre en œuvre concrètement.

Les niveaux de personnalisation des LLM

À mesure que votre organisation intègre l'IA, il arrivera un moment où l'application ChatGPT de base ne suffira plus. Il existe plusieurs niveaux de personnalisation des modèles fondamentaux. Voici les meilleures pratiques à suivre :

Niveau 1 : Prompt Engineering

Complexité : Faible Performance potentielle : Modérée

Optimisez les performances de votre modèle en créant les meilleurs prompts possibles. C'est la première étape et la plus accessible.

Avantages :

Limitations :

Quand l'utiliser : Pour tous les cas d'usage en premier lieu, avant d'envisager d'autres approches.

Niveau 2 : RAG (Retrieval-Augmented Generation)

Complexité : Modérée Performance potentielle : Élevée

Connectez des sources de données externes au modèle. L'agent récupère les informations pertinentes avant de générer une réponse, réduisant les erreurs et améliorant la pertinence.

Avantages :

Limitations :

Quand l'utiliser : Lorsque vous devez exploiter des données propriétaires ou spécifiques à votre domaine.

Niveau 3 : Fine-tuning

Complexité : Élevée Performance potentielle : Très élevée

Ajustez les poids du modèle en continuant son entraînement sur un dataset spécifique. Le modèle “apprend” réellement vos cas d'usage.

Avantages :

Limitations :

Quand l'utiliser : Lorsque le prompt engineering a atteint ses limites et que vous avez des besoins très spécifiques.

Niveau 4 : Continued Training (Entraînement continu)

Complexité : Très élevée Performance potentielle : Maximale

Il s'agit d'entraîner le modèle sur un dataset personnalisé qui fait partie intégrante du modèle. Cela va au-delà du fine-tuning pour créer une véritable spécialisation.

Avantages :

Limitations :

Quand l'utiliser : Pour des besoins très spécifiques où le retour sur investissement justifie l'investissement massif.

Qu'est-ce que le fine-tuning ?

Le fine-tuning est le processus d'adaptation d'un modèle pré-entraîné à une tâche ou un domaine spécifique en poursuivant son entraînement sur un ensemble de données ciblées.

Imaginez qu'un LLM est comme un étudiant qui a reçu une éducation générale. Le fine-tuning, c'est lui donner une formation spécialisée pour devenir expert dans un domaine particulier.

Quand le fine-tuning est-il nécessaire ?

Vous avez atteint les limites du prompt engineering et devez encore améliorer les performances. Le fine-tuning peut être une bonne solution si :

Cas d'usage concrets en entreprise

1. Automatisation du support client

Scénario Problème initial Solution Bénéfices
Une entreprise souhaite déployer un assistant virtuel pour gérer les demandes clients plus efficacement Le LLM générique ne comprend pas pleinement les produits, services ou jargon spécifiques de l'entreprise Fine-tuner le LLM sur les historiques d'interactions du service client, FAQs et documentation produits rend l'assistant plus apte à résoudre les problèmes, fournir des informations précises et comprendre le contexte des demandes Amélioration de la satisfaction client, réduction des délais de résolution, charge de travail réduite pour les agents humains

Exemple concret : Un opérateur télécom fine-tune un modèle sur 10 000 conversations de support. Le modèle apprend :

Résultat : 60% des demandes simples sont résolues automatiquement, avec un taux de satisfaction de 85%.

2. Personnalisation de contenu en e-commerce

Scénario Problème initial Solution Bénéfices
Une plateforme e-commerce vise à améliorer l'engagement des utilisateurs en fournissant des descriptions de produits et recommandations personnalisées Le LLM générique génère des descriptions et recommandations génériques qui ne résonnent pas avec les segments d'utilisateurs spécifiques Fine-tuner le LLM sur les données de comportement utilisateur, historique d'achats et avis produits permet au modèle de générer du contenu plus pertinent et personnalisé Augmentation des taux de conversion, amélioration de l'expérience utilisateur, fidélisation client en fournissant du contenu aligné avec les préférences individuelles

Exemple concret : Un site de mode fine-tune un modèle sur 50 000 descriptions de produits et leurs performances de vente. Le modèle apprend :

Résultat : +25% de taux de conversion sur les fiches produits générées par le modèle fine-tuné.

3. Analyse de documents financiers

Scénario Problème initial Solution Bénéfices
Une société de services financiers doit analyser et résumer de grands volumes de documents financiers (rapports de résultats, analyses de marché, dépôts réglementaires) Le LLM générique peut avoir du mal avec la terminologie spécialisée et les détails complexes typiques des documents financiers Fine-tuner le LLM sur un dataset de textes financiers (rapports passés, articles de presse financière, documents réglementaires) permet au modèle de mieux comprendre et traiter ces informations Résumés plus précis et perspicaces, temps de traitement réduits, capacités de prise de décision améliorées pour les analystes et parties prenantes

Exemple concret : Une banque d'investissement fine-tune un modèle sur 5 000 rapports financiers annotés. Le modèle apprend :

Résultat : Analyse de rapports 10x plus rapide, avec extraction automatique des KPIs et détection d'anomalies.

Comment créer un job de fine-tuning ?

Pour créer un job de fine-tuning, vous devrez :

  1. Construire un dataset
  2. Diviser ce dataset en ensemble d'entraînement (training set) et ensemble de test (test set)
  3. Entraîner le modèle de votre choix

Étape 1 : Construire un dataset

C'est la partie la plus difficile et la plus longue. Vous devrez construire manuellement un dataset qui décrit les prompts potentiels que le modèle verra en production, avec les réponses attendues.

Format du fichier : JSON Lines (.jsonl)

L'ensemble du dataset doit être construit dans un format de fichier spécifique appelé JSON Lines - extension .jsonl

Chaque ligne du fichier contient un objet JSON complet.

Format LightningAI

{"instruction": "Come up with a riddle", "input": "", "output": "What's full of keys but can't open a single lock?\nAnswer: A piano."}
{"instruction": "Describe the process of making a paper airplane.", "input": "", "output": "To make a paper airplane, start by folding a piece of paper in half along its width..."}
{"instruction": "Rewrite the given sentence using jargon pertaining to computer engineering.", "input": "We need to construct a data storage system.", "output": "We need to develop a relational database structure."}

Structure des objets :

Format OpenAI / Mistral

IMPORTANT : Selon la plateforme sur laquelle vous effectuerez votre fine-tuning, le format attendu peut différer.

Format pour OpenAI et Mistral :

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}

Exemples pratiques de construction de dataset

Exemple 1 : Assistant juridique

{"instruction": "Analyse ce contrat et identifie les clauses problématiques", "input": "[Texte du contrat]", "output": "J'ai identifié 3 clauses nécessitant votre attention :\n1. Clause 4.2 - Limitation de responsabilité excessive...\n2. Clause 7.1 - Période de préavis non conforme...\n3. Clause 9.3 - Clause de non-concurrence trop large..."}

Exemple 2 : Service client e-commerce

{"instruction": "Un client demande le remboursement d'un article défectueux reçu il y a 35 jours", "input": "Politique de retour : 30 jours", "output": "Je comprends votre frustration concernant cet article défectueux. Bien que notre politique standard soit de 30 jours, nous faisons une exception pour les produits défectueux. Je vais initier immédiatement votre remboursement. Vous recevrez un email de confirmation dans l'heure."}

Exemple 3 : Génération de descriptions produits

{"instruction": "Génère une description pour ce produit", "input": "Chaussures de running Nike Air Zoom Pegasus 40 - Noires - Pointure 42", "output": "Découvrez les Nike Air Zoom Pegasus 40, l'alliance parfaite entre confort et performance. Leur amorti réactif Nike Air vous propulse à chaque foulée, tandis que la tige en mesh respirant assure une ventilation optimale. Idéales pour vos entraînements quotidiens comme vos sorties longues, ces chaussures polyvalentes accompagnent tous les coureurs. Disponibles en noir élégant, pointure 42."}

Conseils pour créer un dataset de qualité

Diversité : Couvrez différents types de requêtes et scénarios

Cohérence : Maintenez un style et une qualité uniformes

Qualité > Quantité : Mieux vaut 100 exemples excellents que 1000 moyens

Documentation du domaine : Incluez le vocabulaire et les concepts spécifiques

Étape 2 : Division Train/Test

Une fois votre dataset construit, vous devrez le diviser en deux parties :

Ensemble d'entraînement (Training set) : Les données que le modèle utilisera pour s'entraîner

Ensemble de test (Test set) : Les données que le modèle utilisera pour évaluer ses performances

Exemple de division :

Si vous avez 100 exemples :

Astuce : Assurez-vous que le test set représente bien la diversité de vos cas d'usage. Ne mettez pas tous les cas faciles dans le train et tous les cas difficiles dans le test (ou vice versa).

Quelle est la taille idéale du dataset ?

NOTE : Il existe deux règles simples à suivre :

  1. Plus de données, c'est mieux
  2. Garbage in, garbage out (données de mauvaise qualité = résultats de mauvaise qualité)

En suivant ces deux règles, essayez toujours de construire le plus grand dataset possible, mais aussi propre que possible. Par “propre”, nous entendons des prompts réels et des réponses attendues pertinentes pour l'apprentissage du modèle.

Recommandation OpenAI :

Recommandations générales par type de tâche :

Type de tâche Minimum recommandé Idéal
Style et ton 50-100 exemples 500-1000
Tâche simple (classification) 100-200 exemples 1000-2000
Tâche complexe (analyse) 500-1000 exemples 5000-10000
Génération créative 1000-2000 exemples 10000+

Étape 3 : Lancer le job de fine-tuning

Une fois votre dataset prêt, vous avez plusieurs options de plateformes pour effectuer le fine-tuning.

Plateformes de fine-tuning

LightningAI

LightningAI est une plateforme qui facilite le fine-tuning de modèles open-source.

Avantages :

Limitations :

Modèles disponibles :

OpenAI

OpenAI Platform permet de fine-tuner les modèles GPT.

IMPORTANT : Le fine-tuning OpenAI n'est PAS gratuit

Le fine-tuning sur OpenAI a un coût (généralement moins de 1€ pour un petit dataset, mais peut monter rapidement). Les jobs de fine-tuning ne sont pas inclus dans l'abonnement GPT+. Vous devrez payer en plus.

Tarification approximative (à vérifier sur le site OpenAI) :

Avantages :

Limitations :

Modèles disponibles :

Mistral AI

Mistral AI propose également du fine-tuning pour ses modèles.

Avantages :

Modèles disponibles :

Alternatives open-source

Hugging Face AutoTrain : Interface no-code pour fine-tuner des modèles

Google Colab : Pour les plus techniques

RunPod / Vast.ai : Location de GPUs à bas coût

Processus de fine-tuning étape par étape

1. Préparation

# Vérifier le format du dataset
head -n 3 train.jsonl
 
# Vérifier qu'il n'y a pas d'erreurs JSON
python -m json.tool train.jsonl > /dev/null

2. Upload du dataset

Sur OpenAI :

# Via l'API
openai api files.create -f train.jsonl -p fine-tune
openai api files.create -f test.jsonl -p fine-tune

3. Lancement du fine-tuning

openai api fine_tunes.create \
  -t <TRAIN_FILE_ID> \
  -v <TEST_FILE_ID> \
  -m gpt-3.5-turbo \
  --suffix "mon-modele-support-client"

4. Monitoring

Le fine-tuning peut prendre de quelques minutes à plusieurs heures selon :

Surveillez les métriques :

5. Évaluation

Une fois le fine-tuning terminé, testez le modèle :

import openai
 
response = openai.ChatCompletion.create(
    model="ft:gpt-3.5-turbo:mon-org:mon-modele:abc123",
    messages=[
        {"role": "user", "content": "Question de test"}
    ]
)
 
print(response.choices[0].message.content)

Comparez avec le modèle de base pour mesurer l'amélioration.

Bonnes pratiques

Qualité du dataset

Diversifier les exemples : Couvrez tous les cas d'usage possibles

Valider manuellement : Vérifiez chaque exemple avant inclusion

Éviter les biais : Assurez une représentation équilibrée

Documenter : Gardez trace des décisions de création du dataset

Éviter la duplication : Pas d'exemples quasi-identiques

Éviter les contradictions : Des exemples qui se contredisent vont perturber l'apprentissage

Évaluation rigoureuse

Tests quantitatifs :

Tests qualitatifs :

A/B Testing :

Gestion des coûts

Optimiser le dataset :

Choisir le bon modèle :

Monitorer l'usage :

Erreurs courantes à éviter

Overfitting (surapprentissage) :

Dataset trop petit :

Mauvaise qualité des données :

Ignorer le test set :

Mauvais équilibrage :

Fine-tuning vs autres approches

Critère Prompt Engineering RAG Fine-tuning
Complexité Faible Moyenne Élevée
Coût Gratuit Moyen (infrastructure) Élevé (données + compute)
Temps de mise en œuvre Immédiat Jours/semaines Semaines/mois
Flexibilité Très flexible Flexible Rigide (nécessite réentraînement)
Performance Bonne Très bonne Excellente (sur tâche spécifique)
Maintenance Facile Moyenne Complexe
Données requises Aucune Documents/connaissances Dataset annoté (50-10000+ exemples)

Quand utiliser quoi ?

Considérations éthiques et légales

Propriété intellectuelle

Protection des données

Biais et équité

Ressources complémentaires

Documentation officielle :

Tutoriels pratiques :

Outils :

Datasets d'exemple :

Conclusion

Le fine-tuning représente une technique puissante pour adapter les modèles de langage à des besoins spécifiques. Bien qu'il nécessite plus d'investissement en temps et en ressources que le prompt engineering ou le RAG, il permet d'atteindre des niveaux de performance supérieurs sur des tâches ciblées.

Points clés à retenir :

Le fine-tuning n'est pas une solution miracle, mais utilisé correctement, il peut transformer un modèle générique en un assistant spécialisé parfaitement adapté à vos besoins métier.