Passer au contenu principal
Enregistrez dans W&B les métriques et la configuration de fine-tuning de votre modèle OpenAI GPT-3.5 ou GPT-4. Exploitez l’écosystème W&B pour suivre vos expériences, modèles et jeux de données de fine-tuning, et partager vos résultats avec vos collègues.
Voir la documentation OpenAI pour obtenir la liste des modèles que vous pouvez soumettre à un fine-tuning.
Voir la section Intégration W&B dans la documentation OpenAI pour plus d’informations sur l’intégration de W&B avec OpenAI pour le fine-tuning.

Installer ou mettre à jour OpenAI Python API

L’intégration W&B OpenAI Fine-tuning fonctionne avec OpenAI à partir de la version 1.0. Voir la documentation PyPI pour accéder à la dernière version de la bibliothèque OpenAI Python API. Pour installer OpenAI Python API, exécutez :
pip install openai
Si l’API Python d’OpenAI est déjà installée, vous pouvez la mettre à jour avec :
pip install -U openai

Synchronisez les résultats de votre fine-tuning OpenAI

Intégrez W&B à l’API de fine-tuning d’OpenAI pour enregistrer dans W&B les métriques et la configuration de votre fine-tuning. Pour ce faire, utilisez la classe WandbLogger du module wandb.integration.openai.fine_tuning.
from wandb.integration.openai.fine_tuning import WandbLogger

# Logique de fine-tuning

WandbLogger.sync(fine_tune_job_id=FINETUNE_JOB_ID)
Fonctionnalité d’analyse automatique d’OpenAI

Synchronisez vos fine-tunings

Synchronisez vos résultats depuis votre script
from wandb.integration.openai.fine_tuning import WandbLogger

# commande en une ligne
WandbLogger.sync()

# passage de paramètres facultatifs
WandbLogger.sync(
    fine_tune_job_id=None,
    num_fine_tunes=None,
    project="OpenAI-Fine-Tune",
    entity=None,
    overwrite=False,
    model_artifact_name="model-metadata",
    model_artifact_type="model",
    **kwargs_wandb_init
)

Référence

ArgumentDescription
fine_tune_job_idIl s’agit de l’ID OpenAI Fine-Tune que vous obtenez lorsque vous créez votre job de fine-tuning avec client.fine_tuning.jobs.create. Si cet argument vaut None (valeur par défaut), tous les jobs OpenAI de fine-tuning qui n’ont pas encore été synchronisés le seront avec W&B.
openai_clientPassez un client OpenAI initialisé à sync. Si aucun client n’est fourni, il est initialisé par le logger lui-même. Par défaut, sa valeur est None.
num_fine_tunesSi aucun ID n’est fourni, tous les fine-tunings non synchronisés seront enregistrés dans W&B. Cet argument vous permet de sélectionner le nombre de fine-tunings récents à synchroniser. Si num_fine_tunes vaut 5, les 5 fine-tunings les plus récents sont sélectionnés.
projectnom du projet W&B dans lequel seront enregistrés vos métriques, modèles, données, etc. de fine-tuning. Par défaut, le nom du projet est “OpenAI-Fine-Tune.”
entityNom d’utilisateur W&B ou nom d’équipe vers lequel vous envoyez les runs. Par défaut, votre entité par défaut est utilisée, généralement votre nom d’utilisateur.
overwriteForce la journalisation et écrase le run wandb existant du même job de fine-tuning. Par défaut, cette valeur est False.
wait_for_job_successUne fois qu’un job OpenAI de fine-tuning est lancé, il prend généralement un certain temps. Pour garantir que vos métriques soient enregistrées dans W&B dès que le job de fine-tuning est terminé, ce paramètre vérifie toutes les 60 secondes si le statut du job de fine-tuning passe à succeeded. Dès que le job de fine-tuning est détecté comme réussi, les métriques sont automatiquement synchronisées avec W&B. La valeur par défaut est True.
model_artifact_nameLe nom de l’artifact de modèle enregistré. La valeur par défaut est "model-metadata".
model_artifact_typeLe type de l’artifact de modèle enregistré. La valeur par défaut est "model".
**kwargs_wandb_initTout argument supplémentaire transmis directement à wandb.init()

