Skip to main content
PyTorch Lightning fournit un wrapper léger qui permet d’organiser votre code PyTorch et d’ajouter des fonctionnalités avancées comme l’entraînement distribué et la précision 16 bits. W&B fournit un wrapper léger pour journaliser vos expériences de ML. Inutile de combiner les deux vous-même : la bibliothèque PyTorch Lightning intègre directement W&B via le WandbLogger. Cette page explique comment utiliser WandbLogger pour suivre des métriques, journaliser des hyperparamètres, enregistrer des points de contrôle de modèle sous forme d’artifacts, journaliser des médias et lancer un entraînement multi-GPU avec PyTorch Lightning et W&B.

Intégrer avec Lightning

Les sections suivantes expliquent comment vous authentifier auprès de W&B, installer la bibliothèque wandb et joindre un WandbLogger à votre Trainer Lightning ou à votre instance Fabric.
Utilisation de wandb.log() : le WandbLogger journalise dans W&B à partir du global_step du Trainer. Si vous appelez également wandb.log() directement dans votre code, n’utilisez pas l’argument step de wandb.log().Journalisez plutôt le global_step du Trainer comme n’importe quelle autre métrique :
Tableaux de bord interactifs

S’inscrire et créer une clé API

Une clé API authentifie votre machine auprès de W&B. Vous pouvez générer une clé API depuis votre profil utilisateur.
Pour plus de simplicité, accédez aux Paramètres utilisateur et créez une clé API. Copiez immédiatement la clé API et enregistrez-la dans un emplacement sécurisé, par exemple un gestionnaire de mots de passe.
Pour générer une clé API depuis votre profil utilisateur :
  1. Cliquez sur l’icône de votre profil utilisateur dans le coin supérieur droit.
  2. Sélectionnez Paramètres utilisateur, puis faites défiler la page jusqu’à la section API Keys.

Installer la bibliothèque wandb et se connecter

Pour installer la bibliothèque wandb en local et vous connecter :
  1. Définissez la variable d’environnement WANDB_API_KEY sur votre clé API. Remplacez les valeurs entre <> par les vôtres :
  2. Installez la bibliothèque wandb et connectez-vous.

Utiliser le WandbLogger de PyTorch Lightning

PyTorch Lightning propose plusieurs classes WandbLogger pour consigner les métriques, les poids du modèle et les médias. Choisissez la classe qui correspond à votre configuration d’entraînement : Pour l’intégration avec Lightning, instanciez le WandbLogger et transmettez-le au Trainer ou à Fabric de Lightning.

Arguments courants du logger

Le tableau suivant répertorie les paramètres courants de WandbLogger. Pour plus de détails sur l’ensemble des arguments du logger, consultez la documentation de PyTorch Lightning.

Journaliser vos hyperparamètres

Journaliser vos hyperparamètres avec W&B vous permet de comparer des runs et de reproduire des résultats. Utilisez la méthode adaptée à votre logger :

Journaliser des paramètres de configuration supplémentaires

Pour capturer des valeurs de configuration additionnelles parallèlement à vos hyperparamètres, mettez directement à jour la configuration de run :

Journaliser les gradients, l’histogramme des paramètres et la topologie du modèle

Transmettez l’objet de votre modèle à wandb_logger.watch() pour surveiller ses gradients et ses paramètres pendant l’entraînement. Voir la documentation de WandbLogger de PyTorch Lightning.

Consigner des métriques

Pour consigner vos métriques dans W&B avec le WandbLogger, appelez self.log('my_metric_name', metric_value) dans votre LightningModule, par exemple dans vos méthodes training_step ou validation_step.L’extrait de code suivant montre comment définir votre LightningModule pour consigner vos métriques ainsi que ses hyperparamètres. Cet exemple utilise la bibliothèque torchmetrics pour calculer vos métriques.

Journaliser le min/max d’une métrique

La fonction define_metric de W&B vous permet de choisir si votre métrique de synthèse W&B affiche la valeur minimale, maximale, moyenne ou la meilleure valeur de cette métrique. Si vous n’utilisez pas define_metric, c’est la dernière valeur journalisée qui 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 :

Créer des points de contrôle d’un modèle

