Passer au contenu principal
Enregistrez un dictionnaire de métriques, de médias ou d’objets personnalisés pour une step avec le SDK Python W&B. W&B collecte les paires clé-valeur à chaque étape et les stocke dans un dictionnaire unique chaque fois que vous enregistrez des données avec wandb.Run.log(). Les données enregistrées depuis votre script sont sauvegardées localement sur votre machine dans un répertoire nommé wandb, puis synchronisées avec le cloud W&B ou votre serveur privé.
Les paires clé-valeur ne sont stockées dans un dictionnaire unique que si vous transmettez la même valeur pour chaque étape. W&B écrit en mémoire toutes les clés et valeurs collectées si vous enregistrez une valeur différente pour step.
Par défaut, chaque appel à wandb.Run.log() correspond à une nouvelle step. W&B utilise les étapes comme axe X par défaut lorsqu’il crée des graphiques et des panneaux. Vous pouvez aussi créer et utiliser un axe X personnalisé, ou capturer une métrique récapitulative personnalisée. Pour plus d’informations, voir Personnaliser les axes des logs.
Utilisez wandb.Run.log() pour journaliser des valeurs successives à chaque step : 0, 1, 2, etc. Il n’est pas possible d’écrire dans une étape spécifique de l’historique. W&B n’écrit que dans l’étape « actuelle » et l’étape « suivante ».

Données enregistrées automatiquement

W&B enregistre automatiquement les informations suivantes pendant une expérience W&B :
  • Métriques système : utilisation du CPU et du GPU, réseau, etc. Pour le GPU, elles sont récupérées avec nvidia-smi.
  • Ligne de commande : stdout et stderr sont capturés et s’affichent dans l’onglet des journaux de la page du run.
Activez l’enregistrement du code dans la page Settings de votre compte pour enregistrer :
  • Commit Git : le dernier commit git est récupéré et visible dans l’onglet Vue d’ensemble de la page du run, ainsi qu’un fichier diff.patch s’il existe des modifications non validées.
  • Dépendances : le fichier requirements.txt est téléversé et affiché dans l’onglet des fichiers de la page du run, avec tous les fichiers que vous enregistrez dans le répertoire wandb du run.

Quelles données sont enregistrées avec des appels d’API W&B spécifiques ?

Avec W&B, vous pouvez décider exactement de ce que vous souhaitez enregistrer. La liste suivante présente quelques objets couramment enregistrés :
  • Datasets : Vous devez enregistrer explicitement des images ou d’autres échantillons de jeu de données pour qu’ils soient envoyés en streaming vers W&B.
  • Plots : Utilisez wandb.plot() avec wandb.Run.log() pour suivre des graphiques. Voir Consigner des graphiques pour plus d’informations.
  • Tables : Utilisez wandb.Table pour enregistrer des données afin de les visualiser et de les interroger avec W&B. Voir Consigner des tableaux pour plus d’informations.
  • Gradients PyTorch : Ajoutez wandb.Run.watch(model) pour voir les gradients des poids sous forme d’histogrammes dans l’UI.
  • Informations de configuration : Enregistrez les hyperparamètres, un lien vers votre jeu de données ou le nom de l’architecture que vous utilisez comme paramètres de configuration, transmis comme ceci : wandb.init(config=your_config_dictionary).
  • Métriques : Utilisez wandb.Run.log() pour voir les métriques de votre modèle. Si vous enregistrez des métriques comme accuracy et loss dans votre boucle d’entraînement, vous obtiendrez des graphiques mis à jour en direct dans l’UI.

Contraintes de dénomination des métriques

En raison des limitations de GraphQL, les noms de métriques dans W&B doivent respecter des règles de dénomination spécifiques :
  • Caractères autorisés : lettres (A-Z, a-z), chiffres (0-9) et underscores (_)
  • Caractère initial : les noms doivent commencer par une lettre ou un underscore
  • Motif : les noms de métriques doivent correspondre à /^[_a-zA-Z][_a-zA-Z0-9]*$/
Évitez de donner aux métriques des noms contenant des caractères non valides (comme des virgules, des espaces ou des symboles spéciaux), car cela peut entraîner des problèmes de tri, de requête ou d’affichage dans l’UI W&B.
Noms de métriques valides :
with wandb.init() as run:
  run.log({"accuracy": 0.9, "val_loss": 0.1, "epoch_5": 5})
  run.log({"modelAccuracy": 0.95, "learning_rate": 0.001})
Noms de métriques non valides (à éviter) :
with wandb.init() as run:
  run.log({"acc,val": 0.9})  # Contient une virgule
  run.log({"loss-train": 0.1})  # Contient un trait d'union
  run.log({"test acc": 0.95})  # Contient un espace
  run.log({"5_fold_cv": 0.8})  # Commence par un chiffre

Flux de travail courants

  1. Comparer la meilleure accuracy : Pour comparer la meilleure valeur d’une métrique entre plusieurs runs, définissez la valeur summary de cette métrique. Par défaut, summary correspond à la dernière valeur enregistrée pour chaque clé. Cela est utile dans le tableau de l’UI, où vous pouvez trier et filtrer les runs selon leurs métriques summary, afin de comparer les runs dans un tableau ou un graphique en barres en fonction de leur meilleure accuracy, plutôt que de leur accuracy finale. Par exemple : wandb.run.summary["best_accuracy"] = best_accuracy
  2. Afficher plusieurs métriques sur un même graphique : Enregistrez plusieurs métriques dans le même appel. Par exemple :
    with wandb.init() as run:
      run.log({"acc": 0.9, "loss": 0.1})
    
    Vous pouvez ensuite afficher les deux métriques dans l’UI.
  3. Personnaliser l’axe X : Ajoutez un axe X personnalisé au même appel log pour visualiser vos métriques par rapport à un autre axe dans le tableau de bord W&B. Par exemple :
    with wandb.init() as run:
      run.log({'acc': 0.9, 'epoch': 3, 'batch': 117})
    
    Pour définir l’axe X par défaut pour une métrique donnée, utilisez Run.define_metric().
  4. Enregistrer des médias enrichis et des graphiques : wandb.Run.log() prend en charge l’enregistrement d’une grande variété de types de données, des médias comme les images et les vidéos aux tableaux et aux graphiques.

Bonnes pratiques et conseils

Pour connaître les bonnes pratiques et conseils relatifs à Experiments et au logging, voir Bonnes pratiques : Experiments et Logging.