
Contenu de ce notebook
Ce tutoriel explique comment intégrer W&B à votre code d’entraînement PyTorch pour suivre vos expériences, journaliser des métriques et des gradients, et versionner vos modèles. Utilisez-le pour ajouter le suivi des expériences à un pipeline PyTorch existant.
Installer, importer et se connecter
Avant de définir l’expérience, configurez l’environnement et authentifiez-vous auprès de W&B.Étape 0 : installer W&B
Pour commencer, installez la bibliothèquewandb avec pip.
Étape 1 : importer W&B et se connecter
Pour journaliser des données dans le service W&B, vous devez vous connecter. Si vous utilisez W&B pour la première fois, inscrivez-vous gratuitement en suivant le lien qui s’affiche.Définir l’expérience et le pipeline
Une fois W&B installé et votre session authentifiée, définissez la configuration de l’expérience ainsi que le pipeline d’entraînement qui l’utilisera.Suivre les métadonnées et les hyperparamètres avec wandb.init()
Commencez par définir votre expérience dans le code. Quels sont les hyperparamètres ? Quelles métadonnées sont associées à ce run ?
Un flux de travail courant consiste à stocker ces informations dans un dictionnaire config (ou un objet similaire), puis à y accéder selon les besoins.
Cet exemple ne fait varier que quelques hyperparamètres et code le reste en dur. N’importe quel élément de votre modèle peut figurer dans la config.
L’exemple inclut également des métadonnées relatives au dataset MNIST et à une architecture convolutive. Si vous travaillez ensuite, par exemple, avec des architectures entièrement connectées sur CIFAR dans le même projet, ces métadonnées vous aideront à distinguer vos runs.
make: créer un modèle, ainsi que les données et l’optimiseur associés.train: entraîner le modèle en conséquence.test: tester le modèle pour évaluer le déroulement de l’entraînement.
wandb.init(). L’appel de cette fonction établit un canal de communication entre votre code et les serveurs W&B.
Passer le dictionnaire config à wandb.init() journalise immédiatement toutes ces informations dans W&B : vous savez ainsi toujours quelles valeurs d’hyperparamètres vous avez définies pour votre expérience.
Pour garantir que les valeurs choisies et journalisées sont toujours celles qu’utilise votre modèle, W&B recommande d’utiliser la copie run.config de votre objet. Consultez la définition de make ci-dessous pour en voir quelques exemples.
Une fois le pipeline défini, les sections suivantes implémentent successivement chacune de ses étapes : configuration des données et du modèle, entraînement et test.
Remarque : W&B exécute son code dans des processus distincts afin qu’un éventuel problème côté W&B ne fasse pas planter votre code. Une fois le problème résolu, vous pouvez journaliser les données avec wandb sync.
Définir le chargement des données et le modèle
Indiquez ensuite comment les données sont chargées et à quoi ressemble le modèle. Cette étape est importante, mais elle est identique à ce qu’elle serait sanswandb.
wandb ne modifie en rien la définition du modèle ; cet exemple utilise donc une architecture ConvNet standard. N’hésitez pas à expérimenter avec ce code. W&B journalise tous vos résultats sur Forge.
Définir la logique d’entraînement
Poursuivons dansmodel_pipeline : il est temps de définir le fonctionnement de train. C’est à cette étape que l’intégration W&B suit les gradients, les paramètres et les métriques au fil de l’entraînement.
Deux fonctions de wandb entrent ici en jeu : watch et log.
Suivre les gradients avec run.watch() et tout le reste avec run.log()
run.watch() journalise les gradients et les paramètres de votre modèle toutes les log_freq étapes d’entraînement.
Appelez run.watch() avant de lancer l’entraînement. Pour en savoir plus sur les modes de journalisation, l’utilisation de plusieurs modèles et les conseils de performances, consultez Comment puis-je journaliser les gradients et les poids du modèle avec wandb.watch ?.
Le reste du code d’entraînement ne change pas : itérez sur les époques et les lots, effectuez les passes avant et arrière, puis appliquez votre optimizer.
run.log().
run.log() attend un dictionnaire dont les clés sont des chaînes de caractères. Ces chaînes identifient les objets journalisés, qui constituent les valeurs. Vous pouvez également journaliser, de manière facultative, l’étape (step) d’entraînement en cours.
Remarque : utiliser le nombre d’exemples vus par le modèle facilite la comparaison entre différentes tailles de lot, mais vous pouvez aussi utiliser le nombre brut d’étapes ou de lots. Pour les runs d’entraînement plus longs, il peut également être judicieux de journaliser par epoch.
Définir la logique de test
Une fois l’entraînement du modèle terminé, testez-le : exécutez-le par exemple sur de nouvelles données issues de la production, ou appliquez-le à quelques exemples sélectionnés à la main. L’étape de test est aussi le moment idéal pour enregistrer le modèle entraîné.Facultatif : appeler run.save()
C’est également le bon moment pour enregistrer sur disque l’architecture du modèle et ses paramètres finaux. Pour une compatibilité optimale, exportez (export) le modèle au format Open Neural Network eXchange (ONNX).
En transmettant ce nom de fichier à run.save(), vous avez la garantie que les paramètres du modèle sont enregistrés sur les serveurs W&B : fini les incertitudes sur le fichier .h5 ou .pb qui correspond à chaque run d’entraînement.
Pour découvrir des fonctionnalités wandb plus avancées de stockage, de gestion des versions et de distribution des modèles, consultez les outils Artifacts.
Lancer l’entraînement et suivre vos métriques en direct sur wandb.ai
Maintenant que vous avez défini l’ensemble du pipeline et ajouté ces quelques lignes de code W&B, vous pouvez exécuter votre expérience, entièrement suivie. W&B vous indique quelques liens : la documentation, la page du projet (qui regroupe tous les runs d’un projet) et la page du run (où sont stockés les résultats de ce run). Accédez à la page du run et consultez les onglets suivants :- Charts, où les gradients du modèle, les valeurs des paramètres et la perte sont journalisés tout au long de l’entraînement.
- System, qui contient les métriques système, notamment l’utilisation des E/S disque ainsi que les métriques CPU et GPU.
- Logs, qui contient une copie de tout ce qui a été écrit sur la sortie standard pendant l’entraînement.
- Files, où, une fois l’entraînement terminé, vous pouvez cliquer sur
model.onnxpour visualiser votre réseau avec le visualiseur de modèles Netron.
with wandb.init(), W&B affiche également une synthèse des résultats dans la sortie de la cellule.
Tester des hyperparamètres avec des sweeps
Cet exemple ne portait que sur un seul ensemble d’hyperparamètres. Or, dans la plupart des flux de travail de ML, il est essentiel d’itérer sur plusieurs hyperparamètres. Vous pouvez utiliser W&B Sweeps pour automatiser le test des hyperparamètres et explorer l’espace des modèles et des stratégies d’optimisation possibles. Vous pouvez ainsi aller au-delà du run précédent, limité à une seule configuration. Consultez ce notebook Colab illustrant l’optimisation des hyperparamètres avec W&B Sweeps. L’exécution d’un sweep d’hyperparamètres avec W&B se déroule en trois étapes :- Définir le sweep : créez un dictionnaire ou un fichier YAML qui spécifie les paramètres à explorer, la stratégie de recherche, la métrique d’optimisation, etc.
- Initialiser le sweep :
sweep_id = wandb.sweep(sweep_config). - Lancer l’agent de sweep :
wandb.agent(sweep_id, function=train).

Galerie d’exemples
Explorez des exemples de projets suivis et visualisés avec W&B dans la Galerie.Configuration avancée
Les options suivantes permettent d’étendre le flux de travail de base présenté ci-dessus aux environnements de production, hors ligne ou gérés :- Variables d’environnement : définissez les clés API dans des variables d’environnement pour pouvoir lancer l’entraînement sur un cluster géré.
- Mode hors ligne : utilisez le mode
dryrunpour entraîner hors ligne et synchroniser les résultats plus tard. - Sur site : installez W&B dans un cloud privé ou sur des serveurs isolés du réseau au sein de votre propre infrastructure.
- Sweeps : configurez rapidement une recherche d’hyperparamètres grâce à un outil d’optimisation léger.