> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-codex-link-agent-evals-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Effectuez le fine-tuning de modèles OpenAI avec W&B pour journaliser les métriques d'entraînement, surveiller les jobs et comparer les performances du modèle au fil du temps.

# Fine-tuning OpenAI

export const ColabLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="colab-link">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z" />
    </svg>
    Essayer sur Colab
  </a>;

<ColabLink url="https://wandb.me/openai-colab" />

Cette page explique comment enregistrer dans W\&B les métriques et la configuration de fine-tuning de votre modèle OpenAI GPT-3.5 ou GPT-4. En intégrant W\&B à l'API de fine-tuning d'OpenAI, vous pouvez suivre vos expériences, modèles et jeux de données de fine-tuning au même endroit et partager les résultats avec vos collègues. Utilisez cette intégration lorsque vous effectuez le fine-tuning de modèles OpenAI et souhaitez un suivi centralisé des expériences ainsi qu'un contrôle de version sur les données d'entraînement et les modèles obtenus.

<Note>
  Voir la [documentation OpenAI](https://platform.openai.com/docs/guides/fine-tuning/which-models-can-be-fine-tuned) pour obtenir la liste des modèles pour lesquels vous pouvez effectuer le fine-tuning.
</Note>

Voir la section [Intégration W\&B](https://developers.openai.com/cookbook/examples/third_party/gpt_finetuning_with_wandb) dans la documentation OpenAI pour plus d'informations sur l'intégration de W\&B avec OpenAI pour le fine-tuning.

<div id="install-or-update-openai-python-api">
  ## Installer ou mettre à jour API Python OpenAI
</div>

Avant de synchroniser les résultats de fine-tuning, assurez-vous qu’une version compatible du client Python OpenAI est installée. 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 [API Python OpenAI](https://pypi.org/project/openai/).

Pour installer API Python OpenAI, exécutez :

```bash theme={null}
pip install openai
```

Si l’API Python d’OpenAI est déjà installée, mettez-la à jour avec :

```bash theme={null}
pip install -U openai
```

<div id="sync-your-openai-fine-tuning-results">
  ## Synchronisez vos résultats de fine-tuning OpenAI
</div>

Cette section explique comment envoyer les métriques et la configuration d’un job de fine-tuning OpenAI vers W\&B afin de pouvoir les consulter aux côtés de vos autres Experiments. Pour ce faire, utilisez la classe `WandbLogger` du module `wandb.integration.openai.fine_tuning`.

```python theme={null}
from wandb.integration.openai.fine_tuning import WandbLogger

# Logique de fine-tuning

WandbLogger.sync(fine_tune_job_id=FINETUNE_JOB_ID)
```

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-codex-link-agent-evals-docs/dCnBB7xc0m6Fml3G/images/integrations/open_ai_auto_scan.png?fit=max&auto=format&n=dCnBB7xc0m6Fml3G&q=85&s=f63626e8ddee744625642e0d9308b0b9" alt="Fonctionnalité d’analyse automatique d’OpenAI" width="1600" height="779" data-path="images/integrations/open_ai_auto_scan.png" />
</Frame>

<div id="sync-your-fine-tunes">
  ### Synchronisez vos fine-tunings
</div>

Synchronisez vos résultats depuis votre script. L'exemple suivant montre à la fois l'appel minimal en une seule ligne et l'ensemble complet des paramètres facultatifs que vous pouvez transmettre pour définir le comportement de la synchronisation.

```python theme={null}
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
)
```

<div id="reference">
  ### Référence
</div>

Le tableau suivant décrit chaque argument accepté par `WandbLogger.sync`.

| Argument               | Description                                                                                                                                                                                                                                                                                                                                                                                                 |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fine_tune_job_id`     | L’ID de fine-tuning OpenAI que vous obtenez lorsque vous créez votre job de fine-tuning avec `client.fine_tuning.jobs.create`. Si cet argument vaut `None` (par défaut), W\&B synchronise tous les jobs de fine-tuning OpenAI qui n’ont pas encore été synchronisés.                                                                                                                                        |
| `openai_client`        | Transmettez un client OpenAI initialisé à `sync`. Si vous ne fournissez pas de client, le logger en initialise un. La valeur par défaut est `None`.                                                                                                                                                                                                                                                         |
| `num_fine_tunes`       | Si vous ne fournissez pas d’ID, W\&B journalise tous les fine-tunings non synchronisés. Cet argument vous permet de sélectionner le nombre de fine-tunings les plus récents à synchroniser. Si `num_fine_tunes` vaut 5, W\&B sélectionne les 5 fine-tunings les plus récents.                                                                                                                               |
| `project`              | Nom du projet W\&B dans lequel W\&B journalise les métriques, modèles, données, etc. de votre fine-tuning. Par défaut, le nom du projet est `"OpenAI-Fine-Tune"`.                                                                                                                                                                                                                                           |
| `entity`               | Nom d’utilisateur W\&B ou nom d’équipe où vous envoyez les runs. Par défaut, W\&B utilise votre entité par défaut, qui correspond généralement à votre nom d’utilisateur.                                                                                                                                                                                                                                   |
| `overwrite`            | Force la journalisation et remplace le run `wandb` existant pour le même job de fine-tuning. La valeur par défaut est `False`.                                                                                                                                                                                                                                                                              |
| `wait_for_job_success` | Un job de fine-tuning OpenAI prend un certain temps après son démarrage. Pour garantir que W\&B journalise vos métriques dès que le job de fine-tuning se termine, ce paramètre vérifie toutes les 60 secondes si le statut du job de fine-tuning passe à `succeeded`. Une fois le job de fine-tuning terminé avec succès, W\&B synchronise automatiquement les métriques. La valeur par défaut est `True`. |
| `model_artifact_name`  | Le nom de l’artifact de modèle enregistré. La valeur par défaut est `"model-metadata"`.                                                                                                                                                                                                                                                                                                                     |
| `model_artifact_type`  | Le type de l’artifact de modèle enregistré. La valeur par défaut est `"model"`.                                                                                                                                                                                                                                                                                                                             |
| `**kwargs_wandb_init`  | Tout argument supplémentaire transmis directement à [`wandb.init()`](/fr/models/ref/python/functions/init).                                                                                                                                                                                                                                                                                                 |

<div id="dataset-versioning-and-visualization">
  ## Gestion des versions et visualisation des jeux de données
</div>

Lorsque vous synchronisez un job de fine-tuning, W\&B capture également les données d'entraînement et de validation afin que vous puissiez en gérer les versions et les explorer de manière interactive. Les sous-sections suivantes décrivent les éléments suivis par W\&B et comment les consulter.

<div id="versioning">
  ### Gestion des versions
</div>

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. L'image suivante montre 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é.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-codex-link-agent-evals-docs/dCnBB7xc0m6Fml3G/images/integrations/openai_data_artifacts.png?fit=max&auto=format&n=dCnBB7xc0m6Fml3G&q=85&s=c51e73f55d8dbf2f0a019677854ae3e0" alt="W&B Artifacts avec des jeux de données d'entraînement" width="3450" height="1166" data-path="images/integrations/openai_data_artifacts.png" />
</Frame>

<div id="visualization">
  ### Visualisation
</div>

W\&B affiche les jeux de données dans W\&B Tables, ce qui vous permet de les explorer, d’y effectuer des recherches et d’interagir avec eux. L’image suivante montre les exemples d’entraînement visualisés avec W\&B Tables.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-codex-link-agent-evals-docs/dCnBB7xc0m6Fml3G/images/integrations/openai_data_visualization.png?fit=max&auto=format&n=dCnBB7xc0m6Fml3G&q=85&s=a759c7419ddc577658060f9fdfa4932e" alt="Données OpenAI" width="2758" height="1294" data-path="images/integrations/openai_data_visualization.png" />
</Frame>

<div id="the-fine-tuned-model-and-model-versioning">
  ## Le modèle affiné et la gestion des versions des modèles
</div>

OpenAI ne rend pas accessibles les poids sous-jacents d’un modèle affiné ; W\&B suit donc le modèle en capturant plutôt ses métadonnées. OpenAI vous fournit un ID du modèle affiné. Comme vous n’avez 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](/fr/models/registry/).

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-codex-link-agent-evals-docs/dCnBB7xc0m6Fml3G/images/integrations/openai_model_metadata.png?fit=max&auto=format&n=dCnBB7xc0m6Fml3G&q=85&s=04c26e3b6b9f66ecd414ac89287c2da0" alt="Métadonnées du modèle OpenAI" width="3450" height="1512" data-path="images/integrations/openai_model_metadata.png" />
</Frame>

<div id="frequently-asked-questions">
  ## Questions fréquentes
</div>

Les sections suivantes répondent aux questions courantes sur le partage, l’organisation et la récupération des runs de fine-tuning synchronisés depuis OpenAI.

<div id="share-fine-tune-results-with-your-team">
  ### Partagez les résultats obtenus en effectuant le fine-tuning avec votre équipe
</div>

Enregistrez vos jobs de fine-tuning sur votre compte Teams avec :

```python theme={null}
WandbLogger.sync(entity="<your-team-name>")
```

<div id="organize-your-runs">
  ### Organisez vos runs
</div>

W\&B organise automatiquement vos runs. Vous pouvez les filtrer et les trier 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.

Vous pouvez également renommer vos runs, ajouter des notes ou créer des tags pour les regrouper.

Une fois que tout vous convient, enregistrez votre Workspace et utilisez-le 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).

<div id="access-your-fine-tuned-model">
  ### Accédez à votre modèle affiné
</div>

W\&B journalise l’ID du modèle affiné dans les Artifacts (`model_metadata.json`) et dans la configuration.

```python theme={null}
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()
```

Le paramètre fictif `<version>` peut prendre l'une des valeurs suivantes :

* 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 obtenir l'ID `fine_tuned_model` en lisant le fichier `model_metadata.json` téléchargé.

<div id="recover-a-fine-tune-that-didnt-sync">
  ### Récupérer un fine-tuning qui ne s’est pas synchronisé
</div>

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 :

```python theme={null}
WandbLogger.sync(
    fine_tune_job_id="<fine-tune-job-id>",
    overwrite=True,
)
```

<div id="track-datasets-and-models-with-wb">
  ### Suivre les jeux de données et les modèles avec W\&B
</div>

W\&B enregistre automatiquement les données d’entraînement et de validation sous forme d’Artifacts. W\&B enregistre également les métadonnées, y compris l’ID du modèle affiné, sous forme d’Artifacts.

Vous pouvez également 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.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-codex-link-agent-evals-docs/dCnBB7xc0m6Fml3G/images/integrations/open_ai_faq_can_track.png?fit=max&auto=format&n=dCnBB7xc0m6Fml3G&q=85&s=68defcd1772c97deffbea8aa215c7c5b" alt="FAQ OpenAI sur le suivi" width="1088" height="260" data-path="images/integrations/open_ai_faq_can_track.png" />
</Frame>

<div id="resources">
  ## Ressources
</div>

Pour un contexte plus approfondi et des exemples de bout en bout, voir les ressources suivantes.

* La [documentation OpenAI sur le Fine-tuning](https://platform.openai.com/docs/guides/fine-tuning/) pour des conseils détaillés et des astuces.
* [Colab de démonstration](https://wandb.me/openai-colab).
* [How to Fine-Tune Your OpenAI GPT-3.5 and GPT-4 Models with W\&B](https://wandb.me/openai-report) Report.
