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

> Exécutez localement les algorithmes de recherche et d'arrêt au lieu d'utiliser le service cloud hébergé par W&B.

# Gérer les algorithmes localement

Cette page explique comment exécuter localement les algorithmes de recherche et d'arrêt d'un sweep, au lieu d'utiliser le contrôleur cloud hébergé par W\&B. Utilisez le contrôleur local pour inspecter et instrumenter le code afin de déboguer des problèmes ou de développer de nouveaux algorithmes que vous pourrez ensuite intégrer au contrôleur cloud hébergé.

Par défaut, W\&B héberge le contrôleur d'hyperparamètres en tant que service cloud. Les agents W\&B communiquent avec le contrôleur pour déterminer le prochain ensemble de paramètres à utiliser pour l'entraînement. Le contrôleur exécute également des algorithmes d'arrêt anticipé pour déterminer quelles exécutions arrêter.

La fonctionnalité de contrôleur local vous permet d'exécuter localement les algorithmes de recherche et d'arrêt.

<Warning>
  Cette fonctionnalité permet de développer et de déboguer plus rapidement de nouveaux algorithmes pour l'outil Sweeps. Elle n'est pas adaptée aux charges de travail d'optimisation d'hyperparamètres.
</Warning>

<div id="prerequisites">
  ## Prérequis
</div>

Installez le SDK W\&B (`wandb`) pour que les commandes du contrôleur local soient disponibles :

```bash theme={null}
pip install wandb sweeps
```

Les exemples suivants supposent que vous disposez déjà d’un fichier de configuration et d’une boucle d’entraînement définis dans un script Python ou un notebook Jupyter. Pour plus d'informations, voir [Définir la configuration d’un sweep](/fr/models/sweeps/define-sweep-configuration).

<div id="run-a-local-controller-from-the-command-line">
  ## Exécuter un contrôleur local depuis la ligne de commande
</div>

Initialisez un sweep de la même manière que lorsque vous utilisez des contrôleurs d'hyperparamètres hébergés par W\&B en tant que service cloud, mais passez l'option `--controller` pour utiliser le contrôleur local :

1. Initialisez le sweep avec l'option `--controller` :

   ```bash theme={null}
   wandb sweep --controller config.yaml
   ```

2. Notez l'ID du sweep généré par `wandb sweep`, puis démarrez le contrôleur. Remplacez `[SWEEP-ID]` par l'ID du sweep. Vous pouvez passer uniquement l'ID court du sweep ou inclure l'entité et le projet sous forme de chemin (`[ENTITY]/[PROJECT]/[SWEEP-ID]`) :

   ```bash theme={null}
   wandb controller [SWEEP-ID]
   ```

3. Démarrez un ou plusieurs agents de sweep pour exécuter le sweep. Remplacez `[SWEEP-ID]` par l'ID du sweep :

   ```bash theme={null}
   wandb agent [SWEEP-ID]
   ```

   Pour plus d'informations, voir [Démarrer des agents de sweep](/fr/models/sweeps/start-sweep-agents).

Vous pouvez également ajouter le contrôleur à votre fichier de configuration afin de ne pas avoir à passer `--controller` chaque fois que vous initialisez le sweep :

```yaml theme={null}
controller:
  type: local
```

Initialisez ensuite le sweep sans l’option, puis poursuivez avec les étapes 2 et 3 :

```bash theme={null}
wandb sweep config.yaml
```

<div id="run-a-local-controller-with-wb-python-sdk">
  ## Exécuter un contrôleur local avec le SDK Python W\&B
</div>

Les extraits de code suivants montrent comment spécifier et utiliser un contrôleur local avec le SDK Python W\&B. Chaque exemple offre un niveau de contrôle croissant, afin que vous puissiez choisir l'approche qui correspond au degré de personnalisation dont vous avez besoin pour la recherche et l'ordonnancement.

Pour utiliser un contrôleur avec le SDK Python, transmettez l'ID du sweep à la méthode [`wandb.controller()`](/fr/models/ref/python/functions/controller), puis appelez la méthode `run` de l'objet renvoyé pour démarrer la tâche du sweep :

```python theme={null}
sweep = wandb.controller(sweep_id)
sweep.run()
```

Pour avoir un contrôle plus fin sur la boucle du contrôleur, exécutez-la vous-même, étape par étape :

```python theme={null}
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    sweep.print_status()
    sweep.step()
    time.sleep(5)
```

Pour un contrôle encore plus fin des paramètres fournis, appelez directement `search` et `schedule` :

```python theme={null}
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    params = sweep.search()
    sweep.schedule(params)
    sweep.print_status()
```

Pour définir entièrement votre sweep en code plutôt que dans un fichier de configuration YAML, configurez en Python la recherche, le programme, le contrôleur et les paramètres :

```python theme={null}
import wandb

sweep = wandb.controller()
sweep.configure_search("grid")
sweep.configure_program("train-dummy.py")
sweep.configure_controller(type="local")
sweep.configure_parameter("param1", value=3)
sweep.create()
sweep.run()
```
