> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Journaliser des métriques de synthèse

> Suivez et personnalisez des métriques de synthèse uniques, comme la meilleure précision ou la perte minimale, sur un run W&B avec run.summary.

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 :

```python theme={null}
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](/fr/models/ref/python/public-api/) pour mettre à jour l’attribut summary :

```python theme={null}
api = wandb.Api()
run = api.run("username/project/run_id")
run.summary["tensor"] = np.random.random(1000)
run.summary.update()
```

<div id="customize-summary-metrics">
  ## Personnaliser les métriques de synthèse
</div>

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 :

```python theme={null}
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)
```

<div id="view-summary-metrics">
  ## Afficher les métriques de synthèse
</div>

Affichez les valeurs récapitulatives dans la page **Aperçu** d’un run ou dans le tableau des runs du projet.

<Tabs>
  <Tab title="Aperçu du run">
    1. Accédez à la W\&B App.
    2. Sélectionnez l’onglet **Workspace** dans la barre latérale du projet.
    3. 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.
    4. Affichez les valeurs récapitulatives dans la section **Summary**.

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541/_OEDykSS2PIumrEw/images/track/customize_summary.png?fit=max&auto=format&n=_OEDykSS2PIumrEw&q=85&s=ec840a417aed257853b726878428075f" alt="Aperçu du run" width="2416" height="2694" data-path="images/track/customize_summary.png" />
    </Frame>
  </Tab>

  <Tab title="Tableau des runs">
    1. Accédez à la W\&B App.
    2. Sélectionnez l’onglet **Runs**.
    3. Dans le tableau des runs, vous pouvez afficher les valeurs récapitulatives dans les colonnes correspondant au nom de la valeur récapitulative.
  </Tab>

  <Tab title="API publique W&B">
    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 :

    ```python theme={null}
    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()
    ```
  </Tab>
</Tabs>
