Aller au contenu principal

Lancer un fine-tuning via l'API

Vue d’ensemble du processus

Lancer un fine-tuning via l’API OpenAI se fait en trois étapes : uploader votre fichier de données, créer un job de fine-tuning, puis attendre que l’entraînement se termine. Tout passe par le SDK Python officiel.

Étape 1 : Installer et configurer le SDK

# Installation
# pip install openai

from openai import OpenAI

# Le client utilise automatiquement la variable OPENAI_API_KEY
client = OpenAI()

Assurez-vous que votre variable d’environnement OPENAI_API_KEY est définie. En production, ne codez jamais votre clé en dur dans le code.

Étape 2 : Uploader le fichier d’entraînement

# Upload du fichier d'entraînement
training_file = client.files.create(
    file=open("training_data.jsonl", "rb"),
    purpose="fine-tune"
)

print(f"ID du fichier : {training_file.id}")
print(f"Statut : {training_file.status}")

# Optionnel : upload du fichier de validation
validation_file = client.files.create(
    file=open("validation_data.jsonl", "rb"),
    purpose="fine-tune"
)

print(f"ID validation : {validation_file.id}")

Le fichier passe par une phase de traitement côté OpenAI. Attendez que le statut soit processed avant de lancer le job.

Étape 3 : Créer le job de fine-tuning

job = client.fine_tuning.jobs.create(
    training_file=training_file.id,
    validation_file=validation_file.id,  # optionnel mais recommandé
    model="gpt-5.3-mini",  # ou "gpt-5.4-mini"
    suffix="mon-assistant-v1"  # suffixe pour identifier votre modèle
)

print(f"Job ID : {job.id}")
print(f"Statut : {job.status}")
print(f"Modèle de base : {job.model}")

Le paramètre suffix est ajouté au nom de votre modèle fine-tuné. Par exemple, si vous utilisez "mon-assistant-v1", le modèle résultant sera nommé ft:gpt-5.3-mini:votre-org::mon-assistant-v1:xxxxxxxx.

Suivre l’avancement du job

Vérifier le statut

# Récupérer le statut du job
job = client.fine_tuning.jobs.retrieve(job.id)
print(f"Statut : {job.status}")
# Statuts possibles : validating_files, queued, running, succeeded, failed, cancelled

Lister les événements

# Voir les événements du job
events = client.fine_tuning.jobs.list_events(
    fine_tuning_job_id=job.id,
    limit=20
)

for event in events.data:
    print(f"[{event.created_at}] {event.message}")

Script de suivi complet

import time

def suivre_job(client: OpenAI, job_id: str, intervalle: int = 30):
    """Suit un job de fine-tuning jusqu'à sa complétion."""
    while True:
        job = client.fine_tuning.jobs.retrieve(job_id)
        print(f"Statut : {job.status}")

        if job.status == "succeeded":
            print(f"Modèle fine-tuné : {job.fine_tuned_model}")
            return job

        if job.status == "failed":
            print(f"Échec : {job.error}")
            return job

        if job.status == "cancelled":
            print("Job annulé.")
            return job

        time.sleep(intervalle)

# Utilisation
job_final = suivre_job(client, job.id)

Utiliser le modèle fine-tuné

Une fois le job terminé avec succès, vous pouvez utiliser votre modèle exactement comme un modèle standard :

response = client.responses.create(
    model=job_final.fine_tuned_model,  # ex: "ft:gpt-5.3-mini:org::suffix:xxxxxxxx"
    input="Bonjour, j'ai un problème avec ma commande."
)

print(response.output_text)

Gérer les jobs

# Lister tous vos jobs de fine-tuning
jobs = client.fine_tuning.jobs.list(limit=10)
for j in jobs.data:
    print(f"{j.id} | {j.status} | {j.model} | {j.fine_tuned_model}")

# Annuler un job en cours
client.fine_tuning.jobs.cancel(job.id)

Coûts et durée

L’entraînement est facturé au nombre de tokens traités. La durée dépend de la taille de vos données et du nombre d’epochs :

  • 50 exemples : quelques minutes
  • 500 exemples : 15 à 30 minutes
  • 5 000 exemples : 1 à 2 heures

Les prix exacts varient selon le modèle choisi. Consultez la page de tarification OpenAI pour les tarifs actuels.

Points clés à retenir

  • Le workflow est : upload fichier, créer job, attendre, utiliser le modèle
  • Ajoutez un suffix descriptif pour identifier facilement vos modèles
  • Utilisez toujours un fichier de validation pour évaluer la qualité
  • Le modèle fine-tuné s’utilise exactement comme le modèle de base via l’API
  • Gardez les IDs de vos jobs et modèles — vous en aurez besoin pour le versioning