Script d’entraînement original
val_acc).
Dans votre script Python, vous définissez deux fonctions : train_one_epoch et evaluate_one_epoch. La fonction train_one_epoch simule l’entraînement sur une époque et renvoie la précision et la perte d’entraînement. La fonction evaluate_one_epoch simule l’évaluation du modèle sur l’ensemble de données de validation et renvoie la précision et la perte de validation.
Vous définissez un dictionnaire de configuration nommé config qui contient des valeurs d’hyperparamètres telles que le taux d’apprentissage, la taille de lot et le nombre d’époques. Les valeurs de ce dictionnaire de configuration contrôlent le processus d’entraînement.
Ensuite, vous définissez une fonction appelée main qui reproduit une boucle d’entraînement classique. À chaque époque, le script calcule la précision et la perte sur les ensembles de données d’entraînement et de validation.
Ce code est un script d’entraînement fictif. Il n’entraîne pas réellement de modèle, mais simule le processus d’entraînement en générant des valeurs aléatoires de précision et de perte. L’objectif de ce code est de montrer comment intégrer W&B dans votre script d’entraînement.
val_acc).
Ajoutez W&B à votre script d’entraînement
- CLI
- Script Python ou notebook
Créez un fichier de configuration YAML pour votre sweep. Ce fichier contient les hyperparamètres que vous voulez explorer avec le sweep. Dans l’exemple suivant, le sweep fait varier les hyperparamètres Pour plus d’informations, voir Définir la configuration du sweep.Vous devez fournir le nom de votre script Python pour la clé Après avoir mis à jour votre script d’entraînement, initialisez et démarrez le sweep depuis votre CLI :
batch_size, epochs et lr à chaque exécution.program
dans votre fichier YAML.Ensuite, ajoutez ce qui suit à l’exemple de code :- Importez le SDK Python de W&B (
wandb) et PyYAML (yaml). Utilisez PyYAML pour lire votre fichier de configuration YAML. - Chargez le fichier de configuration.
- Utilisez
wandb.init()pour démarrer un processus d’arrière-plan afin de synchroniser et d’enregistrer les données en tant que W&B Run. Passez l’objet config au paramètre config. - Définissez les valeurs des hyperparamètres à partir de
wandb.Run.configau lieu d’utiliser des valeurs codées en dur. - Enregistrez la métrique que vous souhaitez optimiser avec
wandb.Run.log(). Vous devez enregistrer la métrique définie dans votre configuration. Dans le dictionnaire de configuration (sweep_configurationdans cet exemple), vous définissez le sweep de manière à maximiser la valeurval_acc.
-
Initialisez le sweep avec la commande
wandb sweep. Fournissez le nom du fichier YAML. Si vous le souhaitez, définissez l’option--projectsur le nom du projet :Cela renvoie un ID de sweep. Pour plus d’informations, voir Initialiser les sweeps. -
Copiez l’ID du sweep et remplacez
[SWEEP-ID]dans la commande suivante pour démarrer le job du sweep avec la commandewandb agent. Remplacez[YOUR-ENTITY]par le nom de votre entité W&B. Si vous le souhaitez, définissez--countpour limiter le nombre de runs que l’agent lance (cet exemple le définit sur cinq) :
Journal des métriques dans W&B lors d’un balayageVous devez journaliser la métrique que vous définissez et que vous optimisez, à la fois dans votre configuration de balayage et avec L’exemple suivant montre une journalisation incorrecte de la métrique dans W&B. La métrique optimisée dans la configuration de balayage est
wandb.Run.log(). Par exemple, si vous définissez val_acc comme métrique à optimiser dans votre configuration de balayage, vous devez également journaliser val_acc dans W&B. Si vous ne journalisez pas cette métrique, W&B ne peut pas effectuer l’optimisation.val_acc, mais le code journalise val_acc dans un dictionnaire imbriqué sous la clé validation. Vous devez journaliser la métrique directement, et non dans un dictionnaire imbriqué.