> ## 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écouvrez comment automatiser les sweeps d’hyperparamètres avec Launch.

# Créer des sweeps avec W&B Launch

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

Cette page explique comment créer un job d’optimisation des hyperparamètres ([sweeps](/fr/products/wandb/sweeps)) avec W\&B Launch, afin d’automatiser l’exploration des hyperparamètres sur l’infrastructure qui exécute déjà vos autres jobs Launch. Avec les sweeps sur Launch, un planificateur de sweep est téléversé dans une file d’attente Launch avec les hyperparamètres à explorer. Le planificateur de sweep démarre dès que l’agent le prend en charge, puis lance des runs de sweep dans la même file d’attente avec les hyperparamètres choisis. Ce processus se poursuit jusqu’à ce que le sweep se termine ou soit arrêté.

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

1. Planificateur de sweep standard : utilisez le moteur de planification par défaut qui pilote [W\&B Sweeps](/fr/products/wandb/sweeps). Les méthodes habituelles `bayes`, `grid` et `random` sont disponibles.
2. Planificateur de sweep personnalisé : configurez le planificateur de sweep pour qu’il s’exécute en tant que job. Cette option offre une personnalisation complète. La section suivante montre, à titre d’exemple, comment étendre le planificateur de sweep standard pour enrichir la journalisation.

