?
GuideavancéVérifié le 2025-05

Fine-tuning GPT : guide pratique

Quand et comment fine-tuner un modèle OpenAI, de la préparation des données au déploiement.

Quand fine-tuner un modèle ?

Le fine-tuning consiste à spécialiser un modèle pré-entraîné sur vos propres données. Avant de fine-tuner, vérifiez que le prompt engineering seul ne suffit pas. Le fine-tuning est pertinent quand :

  • Vous avez besoin d'un style ou ton très spécifique
  • Le prompt engineering atteint ses limites (trop d'exemples nécessaires)
  • Vous voulez réduire la taille du prompt (et donc les coûts)
  • Vous avez des centaines d'exemples de qualité

Modèles disponibles pour le fine-tuning

  • gpt-4o-mini : Le plus économique, excellent rapport qualité/prix
  • gpt-4o : Pour les tâches nécessitant les meilleures performances

Préparer les données d'entraînement

Format JSONL

Chaque ligne est un exemple de conversation complet :

{"messages": [{"role": "system", "content": "Tu es un assistant de support technique."}, {"role": "user", "content": "Mon imprimante ne fonctionne pas"}, {"role": "assistant", "content": "Je vais vous aider. Commençons par vérifier que l'imprimante est bien allumée et connectée..."}]}
{"messages": [{"role": "system", "content": "Tu es un assistant de support technique."}, {"role": "user", "content": "Je n'arrive pas à installer le driver"}, {"role": "assistant", "content": "Voici la procédure d'installation étape par étape..."}]}

Nombre d'exemples recommandé

  • Minimum : 10 exemples
  • Recommandé : 50-100 pour de bons résultats
  • Optimal : 200+ pour une spécialisation poussée

Qualité des données

  • Chaque exemple doit être un échange idéal
  • Diversifiez les cas d'usage couverts
  • Assurez la cohérence du format et du ton
  • Vérifiez qu'il n'y a pas de contradictions

Lancer un fine-tuning

import OpenAI from "openai";
import fs from "fs";

const client = new OpenAI();

// 1. Uploader le fichier d'entraînement
const file = await client.files.create({
  file: fs.createReadStream("training_data.jsonl"),
  purpose: "fine-tune"
});

// 2. Créer le job de fine-tuning
const job = await client.fineTuning.jobs.create({
  training_file: file.id,
  model: "gpt-4o-mini-2024-07-18",
  hyperparameters: {
    n_epochs: 3
  }
});

// 3. Suivre l'avancement
const status = await client.fineTuning.jobs.retrieve(job.id);
console.log(status.status); // running, succeeded, failed

Utiliser le modèle fine-tuné

const response = await client.chat.completions.create({
  model: "ft:gpt-4o-mini-2024-07-18:my-org::abc123",
  messages: [
    { role: "user", content: "Mon écran reste noir" }
  ]
});

Hyperparamètres

  • n_epochs : Nombre de passes sur les données (1-10, défaut auto)
  • batch_size : Taille des lots (défaut auto)
  • learning_rate_multiplier : Ajustement du taux d'apprentissage (défaut auto)

Dans la plupart des cas, les valeurs par défaut (auto) fonctionnent bien.

Évaluation et itération

  • Fournissez un fichier de validation pour suivre les métriques pendant l'entraînement
  • Comparez avec le modèle de base sur un jeu de test
  • Itérez sur les données plutôt que sur les hyperparamètres
  • Ajoutez des exemples pour les cas d'usage mal gérés

Coûts

Le fine-tuning a un coût d'entraînement (par token dans les données) plus un coût d'inférence légèrement supérieur au modèle de base. Consultez la page de tarification pour les prix à jour.

Sources

APIfine-tuningspécialisation