Concevoir l’intégration
Avant d’ajouter W&B à votre bibliothèque, déterminez :- Si wandb est une dépendance requise ou facultative.
- Si les utilisateurs peuvent exécuter votre bibliothèque sans enregistrer ni téléverser de données W&B.
- Quelles valeurs de configuration, métriques et quels artefacts votre bibliothèque journalise.
- S’il faut prendre en charge l’optimisation des hyperparamètres avec les balayages W&B.
- S’il faut partager des artefacts, tels que des modèles et des jeux de données, via le Registry W&B de votre organisation.
- Comment votre bibliothèque gère l’entraînement distribué et plusieurs processus.
Choisissez comment installer W&B
Choisissez d’installer automatiquement W&B avec votre bibliothèque ou de l’exposer comme fonctionnalité facultative.Inclure W&B comme dépendance
Si W&B est au cœur de votre bibliothèque, ajoutezwandb à ses dépendances.
Pour un fichier requirements.txt :
requirements.txt
pyproject.toml :
pyproject.toml
Faites de W&B une dépendance facultative
Si W&B est une fonctionnalité facultative, permettez l’installation de votre bibliothèque sanswandb.
Déclarez W&B en tant que dépendance facultative dans pyproject.toml :
pyproject.toml
Authentifiez les utilisateurs
W&B utilise des clés API pour authentifier les utilisateurs et les machines. Avant de pouvoir enregistrer des runs depuis votre bibliothèque, vous devez générer une clé API et la rendre disponible pour le clientwandb.
W&B prend en charge l’authentification via le CLI, les variables d’environnement et wandb.login().
Créer 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.
S’authentifier depuis la ligne de commande
Dans votre terminal, exécutez :WANDB_API_KEY :
S’authentifier depuis Python
Dans un environnement Python interactif ou un notebook, appelez :wandb.login() dans du code de bibliothèque réutilisable, car cela peut interrompre les flux de travail non interactifs.
Rendre la journalisation W&B facultative
Choisissez si W&B enregistre ou téléverse les données de run.
Utilisez
disabled si vous ne souhaitez pas enregistrer les données de run. Utilisez offline si vous souhaitez enregistrer les données localement pour les téléverser ultérieurement.
Utiliser le mode disabled
Transmettez mode="disabled" à wandb.init() :
WANDB_MODE dans l’environnement :
Utiliser le mode offline
Transmettez mode="offline" à wandb.init() :
WANDB_MODE dans l’environnement :
wandb.init() :
Initialiser un run
Après vous être authentifié, initialisez un run pour consigner des métriques, des valeurs de configuration et des artefacts à partir de votre bibliothèque. Appelezwandb.init() et spécifiez le projet et l’entité d’équipe. Si vous omettez le projet, W&B stocke le run dans le projet "uncategorized" par défaut.
Utilisez wandb.init() comme gestionnaire de contexte autour de la boucle d’entraînement. À la sortie du bloc, W&B finalise le run et traite les données en attente avant la fin du processus.
Par exemple, supposons que votre bibliothèque contienne la boucle d’entraînement suivante :
Python
wandb.init() et consignez les métriques avec wandb.Run.log() :
Python
Enregistrez la configuration et les métriques
Enregistrez les valeurs de configuration et les métriques dans W&B afin de pouvoir, avec les membres de votre équipe, comparer, filtrer, regrouper et reproduire des expériences.Enregistrer les valeurs de configuration
Transmettez un dictionnaire de configuration àwandb.init() pour enregistrer les hyperparamètres et d’autres métadonnées.
Utilisez des clés explicites et des valeurs sérialisables au format JSON :
wandb.init() :
wandb.Run.config.update() :
Consigner des métriques
Consignez des métriques, telles que la perte ou la précision, pendant l’entraînement. Créez un dictionnaire où chaque clé correspond au nom d’une métrique et chaque valeur à sa valeur. Transmettez ce dictionnaire àwandb.Run.log().
L’extrait de code suivant consigne les métriques d’entraînement et de validation dans W&B :
Python
train/ et val/ pour regrouper les métriques associées.
Pour en savoir plus sur la journalisation des types de données pris en charge, des données suivies automatiquement et les bonnes pratiques, voir Consigner des métriques et des données.
Pour suivre les modèles et les jeux de données, voir la section Suivre les modèles et les jeux de données avec des artefacts.
Définir un axe personnalisé pour le journal
Par défaut, W&B représente les métriques enregistrées en fonction d’une étape incrémentée automatiquement. Chaque appel àwandb.Run.log() incrémente l’étape.
Utilisez wandb.Run.define_metric() pour représenter une métrique en fonction d’une autre valeur, telle qu’une époque ou une étape globale.
L’exemple suivant définit x_axis_squared comme axe X pour validation_loss. À chaque itération de la boucle, x_axis_squared correspond au carré de l’index i et validation_loss à une valeur générée aléatoirement :
Python
Suivre les modèles et les jeux de données avec des artefacts
En plus des métriques, vous pouvez conserver les modèles et les jeux de données que votre bibliothèque produit ou consomme afin que vous et les membres de votre équipe puissiez reproduire et comparer les runs. Utilisez W&B Artifacts pour gérer les versions des modèles, des jeux de données et des autres fichiers que votre bibliothèque produit ou consomme. Avant d’ajouter la prise en charge des artefacts, déterminez :- Quels fichiers journaliser.
- Si la journalisation des artefacts est facultative.
- À quelle fréquence journaliser les points de contrôle.
- Comment nommer les artefacts et les alias.
- Quels artefacts représentent les entrées et les sorties des runs.
Journaliser les points de contrôle du modèle
Journalisez les points de contrôle du modèle sous forme d’artefacts afin de pouvoir récupérer, versionner et partager les poids entraînés. Incluez l’ID du run dans le nom de l’artefact afin d’associer chaque point de contrôle à son run d’origine. L’exemple suivant journalise un point de contrôle toutes les 10 époques. Il crée un artefact dont le nom inclut l’ID du run, y ajoute les poids du modèle depuis un répertoire local et journalise l’artefact avec un alias personnalisé.Python
Suivre les entrées d’un run
Utilisezwandb.Run.use_artifact() lorsqu’un run utilise un artefact, tel qu’un jeu de données ou un point de contrôle de modèle. W&B enregistre l’artefact comme entrée du run.
Indiquez le nom de l’artefact et, éventuellement, un alias pour faire référence à une version spécifique de cet artefact. Le nom de l’artefact utilise le format artifact_name:version ou artifact_name:alias.
Python
Suivre les sorties d’une exécution
Utilisezwandb.Run.log_artifact() pour consigner un artefact en tant que sortie d’une exécution.
- Créez un artefact avec
wandb.Artifact(). - Ajoutez un ou plusieurs fichiers à l’artefact.
- Consignez l’artefact avec
wandb.Run.log_artifact().
Télécharger des artefacts
Utilisez l’API publique W&B pour télécharger un artefact sans créer de run ni enregistrer de relation entre un run et une entrée.Lier des artefacts au W&B Registry
Utilisez le W&B Registry pour partager et gérer des versions d’artefacts entre équipes. Avant de lier une version d’artefact, déterminez :- Quelles versions d’artefacts partager.
- Auxquelles des collections les lier.
- Dans quel registre les publier.
Le registre de destination doit déjà exister.
Ajuster les hyperparamètres
Si votre bibliothèque prend en charge l’optimisation des hyperparamètres, intégrez les balayages W&B pour effectuer des recherches par grille, aléatoires ou bayésiennes. Pour plus d’informations, voir Sweeps.Prise en charge de l’entraînement distribué
Si votre bibliothèque prend en charge plusieurs processus ou machines, définissez quels processus doivent créer des runs et consigner des données. Les approches courantes comprennent :- Journalisez uniquement depuis le processus principal. Cette approche évite les doublons de métriques et d’artefacts.
- Créez un run pour chaque processus et regroupez les runs à l’aide d’une valeur
grouppartagée.