Skip to main content
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 pouvoir créer dynamiquement une configuration hiérarchique par composition, puis de la redéfinir au moyen de fichiers de configuration et de la ligne de commande.
Cette page explique comment associer la gestion de configuration basée sur Hydra au suivi des expériences de W&B. Vous conservez ainsi les configurations composables de Hydra tout en profitant des fonctionnalités de W&B en matière de visualisation, d’optimisation des hyperparamètres et de comparaison de runs. Les sections suivantes traitent du suivi des métriques, de la journalisation des hyperparamètres à partir des configurations Hydra, du dépannage du multiprocessing et de l’optimisation des hyperparamètres avec W&B Sweeps.

Suivre les métriques

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

Suivre les hyperparamètres

En journalisant la configuration Hydra dans W&B, vous pouvez consulter chaque hyperparamètre avec les 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 de dict Python. wandb.Run.config est une propriété en lecture seule : wandb.Run.config = ... lève donc une AttributeError si vous tentez de lui passer un objet de configuration OmegaConf. Convertissez cfg en dict standard avec OmegaConf.to_container(), puis passez-le à wandb.init(config=...) (ou appelez wandb.Run.config.update(...)).

Résoudre les problèmes de multiprocessing

Si votre processus cesse de répondre au démarrage, la cause peut être le problème connu de multiprocessing dans l’entraînement distribué. Pour le résoudre, modifiez le protocole de multiprocessing de W&B, soit en ajoutant un paramètre settings supplémentaire à wandb.init() :
ou en définissant une variable d’environnement globale depuis votre shell :

Optimiser les hyperparamètres

W&B Sweeps est une plateforme de recherche d’hyperparamètres qui fournit des analyses et des visualisations pour les expériences W&B, avec un minimum de code supplémentaire. Sweeps s’intègre aux projets Hydra sans nécessiter de modification du code. Il vous suffit d’un fichier de configuration décrivant les paramètres à explorer. Voici un exemple de fichier sweep.yaml :
Lancez le sweep :
W&B crée automatiquement un sweep dans votre projet et renvoie une commande wandb agent. Exécutez cette commande sur chacune des machines sur lesquelles vous souhaitez lancer le sweep.

Transmettre des paramètres absents des valeurs par défaut de Hydra

Hydra permet de transmettre, via la ligne de commande, des paramètres supplémentaires absents du fichier de configuration par défaut : il suffit de placer un + devant la commande. Par exemple, pour transmettre un paramètre supplémentaire avec une valeur donnée, exécutez :
Vous ne pouvez pas effectuer un sweep sur ces configurations + de la même manière que lors de la configuration des Hydra Experiments. Pour contourner cette limitation, initialisez le paramètre d’expérience avec un fichier vide par défaut, puis utilisez un sweep W&B pour redéfinir ces configurations vides à chaque appel. Pour en savoir plus, consultez le rapport W&B Configuring W&B Projects with Hydra.
Dernière modification le 30 septembre 2026