Skip to main content
Initialisez un Run W&B avec wandb.init(). Par défaut, W&B prend en charge un run actif par processus Python. Si vous appelez wandb.init() alors qu’un run est actif, W&B renvoie le run actif ou le termine avant d’en créer un nouveau. Le comportement dépend de l’environnement et de la configuration reinit. Pour gérer plusieurs runs actifs dans un même processus, voir Plusieurs runs dans un même processus.
W&B recommande d’utiliser un gestionnaire de contexte (bloc with) lorsque vous appelez wandb.init(). Cela garantit que W&B termine le run et téléverse ses données à la fin du bloc.

Un seul run par processus

L’exemple suivant initialise un run :
basic.py
La commande produit une sortie semblable à la suivante :
Dans cet exemple, W&B journalise le run exalted-darkness-6 dans le projet awesome-project de l’entité nico. W&B attribue à ce run l’ID unique pgbn9y21.

Plusieurs runs dans un même processus

Utilisez le paramètre reinit dans wandb.init() ou wandb.Settings pour gérer plusieurs runs dans un même processus Python. Par exemple, gardez un run principal actif tout en créant des runs secondaires de courte durée pour d’autres tâches. Les cas d’utilisation courants incluent :
  • Créer des runs secondaires pour des évaluations ou des sous-tâches tandis qu’un run principal reste actif.
  • Exécuter plusieurs sous-expériences à partir d’un script.
  • Effectuer la journalisation de différentes tâches ou périodes vers des runs distincts depuis un même processus.
PrérequisPour gérer plusieurs runs dans un même processus Python, vous devez disposer de W&B Python SDK version v0.19.10 ou ultérieure.

Options de reinit

Utilisez le paramètre reinit pour contrôler le comportement de wandb.init() lorsqu’un autre run est actif. Le tableau suivant compare les options disponibles et les cas d’utilisation courants. Pour la définition complète du paramètre, voir la documentation de référence de wandb.init().
W&B ne prend pas en charge le mode create_new pour les intégrations W&B qui supposent un seul run global, telles que Hugging Face Trainer, les callbacks Keras et PyTorch Lightning. Si vous utilisez ces intégrations, exécutez chaque sous-expérience dans un processus distinct.

Configurer reinit

  • Utilisez wandb.init() avec l’argument reinit directement :
  • Utilisez wandb.init() et passez un objet wandb.Settings au paramètre settings. Spécifiez reinit dans l’objet Settings :
  • Utilisez wandb.setup() pour définir l’option reinit globalement pour tous les runs du processus en cours. Cela est utile si vous souhaitez configurer ce comportement une seule fois et l’appliquer à tous les appels wandb.init() suivants dans ce processus.
  • Spécifiez la valeur souhaitée pour reinit dans la variable d’environnement WANDB_REINIT. Le fait de définir une variable d’environnement applique l’option reinit aux appels wandb.init().
L’extrait de code suivant donne un aperçu général de la manière de configurer W&B pour créer un nouveau run chaque fois que vous appelez wandb.init() :

Exemple : Processus concurrents

Supposons que vous souhaitiez créer un processus principal qui reste ouvert pendant toute la durée d’exécution du script, tout en lançant périodiquement des processus secondaires de courte durée sans fermer le processus principal. Par exemple, ce schéma peut être utile si vous souhaitez entraîner un modèle dans le run principal, tout en calculant des évaluations ou en effectuant d’autres tâches dans des runs distincts. Pour y parvenir, utilisez reinit="create_new" et initialisez plusieurs runs. Pour cet exemple, supposons que “Run A” soit le processus principal qui reste ouvert tout au long du script, tandis que “Run B1” et “Run B2” sont des runs secondaires de courte durée pour des tâches comme l’évaluation. Dans les grandes lignes, le flux de travail peut ressembler à ceci :
  1. Initialisez le processus principal Run A avec wandb.init() et journalisez les métriques d’entraînement.
  2. Initialisez Run B1 (avec wandb.init()), journalisez des données, puis terminez-le.
  3. Journalisez davantage de données dans Run A.
  4. Initialisez Run B2, journalisez des données, puis terminez-le.
  5. Continuez à journaliser dans Run A.
  6. Enfin, terminez Run A à la fin.
L’exemple de code Python suivant illustre ce flux de travail :
Notez trois points clés de l’exemple précédent :
  1. reinit="create_new" crée un nouveau run chaque fois que vous appelez wandb.init().
  2. Vous conservez une référence à chaque run. wandb.run ne pointe pas automatiquement vers le nouveau run créé avec reinit="create_new". Stockez les nouveaux runs dans des variables comme run_a, run_b1, etc., et appelez .log() ou .finish() sur ces objets selon vos besoins.
  3. Vous pouvez terminer les sous-runs quand vous le souhaitez, tout en laissant le run principal ouvert.
  4. Terminez vos runs avec run.finish() lorsque vous avez fini d’y faire de la journalisation. Cela garantit que toutes les données sont bien envoyées et que le run est correctement fermé.