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
basic.py
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
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
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’argumentreinitdirectement : -
Utilisez
wandb.init()et passez un objetwandb.Settingsau paramètresettings. Spécifiezreinitdans l’objetSettings: -
Utilisez
wandb.setup()pour définir l’optionreinitglobalement 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 appelswandb.init()suivants dans ce processus. -
Spécifiez la valeur souhaitée pour
reinitdans la variable d’environnementWANDB_REINIT. Le fait de définir une variable d’environnement applique l’optionreinitaux appelswandb.init().
wandb.init() :
Exemple : Processus concurrents
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 :
- Initialisez le processus principal Run A avec
wandb.init()et journalisez les métriques d’entraînement. - Initialisez Run B1 (avec
wandb.init()), journalisez des données, puis terminez-le. - Journalisez davantage de données dans Run A.
- Initialisez Run B2, journalisez des données, puis terminez-le.
- Continuez à journaliser dans Run A.
- Enfin, terminez Run A à la fin.
reinit="create_new"crée un nouveau run chaque fois que vous appelezwandb.init().- Vous conservez une référence à chaque run.
wandb.runne pointe pas automatiquement vers le nouveau run créé avecreinit="create_new". Stockez les nouveaux runs dans des variables commerun_a,run_b1, etc., et appelez.log()ou.finish()sur ces objets selon vos besoins. - Vous pouvez terminer les sous-runs quand vous le souhaitez, tout en laissant le run principal ouvert.
- 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é.