Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-docs-2661.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Les graphiques personnalisés vous permettent de visualiser les données enregistrées exactement comme vous le souhaitez, au-delà des visualisations par défaut fournies par W&B. Utilisez-les lorsque vous devez représenter des relations, des distributions ou des métriques d’évaluation de modèle que les panneaux intégrés ne couvrent pas, comme les courbes précision-rappel, des histogrammes personnalisés ou des superpositions de plusieurs expériences.
Créez des graphiques personnalisés dans votre projet W&B. Enregistrez des tableaux de données de tout type et visualisez-les exactement comme vous le souhaitez. Contrôlez les détails des polices, des couleurs et des info-bulles grâce à toute la puissance de Vega.
- Journaliser les données : depuis votre script, journalisez les données de configuration et de synthèse.
- Personnaliser le graphique : récupérez les données journalisées à l’aide d’une requête GraphQL. Visualisez les résultats de votre requête avec Vega, une grammaire de visualisation.
- Journaliser le graphique : appelez votre propre préréglage depuis votre script avec
wandb.plot_table().
Si vous ne voyez pas les données attendues, il se peut que la colonne recherchée ne soit pas journalisée dans les runs sélectionnés. Enregistrez votre graphique, revenez au tableau des runs, puis vérifiez les runs sélectionnés à l’aide de l’icône œil.
Enregistrer des graphiques à partir d’un script
Les sections suivantes décrivent deux façons d’enregistrer des graphiques directement depuis votre script d’entraînement : des préréglages de graphiques intégrés pour les visualisations courantes, et des préréglages personnalisés qui vous permettent de réutiliser vos propres spécifications Vega.
W&B propose plusieurs préréglages de graphiques intégrés que vous pouvez journaliser directement depuis votre script. Il s’agit notamment de graphiques en courbes, de nuages de points, de diagrammes à barres, d’histogrammes, de courbes PR et de courbes ROC.
Graphique en courbes
Nuage de points
Diagramme en barres
Histogramme
Courbe précision-rappel
Courbe ROC
wandb.plot.line()Journalisez un graphique en courbes personnalisé : une liste de points reliés et ordonnés (x, y) sur des axes x et y arbitraires.with wandb.init() as run:
data = [[x, y] for (x, y) in zip(x_values, y_values)]
table = wandb.Table(data=data, columns=["x", "y"])
run.log(
{
"my_custom_plot_id": wandb.plot.line(
table, "x", "y", title="Custom Y vs X Line Plot"
)
}
)
Un graphique en courbes enregistre des courbes sur deux dimensions quelconques. Si vous tracez deux listes de valeurs l’une par rapport à l’autre, le nombre de valeurs dans les listes doit correspondre exactement (par exemple, chaque point doit avoir un x et un y).Voir un exemple dans Reports ou essayer un exemple de notebook Google Colab.wandb.plot.scatter()Ajoutez au journal un graphique de dispersion personnalisé : une liste de points (x, y) sur une paire d’axes x et y arbitraires.with wandb.init() as run:
data = [[x, y] for (x, y) in zip(class_x_prediction_scores, class_y_prediction_scores)]
table = wandb.Table(data=data, columns=["class_x", "class_y"])
run.log({"my_custom_id": wandb.plot.scatter(table, "class_x", "class_y")})
Vous pouvez utiliser ceci pour journaliser des points sur n’importe quelles deux dimensions d’un nuage de points. Notez que si vous représentez deux listes de valeurs l’une par rapport à l’autre, le nombre de valeurs dans les listes doit correspondre exactement (par exemple, chaque point doit avoir un x et un y).Voir un exemple de rapport ou essayer un notebook Google Colab d’exemple.wandb.plot.bar()Enregistrez dans le journal un graphique à barres personnalisé (une liste de valeurs étiquetées représentées sous forme de barres) :with wandb.init() as run:
data = [[label, val] for (label, val) in zip(labels, values)]
table = wandb.Table(data=data, columns=["label", "value"])
run.log(
{
"my_bar_chart_id": wandb.plot.bar(
table, "label", "value", title="Custom Bar Chart"
)
}
)
Vous pouvez utiliser ceci pour journaliser n’importe quels graphiques en barres. Notez que le nombre de libellés et de valeurs dans les listes doit correspondre exactement (par exemple, chaque point de données doit avoir les deux).Voir un exemple de rapport ou essayer un notebook d’exemple Google Colab.wandb.plot.histogram()Enregistrez un histogramme personnalisé (répartissez une liste de valeurs dans des classes selon leur nombre ou leur fréquence d’occurrence). Par exemple, supposons que vous ayez une liste de scores de confiance de prédiction (scores) et que vous souhaitiez visualiser leur distribution :with wandb.init() as run:
data = [[s] for s in scores]
table = wandb.Table(data=data, columns=["scores"])
run.log({"my_histogram": wandb.plot.histogram(table, "scores", title=None)})
Vous pouvez utiliser ceci pour enregistrer des histogrammes quelconques. Notez que data est une liste de listes, conçue pour représenter un tableau 2D de lignes et de colonnes.Voir un exemple de rapport ou essayer un notebook Google Colab d’exemple.wandb.plot.pr_curve()Créez une courbe de précision-rappel en une seule ligne :with wandb.init() as run:
plot = wandb.plot.pr_curve(ground_truth, predictions, labels=None, classes_to_plot=None)
run.log({"pr": plot})
Vous pouvez journaliser cela dès que votre code a accès à :
- Aux scores prédits d’un modèle (
predictions) sur un ensemble d’exemples.
- Aux étiquettes de référence correspondantes (
ground_truth) pour ces exemples.
labels (facultatif) : une liste d’étiquettes ou de noms de classes (labels=["cat", "dog", "bird"...] si l’indice d’étiquette 0 correspond à cat, 1 à dog, 2 à bird, etc.).
classes_to_plot (facultatif) : un sous-ensemble des étiquettes à visualiser dans le graphique (toujours au format liste).
Voir un exemple de rapport ou essayer un notebook Google Colab d’exemple.wandb.plot.roc_curve()Créez une courbe ROC en une seule ligne :with wandb.init() as run:
# ground_truth est une liste d'étiquettes réelles, predictions est une liste de scores prédits
ground_truth = [0, 1, 0, 1, 0, 1]
predictions = [0.1, 0.4, 0.35, 0.8, 0.7, 0.9]
# Créer le graphique de la courbe ROC
# labels est une liste facultative de noms de classes, classes_to_plot est un sous-ensemble facultatif de ces étiquettes à visualiser
plot = wandb.plot.roc_curve(
ground_truth, predictions, labels=None, classes_to_plot=None
)
run.log({"roc": plot})
Vous pouvez journaliser ces données chaque fois que votre code a accès à :
- aux scores de prédiction d’un modèle (
predictions) sur un ensemble d’exemples
- aux étiquettes de vérité terrain correspondantes (
ground_truth) pour ces exemples
labels (Facultatif) : une liste des étiquettes/noms de classes (labels=["cat", "dog", "bird"...] si l’indice d’étiquette 0 correspond à chat, 1 = chien, 2 = oiseau, etc.)
classes_to_plot (Facultatif) : un sous-ensemble de ces étiquettes (toujours au format liste) à visualiser sur le graphique
Voir un exemple de Report ou essayer un notebook Google Colab d’exemple.
Préréglages personnalisés
Modifiez un préréglage intégré, ou créez un nouveau préréglage, puis enregistrez le graphique. Utilisez l’ID du graphique pour journaliser des données dans ce préréglage personnalisé directement depuis votre script. Essayez un notebook d’exemple Google Colab.
# Créer un tableau avec les colonnes à représenter
table = wandb.Table(data=data, columns=["step", "height"])
# Associer les colonnes du tableau aux champs du graphique
fields = {"x": "step", "value": "height"}
# Utiliser le tableau pour remplir le nouveau préréglage de graphique personnalisé
# Pour utiliser votre propre préréglage de graphique enregistré, modifiez le vega_spec_name
my_custom_chart = wandb.plot_table(
vega_spec_name="carey/new_chart",
data_table=table,
fields=fields,
)
Avant de pouvoir visualiser quoi que ce soit dans un graphique personnalisé, votre script doit journaliser les données sous-jacentes dans un format que l’éditeur de graphiques peut interroger. Vous pouvez journaliser les types de données suivants depuis votre script et les utiliser dans un graphique personnalisé :
- Configuration : paramètres initiaux de votre expérience (vos variables indépendantes). Cela inclut tous les champs nommés que vous avez journalisés comme clés dans
wandb.Run.config au début de votre entraînement. Par exemple : wandb.Run.config.learning_rate = 0.0001
- Synthèse : valeurs uniques journalisées pendant l’entraînement (vos résultats ou variables dépendantes). Par exemple,
wandb.Run.log({"val_acc" : 0.8}). Si vous écrivez dans cette clé plusieurs fois pendant l’entraînement via wandb.Run.log(), la valeur de synthèse est définie sur la dernière valeur de cette clé.
- Historique : la série temporelle complète du scalaire journalisé est disponible dans la requête via le champ
history
- summaryTable : si vous devez journaliser une liste de plusieurs valeurs, utilisez
wandb.Table() pour journaliser ces données, puis interrogez-la dans votre panneau personnalisé.
- historyTable : si vous devez consulter les données d’historique, interrogez
historyTable dans le panneau de votre graphique personnalisé. Chaque fois que vous appelez wandb.Table() ou journalisez un graphique personnalisé, vous créez un nouveau tableau dans l’historique pour cette étape.
Journaliser un tableau personnalisé
Utilisez wandb.Table() pour journaliser vos données sous la forme d’un tableau 2D. En général, chaque ligne de ce tableau représente un point de données, et chaque colonne correspond aux champs ou dimensions pertinents de chaque point de données que vous souhaitez représenter. Lorsque vous configurez un panneau personnalisé, l’intégralité du tableau est accessible via la clé nommée transmise à wandb.Run.log() (custom_data_table dans l’exemple suivant). Chaque champ individuel est accessible via les noms de colonne (x, y et z). Vous pouvez journaliser des tableaux à plusieurs étapes au cours de votre expérience. La taille maximale de chaque tableau est de 10 000 lignes. Essayez un notebook Google Colab d’exemple.
with wandb.init() as run:
# Journalisation d'un tableau personnalisé de données
my_custom_data = [[x1, y1, z1], [x2, y2, z2]]
run.log(
{"custom_data_table": wandb.Table(data=my_custom_data, columns=["x", "y", "z"])}
)
Personnaliser le graphique
Après avoir enregistré des données, créez un graphique dans la W&B App en choisissant les valeurs enregistrées à inclure et la manière de les afficher. Pour commencer, ajoutez un nouveau graphique personnalisé, puis modifiez la requête pour sélectionner les données à partir de vos runs visibles. La requête utilise GraphQL pour récupérer des données à partir des champs configuration, synthèse et historique de vos runs.
L’éditeur de graphiques personnalisés exécute une requête GraphQL sur les runs que vous avez sélectionnés dans l’espace de travail du projet ou le rapport. Dans l’éditeur de requête, ajoutez les champs dont vous avez besoin. Vous pouvez choisir parmi config, summary, history, summaryTable et historyTable, ce qui vous évite, dans la plupart des cas, d’écrire la requête de zéro.
Chaque source de la requête correspond à un type différent de données enregistrées :
- configuration récupère les valeurs de configuration du run (hyperparamètres et autres paramètres).
- Summary récupère les valeurs de synthèse. Par défaut, la synthèse d’une clé enregistrée avec
wandb.Run.log() contient la dernière valeur écrite pour cette clé. Pour utiliser un autre agrégat, appelez wandb.Run.define_metric(..., summary=...) avec "min", "max", "mean", "best" ou "none". Pour définir directement une valeur, attribuez wandb.Run.summary["key"] = value.
- historique récupère des séries temporelles scalaires à partir de l’historique du run (par exemple,
loss ou accuracy à chaque étape). Utilisez historique lorsque vous avez besoin de la courbe complète, et pas seulement de la valeur finale.
summaryTable charge un wandb.Table depuis la synthèse du run. Utilisez-le lorsque le tableau qui vous intéresse est stocké comme un instantané unique sur le run (par exemple, une matrice de confusion enregistrée une seule fois à la fin).
historyTable charge un wandb.Table depuis l’historique du run. Chaque fois que vous enregistrez un tableau avec wandb.Run.log(), vous ajoutez une étape à l’historique du run qui inclut ce tableau. Utilisez historyTable lorsque le tableau change au fil du temps ou lorsque vous voulez activer le sélecteur d’étape dans l’éditeur de graphiques personnalisés (voir Comment afficher un curseur d’étape dans un graphique personnalisé ?).
Pour summaryTable et historyTable, définissez tableKey sur la clé de dictionnaire utilisée dans wandb.Run.log(), et non sur un nom de colonne dans le wandb.Table.
Les exemples suivants couvrent les cas les plus courants :
- Tracer les colonnes d’un tableau que vous enregistrez à chaque étape (par exemple, une courbe PR) : ajoutez
historyTable, définissez tableKey sur votre clé enregistrée (par exemple, pr_curve), puis mapgez les colonnes du tableau dans Chart fields. Voir le tutoriel sur les graphiques personnalisés.
- Tracer les colonnes d’un tableau présent dans une synthèse (par exemple, des scores de classe pour un histogramme composite) : ajoutez
summaryTable, définissez tableKey sur cette clé (le tutoriel utilise class_scores). Voir Bonus : histogrammes composites.
- Tracer une métrique scalaire au fil des étapes d’entraînement : ajoutez la métrique depuis historique. Si vous l’ajoutez uniquement depuis summary, le graphique n’affiche qu’une seule valeur par run.
Noms des champs du graphique
Une fois la requête exécutée, Chart fields répertorie les colonnes que vous pouvez lier dans la spécification Vega. Les noms commencent souvent par runSets_ et reflètent les champs de requête sélectionnés. Choisissez-les dans les listes déroulantes à côté de chaque espace réservé ${field:...} au lieu de les saisir manuellement.
Si une colonne n’apparaît jamais, vérifiez que la clé existe bien sur les runs sélectionnés, ouvrez la page du run pour voir comment les données ont été enregistrées, et vérifiez si summaryTable ou historyTable correspond à ce mode de journalisation.
Les graphiques personnalisés utilisent cette requête de panneau basée sur GraphQL. Les panneaux de requête utilisent un langage d’expression différent et sont documentés séparément.
Visualisations personnalisées
Sélectionnez Chart dans le coin supérieur droit pour partir d’un préréglage par défaut. Ensuite, sélectionnez Chart fields pour associer les données extraites de la requête aux champs correspondants de votre graphique.
L’image suivante montre comment sélectionner une métrique, puis l’associer aux champs du diagramme à barres.
Cliquez sur Edit en haut du panneau pour passer en mode d’édition Vega. Vous pouvez y définir une spécification Vega qui crée un graphique interactif dans l’interface. Vous pouvez modifier n’importe quel aspect du graphique. Par exemple, vous pouvez modifier le titre, choisir une autre palette de couleurs ou afficher les courbes sous forme d’une série de points plutôt que de lignes reliées. Vous pouvez également modifier les données elles-mêmes, par exemple en utilisant une transformation Vega pour répartir un tableau de valeurs en classes dans un histogramme. L’aperçu du panneau se met à jour de manière interactive, ce qui vous permet de voir l’effet de vos modifications à mesure que vous modifiez la spécification Vega ou la requête. Pour plus d’informations, voir la documentation et les tutoriels Vega.
Références de champ
Pour importer des données de W&B dans votre graphique, ajoutez des chaînes de caractères de la forme "${field:<field-name>}" n’importe où dans votre spécification Vega. Cela crée une liste déroulante dans la zone Chart fields à droite, que vous pouvez utiliser pour sélectionner une colonne de résultat de requête à mapper dans Vega.
Pour définir une valeur par défaut pour un champ, utilisez cette syntaxe : "${field:<field-name>:<placeholder text>}"
Enregistrer des préréglages de graphique
Enregistrez un préréglage pour réutiliser la même définition Vega dans différents panneaux et projets au lieu de la recréer à chaque fois. Appliquez les modifications à un panneau de visualisation spécifique à l’aide du bouton situé en bas de la fenêtre modale. Vous pouvez également enregistrer la spécification Vega pour la réutiliser ailleurs dans votre projet. Pour enregistrer une définition de graphique réutilisable, cliquez sur Save as en haut de l’éditeur Vega, puis donnez un nom à votre préréglage.
Les rapports suivants présentent des exemples de bout en bout et des explorations plus approfondies de l’utilisation pratique des graphiques personnalisés.
Cas d’utilisation courants
Les graphiques personnalisés sont utiles lorsque les panneaux par défaut ne permettent pas de représenter ce que vous souhaitez afficher. Par exemple :
- Personnaliser des graphiques en barres avec des barres d’erreur
- Afficher des métriques de validation de modèle nécessitant des coordonnées x-y spécifiques (comme les courbes précision-rappel)
- Superposer sous forme d’histogrammes des distributions de données provenant de deux modèles ou expériences différents
- Afficher l’évolution d’une métrique à partir d’instantanés pris à plusieurs étapes de l’entraînement
- Créer une visualisation unique, qui n’est pas encore disponible dans W&B, et la partager avec d’autres