Skip to main content
Ce guide fournit des recommandations pour intégrer W&B à votre script d’entraînement Python ou à votre notebook afin d’optimiser la recherche d’hyperparamètres. En suivant ces recommandations, vous pourrez utiliser W&B Sweeps pour explorer différentes valeurs d’hyperparamètres, journaliser les métriques d’entraînement et de validation, et identifier la configuration qui offre les meilleures performances du modèle. Ce guide s’adresse aux praticiens du machine learning qui disposent déjà d’un script d’entraînement Python et souhaitent y ajouter la prise en charge des sweeps d’hyperparamètres. Les sections suivantes présentent un exemple de script d’entraînement, puis expliquent comment l’adapter pour qu’il fonctionne avec W&B Sweeps.

Script d’entraînement d’origine

Supposons que vous disposiez d’un script Python qui entraîne un modèle (voir le code ci-dessous). Votre objectif est de trouver les hyperparamètres qui maximisent la précision de validation (val_acc). Dans votre script Python, vous définissez deux fonctions : train_one_epoch et evaluate_one_epoch. La fonction train_one_epoch simule l’entraînement sur une époque et renvoie la précision et la perte d’entraînement. La fonction evaluate_one_epoch simule l’évaluation du modèle sur le jeu de données de validation et renvoie la précision et la perte de validation. Vous définissez un dictionnaire de configuration nommé config qui contient des valeurs d’hyperparamètres telles que le taux d’apprentissage, la taille de lot et le nombre d’époques. Les valeurs de ce dictionnaire de configuration pilotent le processus d’entraînement. Vous définissez ensuite une fonction appelée main qui reproduit une boucle d’entraînement classique. À chaque époque, le script calcule la précision et la perte sur les jeux de données d’entraînement et de validation.
Ce code est un script d’entraînement fictif. Il n’entraîne aucun modèle, mais simule le processus d’entraînement en générant des valeurs aléatoires de précision et de perte. Il a pour but de montrer comment intégrer W&B dans votre script d’entraînement.
La section suivante montre comment ajouter W&B à votre script Python pour suivre les hyperparamètres et les métriques pendant l’entraînement. L’objectif est d’utiliser W&B pour trouver les hyperparamètres qui maximisent la précision de validation (val_acc).

Ajouter W&B à votre script d’entraînement

Cette section explique comment modifier le script d’entraînement d’origine pour que l’agent de sweep puisse transmettre des valeurs d’hyperparamètres à chaque run et que W&B puisse enregistrer les métriques obtenues. La manière d’intégrer W&B dans votre script Python ou votre notebook dépend de la façon dont vous gérez les sweeps. Si vous utilisez le SDK Python W&B pour démarrer, arrêter et gérer les sweeps, suivez les instructions de l’onglet Script Python ou notebook. Si vous préférez utiliser la CLI W&B, suivez les instructions de l’onglet CLI.
Créez un fichier de configuration YAML contenant votre configuration de sweep. Ce fichier définit les hyperparamètres que le sweep doit explorer. Dans l’exemple suivant, le sweep fait varier les hyperparamètres batch_size, epochs et lr à chaque run.
Pour plus d’informations, voir Définir la configuration de sweep.Vous devez indiquer le nom de votre script Python comme valeur de la clé program dans votre fichier YAML.Ajoutez ensuite les éléments suivants à l’exemple de code :
  1. Importez le SDK Python W&B (wandb) et PyYAML (yaml). Utilisez PyYAML pour lire votre fichier de configuration YAML.
  2. Lisez le fichier de configuration.
  3. Utilisez wandb.init() pour démarrer un processus en arrière-plan qui synchronise et journalise les données sous forme de run W&B. Passez l’objet de configuration au paramètre config.
  4. Définissez les valeurs des hyperparamètres à partir de wandb.Run.config au lieu d’utiliser des valeurs codées en dur.
  5. Journalisez la métrique à optimiser avec wandb.Run.log(). Vous devez journaliser la métrique définie dans votre configuration. Dans le dictionnaire de configuration (ici, sweep_configuration), le sweep est défini de manière à maximiser la valeur val_acc.
Après avoir mis à jour votre script d’entraînement, initialisez et démarrez le sweep depuis votre CLI :
  1. Initialisez le sweep avec la commande wandb sweep en indiquant le nom du fichier YAML. Vous pouvez également définir l’option --project sur le nom du projet :
    Cette commande renvoie un ID de sweep. Pour plus d’informations, voir Initialiser des sweeps.
  2. Copiez l’ID du sweep et remplacez [SWEEP-ID] dans la commande suivante pour démarrer le job de sweep avec la commande wandb agent. Remplacez [YOUR-ENTITY] par le nom de votre entity W&B. Vous pouvez également définir --count pour limiter le nombre de runs que l’agent tente d’exécuter (ici, cinq) :
L’agent de sweep exécute votre script d’entraînement de manière répétée, chaque fois avec une combinaison différente de valeurs d’hyperparamètres tirées de votre configuration YAML, et journalise les résultats dans W&B. Pour plus d’informations, voir Démarrer des jobs de sweep.
Consigner des métriques dans W&B lors d’un sweepLa métrique que vous définissez et que vous cherchez à optimiser doit être à la fois déclarée dans votre configuration de sweep et journalisée avec wandb.Run.log(). Par exemple, si vous définissez val_acc comme métrique à optimiser dans votre configuration de sweep, vous devez également journaliser val_acc dans W&B. Si vous ne journalisez pas la métrique, W&B ne peut pas effectuer l’optimisation.
L’exemple suivant montre une manière incorrecte de journaliser la métrique dans W&B. La configuration de sweep optimise val_acc, mais le code journalise val_acc dans un dictionnaire imbriqué, sous la clé validation. Vous devez journaliser la métrique directement, et non dans un dictionnaire imbriqué.
Dernière modification le 30 septembre 2026