<Note>
  Ce guide part du principe que W\&B Launch est déjà configuré. Si ce n’est pas le cas, consultez la section [premiers pas](/fr/products/wandb/platform/launch#how-to-get-started) de la documentation de Launch.
</Note>

<Note>
  Si vous utilisez les sweeps sur Launch pour la première fois, nous vous recommandons de créer un sweep sur Launch avec la méthode `basic`. Utilisez un planificateur personnalisé de sweeps sur Launch lorsque le moteur de planification standard de W\&B ne répond pas à vos besoins.
</Note>

<h2 id="create-a-sweep-with-a-wb-standard-scheduler">
  Créer un sweep avec un planificateur standard W\&B
</h2>

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

<Note>
  Avant de créer un sweep avec W\&B Launch, assurez-vous d’avoir d’abord créé le job sur lequel portera le sweep. Pour plus d’informations, consultez la page [Créer un job](/fr/products/wandb/platform/launch/create-launch-job).
</Note>

<Tabs>
  <Tab title="W&B app">
    Créez un sweep 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 sweeps (un balai) dans la barre latérale du projet.
    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 de laquelle vous souhaitez créer le sweep.
    6. Dans le menu déroulant **Queue**, sélectionnez la file d’attente dans laquelle exécuter le sweep.
    7. Dans le menu déroulant **Job Priority**, indiquez la priorité de votre job Launch. Si la file d’attente Launch ne prend pas en charge la priorisation, la priorité du job Launch est définie sur « Medium ».
    8. Facultatif : configurez des arguments de redéfinition pour le run ou le planificateur du sweep. Par exemple, dans les redéfinitions du planificateur, utilisez `num_workers` pour définir le nombre de runs simultanés gérés par le planificateur.
    9. Facultatif : dans le menu déroulant **Destination Project**, sélectionnez le projet dans lequel enregistrer le sweep.
    10. Cliquez sur **Save**.
    11. Sélectionnez **Launch Sweep**.

    <Frame>
      <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/platform/_media/create_sweep_with_launch.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=e7be8107cf6a8db81411bba5bf750cca" alt="Configuration d’un sweep Launch" width="2518" height="1868" data-path="products/wandb/platform/_media/create_sweep_with_launch.png" />
    </Frame>
  </Tab>

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

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

    <Note>
      Les étapes 1 et 3 sont identiques à celles que vous suivez habituellement pour créer un sweep W\&B.
    </Note>

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

    ```yaml theme={"system"}
    # 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 du planificateur :

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

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

    Pour savoir comment créer une configuration de sweep, consultez la page [Définir la configuration de sweep](/fr/products/wandb/platform/launch/sweeps-on-launch).

    4. Initialisez un sweep. Indiquez le chemin de votre fichier de configuration, le nom de votre file d’attente de jobs, votre entity W\&B et le nom du projet.

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

    Pour plus d’informations sur W\&B Sweeps, consultez le chapitre [Optimiser les hyperparamètres](/fr/products/wandb/sweeps).
  </Tab>
</Tabs>

<h2 id="create-a-custom-sweep-scheduler">
  Créer un planificateur de sweep personnalisé
</h2>

Cette section explique comment créer un planificateur de sweep personnalisé lorsque le moteur de planification standard ne répond pas à vos besoins. Pour ce faire, vous pouvez utiliser soit le planificateur W\&B, soit un planificateur personnalisé.

<Note>
  L’utilisation de jobs de planificateur nécessite la CLI `wandb` en version >= `0.15.4`.
</Note>

<Tabs>
  <Tab title="Ordonnanceur W&B">
    Créez un sweep Launch qui utilise la logique de planification des sweeps de W\&B en tant que job.

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

    Exemple de configuration :

    ```yaml theme={"system"}
    # 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  # permet d’exécuter 8 runs du sweep en parallèle

    # job d’entraînement/d’optimisation exécuté par les runs du sweep
    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é">
    Pour créer des schedulers personnalisés, créez un scheduler-job. Dans ce guide, vous allez modifier le `WandbScheduler` afin d’obtenir une journalisation plus détaillée.

    1. Clonez le dépôt `wandb/launch-jobs` (plus précisément : `wandb/launch-jobs/jobs/sweep_schedulers`)
    2. Modifiez le fichier `wandb_scheduler.py` pour obtenir la journalisation supplémentaire souhaitée. Exemple : ajoutez de la journalisation à la fonction `_poll`. Celle-ci est appelée une fois par cycle d’interrogation (intervalle configurable), avant le lancement de nouveaux runs du sweep.
    3. Exécutez le fichier modifié pour créer un job, avec la commande : `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 l’appel précédent. Il s’agit d’un job de type code-artifact (sauf indication contraire).
    5. Créez une configuration de sweep dans laquelle le scheduler pointe vers votre nouveau job.

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

  <Tab title="Ordonnanceur Optuna">
    Optuna est un framework d’optimisation des hyperparamètres qui utilise divers algorithmes pour trouver les meilleurs hyperparamètres pour un modèle donné (à l’instar de W\&B). Outre les [algorithmes d’échantillonnage](https://optuna.readthedocs.io/en/stable/reference/samplers/index.html), Optuna propose également divers [algorithmes d’élagage](https://optuna.readthedocs.io/en/stable/reference/pruners.html) qui vous permettent d’arrêter prématurément les runs peu performants. C’est particulièrement utile lorsque vous exécutez de nombreux runs, car vous économisez ainsi du temps et 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 qui s’appuie sur la logique de planification d’Optuna à l’aide d’un job.

    1. Commencez par créer votre propre job ou utilisez un job d’image de planificateur Optuna prédéfini.
       * Consultez le dépôt [`wandb/launch-jobs`](https://github.com/wandb/launch-jobs/blob/main/jobs/sweep_schedulers) pour trouver des exemples de création de job personnalisé.
       * 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 du job : `wandb/sweep-jobs/job-optuna-sweep-scheduler:latest`.

    2. Une fois le job créé, vous pouvez créer un sweep. Construisez une configuration de sweep comprenant un bloc `scheduler` avec une clé `job` qui pointe vers le job de planificateur Optuna, comme dans l’exemple suivant.

    ```yaml theme={"system"}
      # 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 scheduler issus d’images
        num_workers: 2

        # paramètres propres à Optuna
        settings:
          pruner:
            type: PercentilePruner
            args:
              percentile: 25.0  # arrête 75 % des runs
              n_warmup_steps: 10  # élagage désactivé pendant 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 à l'aide de la commande `launch-sweep` :

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

    Pour consulter l’implémentation exacte du job de sweep scheduler 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 que permet le scheduler Optuna, consultez [wandb/examples](https://github.com/wandb/examples/tree/master/examples/launch/launch-sweeps/optuna-scheduler).
  </Tab>
</Tabs>

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

<h2 id="resume-sweeps-on-launch">
  Reprendre des sweeps sur Launch
</h2>

Cette section explique comment reprendre un launch-sweep à partir d’un sweep lancé précédemment. Cela est utile si vous souhaitez poursuivre l’exploration avec des paramètres de planificateur mis à jour ou sur une autre file d’attente. Vous ne pouvez pas modifier les hyperparamètres ni la tâche d’entraînement, mais vous pouvez modifier les paramètres propres au planificateur ainsi que la file d’attente vers laquelle il est téléversé.

<Note>
  Si le sweep initial utilisait une tâche d’entraînement avec un alias tel que `latest`, la reprise peut produire des résultats différents si la dernière version de la tâche a changé depuis le dernier run.
</Note>

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

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