> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-update-reference-docs-40.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Découvrez comment automatiser des balayages d’hyperparamètres dans Launch.

# Créer des balayages avec W&B Launch

<Card title="Essayer dans Colab" href="https://colab.research.google.com/drive/1WxLKaJlltThgZyhc7dcZhDQ6cjVQDfil#scrollTo=AFEzIxA6foC7" icon="python" />

Cette page décrit comment créer un job d’optimisation d’hyperparamètres ([sweeps](/fr/models/sweeps/)) avec W\&B Launch, afin d’automatiser l’exploration des hyperparamètres sur la même infrastructure qui exécute vos autres jobs Launch. Avec les balayages dans Launch, un ordonnanceur de balayage est envoyé vers une Launch Queue avec les hyperparamètres spécifiés à explorer. L’ordonnanceur de balayage démarre dès qu’il est pris en charge par l’agent, en lançant des runs de balayage dans la même file d’attente avec les hyperparamètres sélectionnés. Ce processus se poursuit jusqu’à la fin du balayage ou jusqu’à son arrêt.

Vous pouvez utiliser le moteur de planification de balayage W\&B par défaut ou implémenter votre propre ordonnanceur personnalisé :

1. Ordonnanceur de balayage standard : utilisez le moteur de planification de balayage W\&B par défaut qui contrôle [W\&B Sweeps](/fr/models/sweeps/). Les méthodes habituelles `bayes`, `grid` et `random` sont disponibles.
2. Ordonnanceur de balayage personnalisé : configurez l’ordonnanceur de balayage pour qu’il s’exécute en tant que job. Cette option permet une personnalisation complète. La section suivante montre un exemple de la façon d’étendre l’ordonnanceur de balayage standard pour inclure davantage de logging.

