Ce guide fournit des recommandations pour intégrer W&B à votre script d’entraînement Python ou à votre notebook afin d’optimiser la recherche d’hyperparamètres.Documentation Index
Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
Use this file to discover all available pages before exploring further.
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 pendant 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 le jeu de données de validation et renvoie la précision et la perte de validation.
Vous définissez un dictionnaire de configuration (config) qui contient des valeurs d’hyperparamètres telles que le taux d’apprentissage (lr), la taille du lot (batch_size) et le nombre d’époques (epochs). Les valeurs du 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. Pour chaque époque, la précision et la perte sont calculées sur les jeux de données d’entraînement et de validation.
Ce code est un script d’entraînement factice. Il n’entraîne pas 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 à 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 avec la configuration de votre balayage. Le
fichier de configuration contient les hyperparamètres que vous souhaitez que le balayage explore. Dans
l’exemple suivant, les hyperparamètres de taille de lot (Pour en savoir plus sur la création d’une configuration de balayage W&B, voir Définir la configuration de balayage.Vous devez fournir le nom de votre script Python pour la clé Dans votre CLI, définissez le nombre maximal de runs que l’agent de
balayage doit essayer. C’est facultatif. Dans cet exemple, nous fixons ce
nombre maximal à 5.Ensuite, initialisez le balayage avec la commande Cela renvoie un ID de balayage. Pour en savoir plus sur l’initialisation des balayages, voir
Initialiser les balayages.Copiez l’ID de balayage et remplacez Pour plus d’informations, voir Lancer des jobs de balayage.
batch_size), d’époques (epochs) et de
taux d’apprentissage (lr) varient à chaque balayage.program
dans votre fichier YAML.Ensuite, ajoutez les éléments suivants à l’exemple de code :- Importez le SDK Python de W&B (
wandb) et PyYAML (yaml). PyYAML sert à lire notre fichier de configuration YAML. - Lisez le fichier de configuration.
- Utilisez
wandb.init()pour démarrer un processus en arrière-plan afin de synchroniser et journaliser les données en tant que W&B Run. Transmettez l’objet de configuration au paramètreconfig. - Définissez les valeurs des hyperparamètres à partir de
wandb.Run.configau lieu d’utiliser des valeurs codées en dur. - Journalisez la métrique que vous souhaitez optimiser avec
wandb.Run.log(). Vous devez journaliser la métrique définie dans votre configuration. Dans le dictionnaire de configuration (sweep_configurationdans cet exemple), vous définissez le balayage pour maximiser la valeurval_acc.
wandb sweep. Indiquez le nom du fichier YAML. Vous pouvez aussi indiquer le nom du projet avec l’option de projet (--project) :sweepID dans l’extrait de code suivant pour démarrer
le job de balayage avec la commande wandb agent :Journalisation 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 saura pas quoi optimiser.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é.