Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
En plus des valeurs qui évoluent au fil du temps pendant l’entraînement, il est souvent important de suivre une valeur unique qui résume un modèle ou une étape de prétraitement. Journalisez ces informations dans le dictionnaire summary d’un run W&B. Le dictionnaire summary d’un run peut contenir des tableaux NumPy, des tenseurs PyTorch ou des tenseurs TensorFlow. Lorsqu’une valeur est de l’un de ces types, nous stockons l’intégralité du tenseur dans un fichier binaire et enregistrons dans l’objet summary des métriques globales, comme le minimum, la moyenne, la variance, les percentiles, etc.
La dernière valeur enregistrée avec wandb.Run.log() est automatiquement utilisée comme dictionnaire summary d’un run W&B. Si un dictionnaire de métrique de synthèse est modifié, la valeur précédente est perdue.
L’extrait de code suivant montre comment fournir une métrique de synthèse personnalisée à W&B :
import wandb
import argparse
with wandb.init(config=args) as run:
best_accuracy = 0
for epoch in range(1, args.epochs + 1):
test_loss, test_accuracy = test()
if test_accuracy > best_accuracy:
run.summary["best_accuracy"] = test_accuracy
best_accuracy = test_accuracy
Vous pouvez mettre à jour l’attribut summary d’un run W&B existant une fois l’entraînement terminé. Utilisez l’API publique de W&B pour mettre à jour l’attribut summary :
api = wandb.Api()
run = api.run("username/project/run_id")
run.summary["tensor"] = np.random.random(1000)
run.summary.update()
Personnaliser les métriques de synthèse
Les métriques de synthèse personnalisées sont utiles pour enregistrer les performances du modèle à la meilleure étape de l’entraînement dans votre run.summary. Par exemple, vous pouvez vouloir enregistrer la précision maximale ou la valeur minimale de la perte, plutôt que la valeur finale.
Par défaut, le summary utilise la valeur finale de l’historique. Pour personnaliser les métriques de synthèse, passez l’argument summary à define_metric. Il accepte les valeurs suivantes :
"min"
"max"
"mean"
"best"
"last"
"none"
Vous pouvez utiliser "best" uniquement si vous définissez également l’argument facultatif objective sur "minimize" ou "maximize".
L’exemple suivant ajoute au summary les valeurs minimale et maximale de la perte et de la précision :
import wandb
import random
random.seed(1)
with wandb.init() as run:
# Valeurs min et max du résumé pour la perte
run.define_metric("loss", summary="min")
run.define_metric("loss", summary="max")
# Valeurs min et max du résumé pour la précision
run.define_metric("acc", summary="min")
run.define_metric("acc", summary="max")
for i in range(10):
log_dict = {
"loss": random.uniform(0, 1 / (i + 1)),
"acc": random.uniform(1 / (i + 1), 1),
}
run.log(log_dict)
Afficher les métriques de synthèse
Affichez les valeurs récapitulatives dans la page Aperçu d’un run ou dans le tableau des runs du projet.
Aperçu du run
Tableau des runs
API publique W&B
- Accédez à la W&B App.
- Sélectionnez l’onglet Workspace dans la barre latérale du projet.
- Cliquez sur le run qui a enregistré les valeurs récapitulatives. La page du run s’ouvre avec l’onglet Aperçu affiché par défaut.
- Affichez les valeurs récapitulatives dans la section Summary.
- Accédez à la W&B App.
- Sélectionnez l’onglet Runs.
- Dans le tableau des runs, vous pouvez afficher les valeurs récapitulatives dans les colonnes correspondant au nom de la valeur récapitulative.
Vous pouvez utiliser l’API publique W&B pour récupérer les valeurs récapitulatives d’un run.L’exemple de code suivant montre une façon de récupérer les valeurs récapitulatives enregistrées pour un run spécifique à l’aide de l’API publique W&B et de pandas :import wandb
import pandas
entity = "<your-entity>"
project = "<your-project>"
run_name = "<your-run-name>" # Nom du run avec les valeurs récapitulatives
all_runs = []
for run in api.runs(f"{entity}/{project_name}"):
print("Fetching details for run: ", run.id, run.name)
run_data = {
"id": run.id,
"name": run.name,
"url": run.url,
"state": run.state,
"tags": run.tags,
"config": run.config,
"created_at": run.created_at,
"system_metrics": run.system_metrics,
"summary": run.summary,
"project": run.project,
"entity": run.entity,
"user": run.user,
"path": run.path,
"notes": run.notes,
"read_only": run.read_only,
"history_keys": run.history_keys,
"metadata": run.metadata,
}
all_runs.append(run_data)
# Convertir en DataFrame
df = pd.DataFrame(all_runs)
# Obtenir la ligne en fonction du nom de la colonne (run) et la convertir en dictionnaire
df[df['name']==run_name].summary.reset_index(drop=True).to_dict()