Gestion des versions et visualisation des jeux de données

Gestion des versions

Les données d’entraînement et de validation que vous téléversez dans OpenAI pour le Fine-tuning sont automatiquement enregistrées dans W&B Artifacts afin de faciliter la gestion des versions. Ci-dessous, vous voyez une vue du fichier d’entraînement dans Artifacts. Vous pouvez y voir le run W&B qui a enregistré ce fichier, la date à laquelle il a été enregistré, la version du jeu de données correspondante, les métadonnées et la traçabilité du DAG, des données d’entraînement jusqu’au modèle entraîné.
W&B Artifacts avec des jeux de données d'entraînement

Visualisation

Les jeux de données s’affichent dans W&B Tables, ce qui vous permet de les explorer, d’y effectuer des recherches et d’interagir avec eux. Consultez ci-dessous les exemples d’entraînement visualisés avec W&B Tables.
Données OpenAI

Le modèle affiné et la gestion des versions des modèles

OpenAI vous fournit un ID du modèle affiné. Comme nous n’avons pas accès aux poids du modèle, WandbLogger crée un fichier model_metadata.json contenant tous les détails du modèle (hyperparamètres, ID des fichiers de données, etc.), ainsi que l’ID `fine_tuned_model“, puis l’enregistre en tant qu’Artifact W&B. Cet Artifact de modèle (métadonnées) peut ensuite être lié à un modèle dans le W&B Registry.
Métadonnées du modèle OpenAI

Questions fréquentes

Comment puis-je partager les résultats de mon fine-tuning avec mon équipe dans W&B ?

Enregistrez vos jobs de fine-tuning sur votre compte Teams avec :
WandbLogger.sync(entity="YOUR_TEAM_NAME")

Comment puis-je organiser mes runs ?

Vos runs W&B sont automatiquement organisés et peuvent être filtrés/triés en fonction de n’importe quel paramètre de configuration, comme le type de job, le modèle de base, le taux d’apprentissage, le nom du fichier d’entraînement et tout autre hyperparamètre. De plus, vous pouvez renommer vos runs, ajouter des notes ou créer des tags pour les regrouper. Une fois que tout vous convient, vous pouvez enregistrer votre Workspace et l’utiliser pour créer un report, en important des données depuis vos runs et vos Artifacts enregistrés (fichiers d’entraînement et de validation).

Comment puis-je accéder à mon modèle affiné ?

L’ID du modèle affiné est enregistré dans W&B, dans les Artifacts (model_metadata.json), ainsi que dans la configuration.
import wandb
    
with wandb.init(project="OpenAI-Fine-Tune", entity="YOUR_TEAM_NAME") as run:
    ft_artifact = run.use_artifact("ENTITY/PROJECT/model_metadata:VERSION")
    artifact_dir = ft_artifact.download()
VERSION correspond à l’un des éléments suivants :
  • un numéro de version comme v2
  • l’ID du fine-tuning, par exemple ft-xxxxxxxxx
  • un alias ajouté automatiquement, comme latest, ou ajouté manuellement
Vous pouvez ensuite accéder à l’ID de fine_tuned_model en lisant le fichier téléchargé model_metadata.json.

Que faire si un fine-tuning ne s’est pas synchronisé correctement ?

Si un fine-tuning n’a pas été enregistré correctement dans W&B, vous pouvez utiliser overwrite=True et passer l’ID du job de fine-tuning :
WandbLogger.sync(
    fine_tune_job_id="FINE_TUNE_JOB_ID",
    overwrite=True,
)

Puis-je suivre mes jeux de données et mes modèles avec W&B ?

Les données d’entraînement et de validation sont automatiquement enregistrées dans W&B sous forme d’Artifacts. Les métadonnées, y compris l’ID du modèle affiné, sont également enregistrées sous forme d’Artifacts. Vous pouvez toujours piloter le pipeline à l’aide d’API wandb de bas niveau comme wandb.Artifact, wandb.Run.log, etc. Cela vous permet d’assurer une traçabilité complète de vos données et de vos modèles.
FAQ OpenAI sur le suivi

Ressources