Exécutez les algorithmes de recherche et d’arrêt localement plutôt que d’utiliser le service hébergé dans le cloud de Weights & Biases.
Cette page explique comment exécuter localement les algorithmes de recherche et d’arrêt d’un sweep plutôt que d’utiliser le contrôleur hébergé dans le cloud de Weights & Biases. 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 hébergé dans le cloud.Par défaut, Weights & Biases héberge le contrôleur d’hyperparamètres en tant que service cloud. Les agents Weights & Biases communiquent avec le contrôleur pour déterminer le prochain jeu de paramètres à utiliser pour l’entraînement. Le contrôleur exécute également des algorithmes d’arrêt anticipé pour déterminer les runs à 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.
Installez le SDK W&B (wandb) pour disposer des commandes du contrôleur local :
pip install wandb sweeps
Les exemples suivants partent du principe 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 de sweep.
Exécuter un contrôleur local depuis la ligne de commande
Initialisez un sweep comme vous le feriez avec les contrôleurs d’hyperparamètres hébergés par Weights & Biases en tant que service cloud, mais ajoutez l’option --controller pour utiliser le contrôleur local :
Initialisez le sweep avec l’option --controller :
wandb sweep --controller config.yaml
Notez l’ID de sweep généré par wandb sweep, puis démarrez le contrôleur. Remplacez [SWEEP-ID] par l’ID du sweep. Vous pouvez indiquer uniquement l’ID court du sweep ou inclure l’entity et le projet sous forme de chemin ([ENTITY]/[PROJECT]/[SWEEP-ID]) :
wandb controller [SWEEP-ID]
Démarrez un ou plusieurs agents de sweep pour exécuter le sweep. Remplacez [SWEEP-ID] par l’ID du sweep :
Vous pouvez également ajouter le contrôleur à votre fichier de configuration pour ne pas avoir à passer --controller à chaque initialisation du sweep :
controller: type: local
Initialisez ensuite le sweep sans l’option, puis passez aux é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 contrôle de plus en plus fin : vous pouvez ainsi choisir l’approche adaptée au degré de personnalisation dont vous avez besoin pour la recherche et la planification.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 lancer le job de sweep :
sweep = wandb.controller(sweep_id)sweep.run()
Pour un contrôle plus fin de la boucle du contrôleur, exécutez-la vous-même étape par étape :
import wandbsweep = wandb.controller(sweep_id)while not sweep.done(): sweep.print_status() sweep.step() time.sleep(5)
Pour contrôler encore plus finement les paramètres fournis, appelez directement search et schedule :
Pour définir votre sweep entièrement dans le code plutôt que dans un fichier de configuration YAML, configurez la recherche, le programme, le contrôleur et les paramètres en Python :