> ## 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.

> Définissez, initialisez et exécutez un sweep pour explorer un espace d'hyperparamètres et trouver la configuration qui produit le meilleur modèle.

# Tutoriel : définir, initialiser et exécuter un sweep

Ce tutoriel explique comment définir, initialiser et exécuter un sweep afin d'automatiser la recherche d'hyperparamètres et de trouver la configuration qui produit le meilleur modèle. Il s'adresse aux utilisateurs qui savent déjà journaliser des runs dans W\&B et qui souhaitent passer à l'ajustement d'hyperparamètres à grande échelle.

Ce tutoriel comporte quatre grandes étapes :

1. [Configurer votre code d'entraînement](#set-up-your-training-code)
2. [Définir l'espace de recherche avec une configuration de sweep](#define-the-search-space-with-a-sweep-configuration)
3. [Initialiser le sweep](#initialize-the-sweep)
4. [Démarrer l'agent de sweep](#start-the-sweep)

Pour commencer, copiez-collez le code suivant dans un Jupyter Notebook ou un script Python. Les sections suivantes détaillent chaque partie de cet exemple.

```python theme={"system"}
# Importer la bibliothèque Python W&B et se connecter à W&B
import wandb

# 1 : Définir la fonction objectif (ou d’entraînement)
def objective(config):
    score = config.x**3 + config.y
    return score

def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})

# 2 : Définir l’espace de recherche
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

# 3 : Lancer le sweep
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

wandb.agent(sweep_id, function=main, count=10)
```

<h2 id="set-up-your-training-code">
  Configurer votre code d’entraînement
</h2>

L’agent de sweep appelle votre fonction d’entraînement avec chaque combinaison de valeurs d’hyperparamètres à essayer. La première étape consiste donc à écrire une fonction qui accepte ces valeurs et renvoie une métrique à W\&B.

Définissez une fonction d’entraînement qui récupère les valeurs d’hyperparamètres depuis `wandb.Run.config`, puis les utilise pour entraîner un modèle et renvoyer des métriques.

Vous pouvez également indiquer le nom du projet dans lequel stocker la sortie du run (paramètre project de [`wandb.init()`](/fr/products/wandb/ref/python/functions/init)). Si vous ne spécifiez aucun projet, W\&B place le run dans un projet « Uncategorized ».

<Note>
  Le sweep et le run doivent appartenir au même projet. Le nom fourni lors de l’initialisation de W\&B doit donc correspondre au nom du projet indiqué lors de l’initialisation du sweep.
</Note>

```python theme={"system"}
# 1 : Définir la fonction objectif/d’entraînement
def objective(config):
    score = config.x**3 + config.y
    return score


def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})
```

<h2 id="define-the-search-space-with-a-sweep-configuration">
  Définir l’espace de recherche avec une configuration de sweep
</h2>

Une fois la fonction d’entraînement en place, l’étape suivante consiste à indiquer à W\&B quels hyperparamètres faire varier et comment explorer leurs valeurs.

Spécifiez dans un dictionnaire les hyperparamètres à faire varier au cours du sweep. Pour connaître les options de configuration, consultez [Définir la configuration de sweep](/fr/products/wandb/sweeps/define-sweep-configuration).

L’exemple suivant présente une configuration de sweep qui utilise une recherche aléatoire (`'method':'random'`). Le sweep sélectionne aléatoirement un ensemble de valeurs parmi celles listées dans la configuration pour les paramètres `x` et `y`.

W\&B minimise la métrique spécifiée dans la clé `metric` lorsque `"goal": "minimize"` lui est associé. Ici, W\&B cherche à minimiser la métrique `score` (`"name": "score"`).

```python theme={"system"}
# 2 : Définir l’espace de recherche
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}
```

<h2 id="initialize-the-sweep">
  Initialiser le sweep
</h2>

L’initialisation du sweep enregistre votre espace de recherche auprès de W\&B et renvoie un identifiant que l’agent utilise pour demander des combinaisons d’hyperparamètres.

W\&B utilise un *Sweep Controller* pour gérer les sweeps dans le cloud (standard) ou en local (local), sur une ou plusieurs machines. Pour plus d’informations sur les Sweep Controllers, consultez [Exécuter localement les algorithmes de recherche et d’arrêt](/fr/products/wandb/sweeps/local-controller).

L’initialisation d’un sweep renvoie un numéro d’identification du sweep :

```python theme={"system"}
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
```

Pour plus d'informations, voir [Initialiser des sweeps](/fr/products/wandb/sweeps/initialize-sweeps).

<h2 id="start-the-sweep">
  Lancer le sweep
</h2>

Une fois le sweep enregistré, lancez un agent pour exécuter les runs et explorer l’espace de recherche.

Pour lancer un sweep, utilisez l’appel d’API [`wandb.agent()`](/fr/products/wandb/ref/python/functions/agent).

```python theme={"system"}
wandb.agent(sweep_id, function=main, count=10)
```

Une fois démarré, l’agent demande des combinaisons d’hyperparamètres à W\&B, appelle votre fonction d’entraînement pour chacune d’elles et journalise les métriques obtenues dans votre projet.

<Warning>
  **Multiprocessing**

  Si vous utilisez le package `multiprocessing` de la bibliothèque standard Python ou le package `pytorch.multiprocessing` de PyTorch, vous devez encapsuler vos appels `wandb.agent()` et `wandb.sweep()` dans un bloc `if __name__ == '__main__':`. Par exemple :

  ```python theme={"system"}
  if __name__ == '__main__':
      wandb.agent(sweep_id="[SWEEP-ID]", function="[FUNCTION]", count="[COUNT]")
  ```

  Cette convention garantit que le code ne s’exécute que lorsque le script est lancé directement, et non lorsqu’il est importé comme module dans un processus worker.

  Pour en savoir plus sur le multiprocessing, consultez [la documentation de `multiprocessing` dans la bibliothèque standard Python](https://docs.python.org/3/library/multiprocessing.html#the-spawn-and-forkserver-start-methods) ou [la documentation de `multiprocessing` dans PyTorch](https://docs.pytorch.org/docs/stable/notes/multiprocessing.html#asynchronous-multiprocess-training-e-g-hogwild). Pour en savoir plus sur la convention `if __name__ == '__main__':`, consultez [le guide de Real Python sur `__main__`](https://realpython.com/if-name-main-python/).
</Warning>

<h2 id="optional-visualize-results">
  Facultatif : visualiser les résultats
</h2>

Une fois le sweep lancé, vous pouvez explorer dans la W\&B App l'influence des différentes combinaisons d'hyperparamètres sur votre métrique.

Ouvrez votre projet pour suivre vos résultats en direct dans le tableau de bord de la W\&B App. En quelques clics, créez des graphiques interactifs tels que des [graphiques en coordonnées parallèles](/fr/products/wandb/app/features/panels/parallel-coordinates), des [analyses d'importance des paramètres](/fr/products/wandb/app/features/panels/parameter-importance) et [d'autres types de graphiques](/fr/products/wandb/app/features/panels).

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/quickstart_dashboard_example.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=cdd010a365825115c5a34de76e5ffa6b" alt="Exemple de tableau de bord Sweeps" width="4172" height="3046" data-path="products/wandb/_media/quickstart_dashboard_example.png" />
</Frame>

Pour plus d'informations, voir [Visualiser les résultats d'un sweep](/fr/products/wandb/sweeps/visualize-sweep-results). Pour voir un exemple de tableau de bord, consultez ce [projet Sweeps](https://forge.coreweave.com/wandb/anmolmann/pytorch-cnn-fashion/sweeps/pmqye6u3) d'exemple.

<h2 id="optional-stop-the-agent">
  Facultatif : arrêter l’agent
</h2>

Dans le terminal, appuyez sur `Ctrl+C` pour arrêter le run actuel. Appuyez une seconde fois sur `Ctrl+C` pour mettre fin à l’agent.


## Related topics

- [Initialiser un sweep](/fr/products/wandb/sweeps/initialize-sweeps.md)
