Passer au contenu principal
Cette page explique comment définir, initialiser et exécuter un balayage. Il y a quatre étapes principales :
  1. Configurer votre code d’entraînement
  2. Définir l’espace de recherche à l’aide d’une configuration de balayage
  3. Initialiser le balayage
  4. Démarrer l’agent de balayage
Copiez-collez le code suivant dans un notebook Jupyter ou un script Python :
# Importer la bibliothèque Python W&B et se connecter à W&B
import wandb

# 1 : Définir la fonction objectif/d'entraînement
def objective(config):
    score = config.x**3 + config.y
    return score

def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})

# 2 : Définir l'espace de recherche
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

# 3 : Lancer le balayage
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

wandb.agent(sweep_id, function=main, count=10)
Les sections suivantes détaillent et expliquent chaque étape de l’exemple de code.

Configurez votre code d’entraînement

Définissez une fonction d’entraînement qui récupère les valeurs des hyperparamètres depuis wandb.Run.config, les utilise pour entraîner un modèle, puis renvoie les métriques. Vous pouvez facultativement indiquer le nom du projet dans lequel vous souhaitez stocker la sortie du W&B Run (paramètre project dans wandb.init()). Si aucun projet n’est spécifié, le run est placé dans un projet “Uncategorized”.
Le balayage et le run doivent tous deux se trouver dans le même projet. Par conséquent, le nom fourni lors de l’initialisation de W&B doit correspondre au nom du projet fourni lors de l’initialisation d’un balayage.
# 1 : Définir la fonction objectif/d'entraînement
def objective(config):
    score = config.x**3 + config.y
    return score


def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})

Définissez l’espace de recherche avec une configuration de balayage

Spécifiez les hyperparamètres à balayer dans un dictionnaire. Pour les options de configuration, voir Définir la configuration d’un balayage. L’exemple suivant présente une configuration de balayage qui utilise une recherche aléatoire ('method':'random'). Le balayage sélectionnera aléatoirement des valeurs parmi celles indiquées dans la configuration pour la taille de lot, l’époque et le taux d’apprentissage. W&B minimise la métrique spécifiée dans la clé metric lorsque "goal": "minimize" y est associé. Dans ce cas, W&B cherchera à minimiser la métrique score ("name": "score").
# 2 : Définir l'espace de recherche
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

Initialiser le balayage

W&B utilise un contrôleur de balayage pour gérer les Sweeps dans le cloud (standard) ou localement (local), sur une ou plusieurs machines. Pour plus d’informations sur les contrôleurs de balayage, voir Algorithmes de recherche et d’arrêt en local. Un identifiant de balayage est renvoyé lorsque vous initialisez un balayage :
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
Pour en savoir plus sur l’initialisation des Sweeps, voir Initialiser les Sweeps.

Démarrer le balayage

Utilisez l’appel à l’API wandb.agent() pour démarrer un balayage.
wandb.agent(sweep_id, function=main, count=10)
MultiprocessingVous devez entourer vos appels à wandb.agent() et wandb.sweep() avec if __name__ == '__main__': si vous utilisez multiprocessing de la bibliothèque standard Python ou le package pytorch.multiprocessing de PyTorch. Par exemple :
if __name__ == '__main__':
    wandb.agent(sweep_id="<sweep_id>", function="<function>", count="<count>")
Entourer votre code de cette condition garantit qu’il n’est exécuté que lorsque le script est lancé directement, et non lorsqu’il est importé comme module dans un processus worker.Voir Python standard library multiprocessing ou PyTorch multiprocessing pour plus d’informations sur le multiprocessing. Voir https://realpython.com/if-name-main-python/ pour plus d’informations sur la convention if __name__ == '__main__':.

Visualiser les résultats (facultatif)

Ouvrez votre projet pour voir vos résultats en direct dans le tableau de bord de W&B App. En quelques clics, créez des graphiques riches et interactifs, comme des graphiques en coordonnées parallèles, des analyses de l’importance des paramètres et d’autres types de graphiques.
Exemple de tableau de bord Sweeps
Pour plus d’informations sur la visualisation des résultats, Voir Visualiser les résultats d’un balayage. Pour voir un exemple de tableau de bord, Voir cet exemple de projet Sweeps.

Arrêter l’agent (facultatif)

Dans le terminal, appuyez sur Ctrl+C pour interrompre le run en cours. Appuyez de nouveau sur Ctrl+C pour arrêter l’agent.