Passer au contenu principal
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.
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.

Prérequis

Installez le SDK W&B (wandb) pour que les commandes du contrôleur local soient disponibles :
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.

Exécuter un contrôleur local depuis la ligne de commande

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 :
  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]) :
  3. Démarrez un ou plusieurs agents de sweep pour exécuter le sweep. Remplacez [SWEEP-ID] par l’ID du sweep :
    Pour plus d’informations, voir Démarrer des agents de sweep.
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 :
Initialisez ensuite le sweep sans l’option, puis poursuivez avec les étapes 2 et 3 :

Exécuter un contrôleur local avec le SDK Python W&B

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(), puis appelez la méthode run de l’objet renvoyé pour démarrer la tâche du sweep :
Pour avoir un contrôle plus fin sur la boucle du contrôleur, exécutez-la vous-même, étape par étape :
Pour un contrôle encore plus fin des paramètres fournis, appelez directement search et schedule :
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 :