Concevoir l’intégration
Avant d’ajouter W&B à votre bibliothèque, déterminez les points suivants :- Si wandb est une dépendance obligatoire 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, quelles métriques et quels artifacts votre bibliothèque journalise.
- Si vous souhaitez prendre en charge l’optimisation des hyperparamètres avec W&B Sweeps.
- Si vous souhaitez partager des artifacts, tels que des modèles et des jeux de données, via le registre de votre organisation.
- Comment votre bibliothèque gère l’entraînement distribué et les processus multiples.
Choisir le mode d’installation de W&B
Choisissez entre installer W&B automatiquement avec votre bibliothèque ou le proposer comme fonctionnalité facultative.Déclarer W&B comme dépendance obligatoire
Si W&B joue un rôle central dans votre bibliothèque, ajoutezwandb à ses dépendances.
Pour un fichier requirements.txt :
requirements.txt
pyproject.toml :
pyproject.toml
Faire de W&B une dépendance facultative
Si W&B est une fonctionnalité facultative, faites en sorte que votre bibliothèque puisse être installée sanswandb.
Déclarez W&B comme dépendance facultative dans pyproject.toml :
pyproject.toml
Authentifier les utilisateurs
W&B utilise des clés API pour authentifier les utilisateurs et les machines. Avant de pouvoir journaliser des runs depuis votre bibliothèque, vous devez générer une clé API et la mettre à la disposition du clientwandb.
W&B prend en charge l’authentification via la CLI, les variables d’environnement et wandb.login().
Créer une clé API
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.
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() depuis le code d’une 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 du run.
Utilisez
disabled si vous ne souhaitez pas enregistrer les données du run. Utilisez offline si vous souhaitez enregistrer les données en local pour les téléverser plus tard.
Utiliser le mode disabled
Passez mode="disabled" à wandb.init() :
WANDB_MODE dans l’environnement :
Utiliser le mode offline
Passez mode="offline" à wandb.init() :
WANDB_MODE dans l’environnement :
wandb.init() :
Initialiser un run
Une fois authentifié, initialisez un run pour consigner des métriques, des valeurs de configuration et des artifacts depuis votre bibliothèque. Appelezwandb.init() en indiquant le projet et l’entity d’équipe. Si vous omettez le projet, W&B enregistre le run dans le projet par défaut "uncategorized".
Utilisez wandb.init() comme gestionnaire de contexte autour de la boucle d’entraînement. À la sortie du bloc, W&B termine 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 des métriques avec wandb.Run.log() :
Python
Journaliser la configuration et les métriques
Journalisez les valeurs de configuration et les métriques dans W&B afin que vous et les membres de votre équipe puissiez comparer, filtrer, regrouper et reproduire vos expériences.Journaliser 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 descriptives et des valeurs sérialisables en 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 dans lequel chaque clé correspond au nom d’une métrique et chaque valeur à la valeur de cette métrique. Passez ce dictionnaire àwandb.Run.log().
L’extrait de code suivant consigne des métriques d’entraînement et de validation dans W&B :
Python
train/ et val/ pour regrouper les métriques associées.
Pour obtenir des conseils sur la journalisation des types de données pris en charge, les données suivies automatiquement et les bonnes pratiques, consultez Consigner des métriques et des données.
Pour suivre des modèles et des jeux de données, consultez la section Suivre des modèles et des jeux de données avec des artifacts.
Définir un axe de journalisation personnalisé
Par défaut, W&B trace les métriques journalisées en fonction d’un step incrémenté automatiquement. Chaque appel àwandb.Run.log() incrémente le step.
Utilisez wandb.Run.define_metric() pour tracer une métrique en fonction d’une autre valeur, comme une époque ou un step global.
L’exemple suivant définit x_axis_squared comme axe X pour validation_loss. À chaque itération de la boucle, x_axis_squared vaut le carré de l’index i, et validation_loss est une valeur générée aléatoirement :
Python
Suivre les modèles et les jeux de données avec des artifacts
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 des runs. Utilisez W&B Artifacts pour versionner les modèles, les jeux de données et les autres fichiers que votre bibliothèque produit ou consomme. Avant d’ajouter la prise en charge des artifacts, déterminez :- les fichiers à journaliser ;
- si la journalisation des artifacts doit être facultative ;
- la fréquence de journalisation des points de contrôle ;
- la manière de nommer les artifacts et les alias ;
- les artifacts qui 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’artifacts afin de pouvoir récupérer, versionner et partager les poids entraînés. Incluez l’ID du run dans le nom de l’artifact pour 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 artifact dont le nom inclut l’ID du run, y ajoute les poids du modèle à partir d’un répertoire local, puis journalise l’artifact avec un alias personnalisé.Python
Suivre les entrées d’un run
Utilisezwandb.Run.use_artifact() lorsqu’un run utilise un artifact, par exemple un jeu de données ou un point de contrôle de modèle. W&B enregistre l’artifact comme entrée du run.
Indiquez le nom de l’artifact et, si vous le souhaitez, un alias pour cibler une version précise de cet artifact. Le nom de l’artifact se présente au format artifact_name:version ou artifact_name:alias.
Python
Suivre les sorties d’un run
Utilisezwandb.Run.log_artifact() pour journaliser un artifact comme sortie d’un run.
- Créez un artifact avec
wandb.Artifact(). - Ajoutez un ou plusieurs fichiers à l’artifact.
- Journalisez l’artifact avec
wandb.Run.log_artifact().
Télécharger des artifacts
Utilisez l’API publique W&B pour télécharger un artifact sans créer de run ni l’enregistrer comme entrée d’un run.Lier des artifacts au registre
Utilisez Registry pour partager et gérer des versions d’artifact entre équipes. Avant de lier une version d’artifact, déterminez :- les versions d’artifact à partager ;
- les collections auxquelles les lier ;
- le registre dans lequel les publier.
Le registre de destination doit déjà exister.
Optimiser les hyperparamètres
Si votre bibliothèque prend en charge l’optimisation des hyperparamètres, intégrez W&B Sweeps pour effectuer des recherches par grille, aléatoires ou bayésiennes. Pour plus d’informations, voir Sweeps.Prendre en charge l’entraînement distribué
Si votre bibliothèque prend en charge plusieurs processus ou machines, déterminez quels processus créent des runs et journalisent des données. Voici les approches courantes :- Journaliser uniquement depuis le processus principal. Cette approche évite de dupliquer les métriques et les artifacts.
- Créer un run par processus et regrouper les runs à l’aide d’une valeur
groupcommune.