> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Intégrez W&B à Hydra pour gérer des configurations complexes dans vos expériences de ML et journaliser automatiquement les hyperparamètres.

# Hydra

> [Hydra](https://hydra.cc) 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.

<h2 id="track-metrics">
  Suivre les métriques
</h2>

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.

```python theme={"system"}
import wandb


@hydra.main(config_path="configs/", config_name="defaults")
def run_experiment(cfg):

    with wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project) as run:
      run.log({"loss": loss})
```

<h2 id="track-hyperparameters">
  Suivre les hyperparamètres
</h2>

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](https://omegaconf.readthedocs.io/en/2.1_branch/) 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(...)`).

```python theme={"system"}
import hydra
import omegaconf
import wandb


@hydra.main(version_base=None, config_path="configs/", config_name="defaults")
def run_experiment(cfg):
    cfg_dict = omegaconf.OmegaConf.to_container(
        cfg, resolve=True, throw_on_missing=True
    )
    # Facultatif : évitez de journaliser les métadonnées W&B (telles que l’entity ou le projet) dans la configuration de run
    cfg_dict.pop("wandb", None)
    with wandb.init(
        entity=cfg.wandb.entity,
        project=cfg.wandb.project,
        config=cfg_dict,
    ) as run:
        run.log({"loss": loss})
        model = Model(**run.config["model"]["configs"])
```

<h2 id="troubleshoot-multiprocessing">
  Résoudre les problèmes de multiprocessing
</h2>

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é](/fr/products/wandb/track/log/distributed-training). Pour le résoudre, modifiez le protocole de multiprocessing de W\&B, soit en ajoutant un paramètre `settings` supplémentaire à `wandb.init()` :

```python theme={"system"}
wandb.init(settings=wandb.Settings(start_method="thread"))
```

ou en définissant une variable d’environnement globale depuis votre shell :

```bash theme={"system"}
export WANDB_START_METHOD=thread
```

<h2 id="optimize-hyperparameters">
  Optimiser les hyperparamètres
</h2>

[W\&B Sweeps](/fr/products/wandb/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` :

```yaml theme={"system"}
program: main.py
method: bayes
metric:
  goal: maximize
  name: test/accuracy
parameters:
  dataset:
    values: [mnist, cifar10]

command:
  - ${env}
  - python
  - ${program}
  - ${args_no_hyphens}
```

Lancez le sweep :

```bash theme={"system"}
wandb sweep sweep.yaml
```

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.

<h3 id="pass-parameters-not-present-in-hydra-defaults">
  Transmettre des paramètres absents des valeurs par défaut de Hydra
</h3>

<a id="pitfall-3-sweep-passing-parameters-not-present-in-defaults" aria-label="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 :

```bash theme={"system"}
python program.py +experiment=some_experiment
```

Vous ne pouvez pas effectuer un sweep sur ces configurations `+` de la même manière que lors de la configuration des [Hydra Experiments](https://hydra.cc/docs/patterns/configuring_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](https://forge.coreweave.com/wandb/adrishd/hydra-example/reports/Configuring-W-B-Projects-with-Hydra--VmlldzoxNTA2MzQw?galleryTag=posts\&utm_source=fully_connected\&utm_medium=blog\&utm_campaign=hydra).
