Passer au contenu principal
Hydra est un framework Python open source qui simplifie le développement d’applications de recherche et d’autres applications complexes. Sa principale fonctionnalité est de permettre la création dynamique d’une configuration hiérarchique par composition, puis sa surcharge via des fichiers de configuration et la ligne de commande.
Cette page montre comment combiner la gestion de configuration basée sur Hydra avec le suivi des expériences de W&B, afin que vous puissiez conserver les configurations composables de Hydra tout en bénéficiant des fonctionnalités de visualisation, d’optimisation des hyperparamètres et de comparaison des runs de W&B. Les sections suivantes couvrent le suivi des métriques, la journalisation des hyperparamètres à partir des configurations Hydra, le dépannage du multiprocessing et l’optimisation des hyperparamètres avec les balayages W&B.

Suivre les métriques

Pour envoyer des métriques depuis un run configuré avec Hydra vers W&B, utilisez wandb.init() et wandb.Run.log() normalement. Dans l’exemple suivant, wandb.entity et wandb.project sont définis dans un fichier de configuration Hydra afin que la même configuration pilote à la fois Hydra et W&B.

Suivre les hyperparamètres

La journalisation de la configuration de Hydra dans W&B vous permet de voir chaque hyperparamètre à côté des métriques du run, ce qui facilite la comparaison et la reproduction des expériences. Hydra utilise OmegaConf comme interface par défaut pour gérer les dictionnaires de configuration. Les objets de configuration OmegaConf (par exemple, omegaconf.DictConfig) ne sont pas de simples instances Python de dict. wandb.Run.config est une propriété en lecture seule, ce qui signifie que wandb.Run.config = ... lève une exception AttributeError si vous essayez de lui passer un objet de configuration OmegaConf. Convertissez cfg en dict Python standard avec OmegaConf.to_container(), puis passez-le à wandb.init(config=...) (ou appelez wandb.Run.config.update(...)).

Résoudre les problèmes liés au multiprocessing

Si votre processus ne répond plus au démarrage, cela peut être dû au problème connu lié au multiprocessing dans l’entraînement distribué. Pour y remédier, modifiez le protocole de multiprocessing de W&B en ajoutant un paramètre de configuration supplémentaire à wandb.init() :
ou en définissant une variable d’environnement globale dans votre shell :

Optimiser les hyperparamètres

balayage W&B est une plateforme de recherche d’hyperparamètres qui fournit des insights et des visualisations sur les expériences W&B avec un minimum de code. Sweeps s’intègre aux projets Hydra sans nécessiter de modifier le code. Vous avez seulement besoin d’un fichier de configuration qui décrit les paramètres à balayer. Le fichier sweep.yaml suivant est un exemple :
Exécutez le balayage :
W&B crée automatiquement un balayage dans votre projet et renvoie une commande wandb agent. Exécutez cette commande sur chaque machine où vous souhaitez lancer ce balayage.

Passer des paramètres non présents dans les valeurs par défaut d’Hydra

Hydra prend en charge le passage de paramètres supplémentaires via la ligne de commande qui ne figurent pas dans le fichier de configuration par défaut, en utilisant un + avant la commande. Par exemple, passez un paramètre supplémentaire avec une valeur donnée en appelant :
Vous ne pouvez pas exécuter de balayage sur de telles configurations +, comme on le fait lors de la configuration des Hydra Expériences. Pour contourner ce problème, initialisez le paramètre d’expérience avec un fichier vide par défaut, puis utilisez un W&B Sweep pour remplacer ces configurations vides à chaque appel. Pour plus d’informations, consultez le rapport W&B Configuring W&B Projects with Hydra.