<Note>
  Ce guide suppose que W\&B Launch a déjà été configuré. Si W\&B Launch n’est pas configuré, consultez la section [pour bien démarrer](./#how-to-get-started) de la documentation Launch.
</Note>

<Note>
  Nous vous recommandons de créer un balayage dans Launch avec la méthode `basic` si vous utilisez les balayages dans Launch pour la première fois. Utilisez un ordonnanceur personnalisé pour les balayages dans Launch lorsque le moteur de planification W\&B standard ne répond pas à vos besoins.
</Note>

<div id="create-a-sweep-with-a-wb-standard-scheduler">
  ## Créer un balayage avec l’ordonnanceur standard de W\&B
</div>

Cette section explique comment créer des W\&B Sweeps avec Launch à l’aide du moteur de planification standard. Vous pouvez créer un balayage de manière interactive dans la W\&B App ou par programmation avec la CLI W\&B. Pour les configurations avancées des balayages Launch, notamment pour personnaliser l’ordonnanceur, utilisez la CLI.

<Note>
  Avant de créer un balayage avec W\&B Launch, assurez-vous d’avoir d’abord créé un job à utiliser pour le balayage. Voir la page [Create a Job](/fr/platform/launch/create-launch-job/) pour plus d’informations.
</Note>

<Tabs>
  <Tab title="W&B App">
    Créez un balayage de manière interactive dans la W\&B App.

    1. Accédez à votre projet W\&B dans la W\&B App.
    2. Sélectionnez l’icône des balayages dans la barre latérale du projet (icône en forme de balai).
    3. Sélectionnez le bouton **Create Sweep**.
    4. Cliquez sur le bouton **Configure Launch**.
    5. Dans le menu déroulant **Job**, sélectionnez le nom de votre job et la version du job à partir desquels vous souhaitez créer un balayage.
    6. Dans le menu déroulant **Queue**, sélectionnez une file d’attente sur laquelle exécuter le balayage.
    7. Dans le menu déroulant **Job Priority**, indiquez la priorité de votre job Launch. La priorité d’un job Launch est définie sur "Medium" si la file d’attente Launch ne prend pas en charge la priorisation.
    8. Facultatif : configurez des arguments de redéfinition pour l’exécution ou l’ordonnanceur du balayage. Par exemple, à l’aide des redéfinitions de l’ordonnanceur, configurez le nombre d’exécutions simultanées gérées par l’ordonnanceur avec `num_workers`.
    9. Facultatif : dans le menu déroulant **Destination Project**, sélectionnez un projet dans lequel enregistrer le balayage.
    10. Cliquez sur **Save**.
    11. Sélectionnez **Launch Sweep**.

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541-update-reference-docs-40/TRM29gc6L8KwQCyF/images/launch/create_sweep_with_launch.png?fit=max&auto=format&n=TRM29gc6L8KwQCyF&q=85&s=bcdfe4ab15a432b98b0a9635527e4a5f" alt="Configuration du balayage Launch" width="2518" height="1868" data-path="images/launch/create_sweep_with_launch.png" />
    </Frame>
  </Tab>

  <Tab title="CLI">
    Créez par programmation un balayage W\&B avec Launch à l’aide de la CLI W\&B.

    1. Créez une configuration de balayage.
    2. Spécifiez le nom complet du job dans votre configuration de balayage.
    3. Initialisez un agent de balayage.

    <Note>
      Les étapes 1 et 3 sont les mêmes que celles que vous suivez normalement lorsque vous créez un balayage W\&B.
    </Note>

    Par exemple, l’extrait de code suivant spécifie `'wandb/jobs/Hello World 2:latest'` comme valeur du job :

    ```yaml theme={null}
    # launch-sweep-config.yaml

    job: 'wandb/jobs/Hello World 2:latest'
    description: sweep examples using launch jobs

    method: bayes
    metric:
      goal: minimize
      name: loss_metric
    parameters:
      learning_rate:
        max: 0.02
        min: 0
        distribution: uniform
      epochs:
        max: 20
        min: 0
        distribution: int_uniform

    # Paramètres facultatifs de l’ordonnanceur :

    # scheduler:
    #   num_workers: 1  # exécutions de balayage simultanées
    #   docker_image: [BASE-IMAGE-FOR-THE-SCHEDULER]
    #   resource: [RESOURCE-TYPE-FOR-EXAMPLE-LOCAL-CONTAINER]
    #   resource_args:  # arguments de ressource transmis aux exécutions
    #     env: 
    #         - WANDB_API_KEY

    # Paramètres Launch facultatifs
    # launch: 
    #    registry: [REGISTRY-FOR-IMAGE-PULLING]
    ```

    Pour savoir comment créer une configuration de balayage, voir la page [Define sweep configuration](/fr/platform/launch/sweeps-on-launch/).

    4. Initialisez un balayage. Fournissez le chemin vers votre fichier de configuration, le nom de votre file d’attente de jobs, votre entité W\&B et le nom du projet.

    ```bash theme={null}
    wandb launch-sweep [PATH-TO-YAML-FILE] --queue [QUEUE-NAME] --entity [YOUR-ENTITY] --project [PROJECT-NAME]
    ```

    Pour plus d’informations sur W\&B Sweeps, voir le chapitre [Tune Hyperparameters](/fr/models/sweeps/).
  </Tab>
</Tabs>

<div id="create-a-custom-sweep-scheduler">
  ## Créer un ordonnanceur de balayage personnalisé
</div>

Cette section décrit comment créer un ordonnanceur de balayage personnalisé lorsque le moteur de planification standard ne répond pas à vos besoins. Créez un ordonnanceur de balayage personnalisé soit avec l’ordonnanceur W\&B, soit avec un ordonnanceur personnalisé.

<Note>
  L’utilisation de jobs d’ordonnanceur nécessite la version `wandb` CLI >= `0.15.4`
</Note>

<Tabs>
  <Tab title="ordonnanceur W&B">
    Créez un sweep avec Launch en utilisant la logique de planification des sweeps de W\&B comme job.

    1. Identifiez le job de planification W\&B dans le projet public wandb/sweep-jobs, ou utilisez le nom de job suivant :
       `'wandb/sweep-jobs/job-wandb-sweep-scheduler:latest'`.
    2. Créez un fichier de configuration YAML avec un bloc `scheduler` supplémentaire qui inclut une clé `job` pointant vers ce nom, comme dans l'exemple suivant.
    3. Utilisez la commande `wandb launch-sweep` avec la nouvelle configuration.

    Exemple de configuration :

    ```yaml theme={null}
    # launch-sweep-config.yaml  
    description: Launch sweep config using a scheduler job
    scheduler:
      job: wandb/sweep-jobs/job-wandb-sweep-scheduler:latest
      num_workers: 8  # autorise 8 exécutions de sweep simultanées

    # job d'entraînement/réglage que les exécutions du sweep vont exécuter
    job: wandb/sweep-jobs/job-fashion-MNIST-train:latest
    method: grid
    parameters:
      learning_rate:
        min: 0.0001
        max: 0.1
    ```
  </Tab>

  <Tab title="Ordonnanceur personnalisé">
    Créez des planificateurs personnalisés en créant un scheduler-job. Dans ce guide, modifiez `WandbScheduler` pour ajouter davantage de journalisation.

    1. Clonez le dépôt `wandb/launch-jobs` (plus précisément : `wandb/launch-jobs/jobs/sweep_schedulers`)
    2. Modifiez `wandb_scheduler.py` pour obtenir le niveau de journalisation souhaité. Exemple : ajoutez de la journalisation à la fonction `_poll`. Elle est appelée une fois à chaque cycle d’interrogation (fréquence configurable), avant le lancement de nouvelles exécutions de sweep.
    3. Exécutez le fichier modifié pour créer un job, avec : `python wandb_scheduler.py --project [PROJECT] --entity [ENTITY] --name CustomWandbScheduler`
    4. Identifiez le nom du job créé, soit dans l’interface utilisateur, soit dans la sortie de la commande précédente ; il s’agit d’un job code-artifact (sauf indication contraire).
    5. Créez une configuration de sweep dans laquelle le scheduler pointe vers votre nouveau job.

    ```yaml theme={null}
    ...
    scheduler:
      job: '[ENTITY]/[PROJECT]/job-CustomWandbScheduler:latest'
    ...
    ```
  </Tab>

  <Tab title="Ordonnanceur Optuna">
    Optuna est un framework d’optimisation d’hyperparamètres qui utilise différents algorithmes pour trouver les meilleurs hyperparamètres pour un modèle donné (comme W\&B). En plus des [algorithmes d’échantillonnage](https://optuna.readthedocs.io/en/stable/reference/samplers/index.html), Optuna fournit également différents [algorithmes de pruning](https://optuna.readthedocs.io/en/stable/reference/pruners.html) que vous pouvez utiliser pour arrêter rapidement les exécutions peu performantes. Cela est utile lorsque vous lancez de nombreuses exécutions, car cela peut vous faire gagner du temps et économiser des ressources. Les classes sont configurables. Transmettez les paramètres attendus dans le bloc `scheduler.settings.pruner/sampler.args` du fichier de configuration.

    Créez un sweep Launch à l’aide de la logique d’ordonnancement d’Optuna avec un job.

    1. Commencez par créer votre propre job ou utilisez un job d’image de scheduler Optuna prédéfini.
       * Voir le dépôt [`wandb/launch-jobs`](https://github.com/wandb/launch-jobs/blob/main/jobs/sweep_schedulers) pour des exemples montrant comment créer votre propre job.
       * Pour utiliser une image Optuna prédéfinie, vous pouvez soit accéder à `job-optuna-sweep-scheduler` dans le projet `wandb/sweep-jobs`, soit utiliser le nom de job suivant : `wandb/sweep-jobs/job-optuna-sweep-scheduler:latest`.

    2. Après avoir créé un job, vous pouvez créer un sweep. Créez une configuration de sweep qui inclut un bloc `scheduler` avec une clé `job` pointant vers le job de scheduler Optuna, comme dans l’exemple suivant.

    ```yaml theme={null}
      # optuna_config_basic.yaml
      description: A basic Optuna scheduler
      job: wandb/sweep-jobs/job-fashion-MNIST-train:latest
      run_cap: 5
      metric:
        name: epoch/val_loss
        goal: minimize

      scheduler:
        job: wandb/sweep-jobs/job-optuna-sweep-scheduler:latest
        resource: local-container  # requis pour les jobs de planificateur issus d'images
        num_workers: 2

        # paramètres spécifiques à Optuna
        settings:
          pruner:
            type: PercentilePruner
            args:
              percentile: 25.0  # interrompre 75 % des runs
              n_warmup_steps: 10  # élagage désactivé pour les x premières étapes

      parameters:
        learning_rate:
          min: 0.0001
          max: 0.1
    ```

    3. Enfin, lancez le sweep dans une file d'attente active avec la commande `launch-sweep` :

    ```bash theme={null}
    wandb launch-sweep [CONFIG-YAML] -q [QUEUE] -p [PROJECT] -e [ENTITY]
    ```

    Pour l’implémentation exacte du job du planificateur de sweep Optuna, voir [wandb/launch-jobs](https://github.com/wandb/launch-jobs/blob/main/jobs/sweep_schedulers/optuna_scheduler/optuna_scheduler.py). Pour découvrir d’autres exemples de ce qu’il est possible de faire avec le planificateur Optuna, consultez [wandb/examples](https://github.com/wandb/examples/tree/master/examples/launch/launch-sweeps/optuna-scheduler).
  </Tab>
</Tabs>

Des exemples de jobs d’ordonnanceur de balayage personnalisés sont disponibles dans le dépôt [wandb/launch-jobs](https://github.com/wandb/launch-jobs) sous `jobs/sweep_schedulers`. Ce guide montre comment utiliser le **W\&B Scheduler Job** publiquement disponible et présente une méthode de création de jobs d’ordonnanceur de balayage personnalisés.

<div id="resume-sweeps-on-launch">
  ## Reprendre des balayages dans Launch
</div>

Cette section décrit comment reprendre un balayage Launch à partir d’un balayage lancé précédemment, ce qui est utile lorsque vous souhaitez poursuivre l’exploration avec des paramètres d’ordonnanceur mis à jour ou dans une autre file d’attente. Bien que vous ne puissiez pas modifier les hyperparamètres ni la tâche d’entraînement, vous pouvez modifier les paramètres propres à l’ordonnanceur ainsi que la file d’attente à laquelle il est envoyé.

<Note>
  Si le balayage initial utilisait une tâche d’entraînement avec un alias comme `latest`, la reprise peut produire des résultats différents si la dernière version du job a changé depuis la dernière exécution.
</Note>

1. Identifiez le nom ou l’ID d’un balayage Launch exécuté précédemment. L’ID du balayage est une chaîne de huit caractères (par exemple, `hhd16935`) que vous pouvez trouver dans votre projet dans la W\&B App.
2. Si vous modifiez les paramètres de l’ordonnanceur, créez un fichier de configuration mis à jour.
3. Dans votre terminal, exécutez la commande suivante. Remplacez le contenu entouré de `[` et `]` par vos informations :

```bash theme={null}
wandb launch-sweep [OPTIONAL-CONFIG-YAML] --resume_id [SWEEP-ID] --queue [QUEUE-NAME]
```
