WandbLogger.
Cette page explique comment utiliser WandbLogger pour suivre les métriques, consigner les hyperparamètres, enregistrer des points de contrôle du modèle comme artifacts, consigner des médias et exécuter un entraînement multi-GPU avec PyTorch Lightning et W&B.
Intégrer Lightning
wandb et joindre un WandbLogger à votre instance Lightning Trainer ou Fabric.
- Logger PyTorch
- Logger Fabric
Utilisation de
wandb.log() : Le WandbLogger envoie les journaux vers W&B en utilisant le global_step du Trainer. Si vous effectuez des appels supplémentaires à wandb.log() directement dans votre code, n’utilisez pas l’argument step dans wandb.log().À la place, journalisez le global_step du Trainer comme vos autres métriques :
Inscrivez-vous et créez une clé API
Pour une méthode plus directe, accédez aux Paramètres utilisateur et créez une clé API. Copiez immédiatement la clé API et conservez-la dans un endroit sûr, par exemple dans un gestionnaire de mots de passe.
- Cliquez sur l’icône de votre profil en haut à droite.
- Sélectionnez Paramètres utilisateur, puis faites défiler jusqu’à la section Clés API.
Installez la bibliothèque wandb et connectez-vous
wandb localement et vous connecter :
- Ligne de commande
- Python
- Python notebook
-
Définissez la variable d’environnement
WANDB_API_KEYsur votre clé API. Remplacez les valeurs entre<>par les vôtres : -
Installez la bibliothèque
wandbet connectez-vous.
Utiliser le WandbLogger de PyTorch Lightning
WandbLogger pour consigner des métriques, ainsi que les poids du modèle et des médias. Choisissez la classe qui correspond à votre configuration d’entraînement :
Pour l’utiliser avec Lightning, instanciez WandbLogger, puis transmettez-le à Trainer ou à Fabric de Lightning.
- Logger PyTorch
- Logger Fabric
Arguments courants du logger
WandbLogger. Consultez la documentation de PyTorch Lightning pour en savoir plus sur tous les arguments du logger.
Journalisez vos hyperparamètres
- Logger PyTorch
- Logger Fabric
Journaliser des paramètres de configuration supplémentaires
Journaliser les gradients, l’histogramme des paramètres et la topologie du modèle
wandb_logger.watch() pour surveiller les gradients et les paramètres de votre modèle pendant l’entraînement. Voir la documentation de WandbLogger pour PyTorch Lightning.
Journaliser des métriques
- Logger PyTorch
- Fabric Logger
Pour journaliser vos métriques dans W&B lorsque vous utilisez
WandbLogger, appelez self.log('my_metric_name', metric_value) dans votre LightningModule, par exemple dans les méthodes training_step ou validation_step.L’extrait de code suivant montre comment définir votre LightningModule pour journaliser vos métriques ainsi que les hyperparamètres de votre LightningModule. Cet exemple utilise la bibliothèque torchmetrics pour calculer vos métriques.Journaliser les valeurs min/max d’une métrique
define_metric de W&B, vous pouvez définir si votre métrique de synthèse W&B affiche la valeur minimale, maximale, moyenne ou la meilleure valeur pour cette métrique. Si define_metric n’est pas utilisé, la dernière valeur enregistrée apparaît dans vos métriques de synthèse. Pour plus d’informations, voir le guide de personnalisation des axes de journalisation.
Pour suivre la précision de validation maximale dans la métrique de synthèse W&B, appelez wandb.define_metric() une seule fois, au début de l’entraînement :
- Logger PyTorch
- Logger Fabric
Créer un point de contrôle du modèle
ModelCheckpoint et définissez l’argument log_model dans WandbLogger.
- Logger PyTorch
- Logger Fabric
latest et best sont définis automatiquement pour vous permettre de récupérer facilement un point de contrôle du modèle depuis un artifact W&B :
- Via Logger
- Via wandb
- Logger PyTorch
- Logger Fabric
Journaliser des images, du texte et plus encore
WandbLogger fournit les méthodes log_image, log_text et log_table pour la journalisation de médias.
Vous pouvez aussi appeler directement wandb.log() ou trainer.logger.experiment.log() pour journaliser d’autres types de médias, comme Audio, des molécules, des nuages de points et des objets 3D.
- Journaliser des images
- Journaliser du texte
- Journaliser des tableaux
WandbLogger. L’exemple suivant journalise un échantillon d’images de validation et de prédictions :
Utiliser plusieurs GPU avec Lightning et W&B
wandb.run d’un rang à l’autre peut déterminer si l’entraînement se poursuit ou s’il entre en interblocage. Cette section explique les exigences et présente un modèle recommandé.
PyTorch Lightning prend en charge le multi-GPU via son interface DDP. Cependant, la conception de PyTorch Lightning exige que vous fassiez attention à la façon dont vous instanciez vos GPU.
Lightning exige que chaque GPU (ou rang) dans votre boucle d’entraînement soit instancié exactement de la même manière, avec les mêmes conditions initiales. Cependant, seul le processus de rang 0 a accès à l’objet wandb.run. Pour les processus de rang non nul, wandb.run = None. Cela peut faire échouer vos processus non nuls. Une telle situation peut vous placer dans un interblocage, car le processus de rang 0 attend que les processus de rang non nul le rejoignent, alors qu’ils ont déjà planté.
Pour cette raison, faites attention à la façon dont vous configurez votre code d’entraînement. La méthode recommandée consiste à rendre votre code indépendant de l’objet wandb.run.
Exemples
Foire aux questions
Comment W&B s’intègre-t-il à Lightning ?
loggers, qui vous permet d’écrire une grande partie de votre code de journalisation de manière indépendante du framework. Les instances de Logger sont transmises au Lightning Trainer et sont déclenchées par le riche système de hooks et de callbacks de cette API. Cela permet de bien séparer votre code de recherche du code d’ingénierie et de journalisation.
Que l’intégration enregistre-t-elle sans code supplémentaire ?
Que faire si j’ai besoin d’utiliser wandb.run dans ma configuration d’entraînement ?
os.environ["WANDB_DIR"] pour configurer le répertoire des points de contrôle du modèle. Ainsi, tout processus de rang non nul peut accéder à wandb.run.dir.