En enregistrant les points de contrôle sous forme d’artifacts W&B, vous obtenez des fichiers de modèle versionnés que vous pouvez récupérer ultérieurement par run, par alias ou par version. Pour enregistrer les points de contrôle du modèle en tant qu’artifacts W&B, utilisez le callback Lightning ModelCheckpoint et définissez l’argument log_model dans le WandbLogger.
Les alias latest et best sont définis automatiquement pour faciliter la récupération d’un point de contrôle de modèle à partir d’un artifact W&B :
Les points de contrôle de modèle que vous journalisez sont consultables dans l’interface utilisateur de W&B Artifacts et incluent la traçabilité complète du modèle (voir un exemple de point de contrôle de modèle dans l’interface utilisateur). Pour mettre en favoris vos meilleurs points de contrôle de modèle et les centraliser à l’échelle de votre équipe, liez-les au W&B Model Registry. Dans le registre, vous pouvez organiser vos meilleurs modèles par tâche, gérer leur cycle de vie, assurer leur suivi et leur audit tout au long du cycle de vie ML, et automatiser des actions en aval à l’aide de webhooks ou de jobs.

Journaliser des images, du texte et plus encore

Le WandbLogger dispose des méthodes log_image, log_text et log_table pour journaliser des médias. Vous pouvez également appeler directement wandb.log() ou trainer.logger.experiment.log() pour journaliser d’autres types de médias, comme l’audio, les molécules, les nuages de points et les objets 3D.
Utilisez le système de Callbacks de Lightning pour déterminer à quel moment journaliser dans W&B via le WandbLogger. L’exemple suivant journalise un échantillon d’images de validation et de prédictions :

Utiliser plusieurs GPU avec Lightning et W&B

Lors d’un entraînement distribué, la manière dont vous référencez wandb.run d’un rank à l’autre peut déterminer si l’entraînement se poursuit ou aboutit à un interblocage. Cette section présente les exigences à respecter et propose un modèle recommandé. PyTorch Lightning prend en charge le multi-GPU via son interface DDP. Toutefois, la conception de PyTorch Lightning vous oblige à être attentif à la manière dont vous instanciez vos GPU. Lightning exige que chaque GPU (ou rank) de votre boucle d’entraînement soit instancié exactement de la même manière, avec les mêmes conditions initiales. Or, seul le processus de rank 0 a accès à l’objet wandb.run. Pour les processus de rank non nul, wandb.run = None, ce qui peut provoquer leur échec. Vous risquez alors un interblocage : le processus de rank 0 attend que les processus de rank non nul le rejoignent, alors que ceux-ci ont déjà planté. C’est pourquoi vous devez être attentif à la manière dont vous configurez votre code d’entraînement. L’approche recommandée consiste à rendre votre code indépendant de l’objet wandb.run.

Exemples

Pour un guide pas à pas complet, suivez ce tutoriel vidéo accompagné d’un notebook Colab.

Questions fréquentes

Comment W&B s’intègre-t-il à Lightning ?

L’intégration principale est basée sur l’API loggers de Lightning, qui vous permet d’écrire une grande partie de votre code de journalisation indépendamment du framework utilisé. Les instances de Logger sont transmises au Trainer de Lightning et sont déclenchées par le riche système de hooks et de callbacks de cette API. Votre code de recherche reste ainsi bien séparé du code d’ingénierie et de journalisation.

Que journalise l’intégration sans code supplémentaire ?

W&B enregistre les points de contrôle de votre modèle, que vous pouvez consulter ou télécharger pour les réutiliser dans de futurs runs. W&B capture également des métriques système, comme l’utilisation du GPU et les E/S réseau, ainsi que des informations sur l’environnement, comme le matériel et le système d’exploitation. Il capture l’état du code, notamment le commit Git et le patch de diff, le contenu du notebook et l’historique de session. Enfin, il capture tout ce qui est affiché sur la sortie standard.

Que faire si je dois utiliser wandb.run dans ma configuration d’entraînement ?

Vous devez étendre vous-même la portée de la variable à laquelle vous souhaitez accéder. Autrement dit, assurez-vous que les conditions initiales sont identiques dans tous les processus.
Si c’est le cas, vous pouvez utiliser os.environ["WANDB_DIR"] pour configurer le répertoire des points de contrôle du modèle. Ainsi, tout processus dont le rank est non nul peut accéder à wandb.run.dir.
Dernière modification le 30 septembre 2026