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

# Comment puis-je journaliser les gradients et les poids du modèle avec wandb.watch() ?

`wandb.watch()` s’attache aux paramètres et aux gradients d’un modèle PyTorch et journalise à intervalles réguliers des histogrammes de leurs valeurs. Cette fonction permet de diagnostiquer l’instabilité de l’entraînement, la disparition des gradients et les neurones morts.

**Utilisation de base**

Appelez `wandb.watch()` après `wandb.init()` et avant la première étape d’entraînement :

```python theme={"system"}
import wandb
import torch.nn as nn

wandb.init(project="my-project")

model = MyModel()
wandb.watch(model, log="gradients", log_freq=100)

for step, batch in enumerate(dataloader):
    loss = train_step(model, batch)
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()

    wandb.log({"train/loss": loss.item()}, step=step)

wandb.finish()
```

Les histogrammes de gradients sont journalisés tous les `log_freq` **lots** (la valeur par défaut de [`Run.watch()`](/fr/products/wandb/ref/python/experiments/run) est `log_freq=1000` ; l’exemple utilise `100` pour obtenir un retour plus rapide). Ils apparaissent dans l’onglet **Charts** sous des clés telles que `gradients/layer_name.weight`.

**Options du paramètre `log`**

| Valeur | Éléments journalisés |
| - | - |
| `"gradients"` | Histogrammes de gradients uniquement (par défaut) |
| `"parameters"` | Histogrammes de poids/paramètres uniquement |
| `"all"` | Gradients et paramètres |
| `None` | Ni l’un ni l’autre — seule la topologie du graphe du modèle est journalisée |

```python theme={"system"}
wandb.watch(model, log="all", log_freq=50)
```

**Journaliser la topologie du graphe du modèle**

Passez `log_graph=True` si vous souhaitez obtenir le graphe de calcul alors que la journalisation des histogrammes est désactivée ou minimale. Le graphe s'affiche dans l'onglet **Overview** du run, sous **Model**. Consultez [`Run.watch()`](/fr/products/wandb/ref/python/experiments/run) pour savoir comment `log`, `log_graph` et `log_freq` interagissent.

```python theme={"system"}
wandb.watch(model, log=None, log_graph=True)  # graphe uniquement, sans histogrammes
```

**Surveiller plusieurs modèles**

Appelez `wandb.watch()` séparément pour chaque modèle (utile pour l’entraînement de GAN) :

```python theme={"system"}
wandb.watch(generator, log="gradients", log_freq=100)
wandb.watch(discriminator, log="gradients", log_freq=100)
```

Les gradients de chaque modèle sont journalisés avec les noms de ses paramètres comme préfixes.

**Considérations relatives aux performances**

La journalisation des gradients entraîne une surcharge proportionnelle à `log_freq`. Journaliser à chaque étape (`log_freq=1`) peut ralentir considérablement l’entraînement. Pour la plupart des runs d’entraînement, une valeur comprise entre 50 et 200 est habituelle. Si les performances sont critiques, définissez `log="parameters"` plutôt que `log="gradients"` : les histogrammes de paramètres sont calculés sans hook sur la rétropropagation et sont donc moins coûteux.

**Arrêter la surveillance**

Pour arrêter la journalisation des gradients en cours d’entraînement :

```python theme={"system"}
wandb.unwatch(model)
```

Les hooks sont ainsi supprimés sans mettre fin au run : la journalisation des métriques se poursuit donc normalement.

***

<Badge stroke shape="pill" color="blue" size="md">[Experiments](/fr/support/models/tags/experiments)</Badge><Badge stroke shape="pill" color="blue" size="md">[Métriques](/fr/support/models/tags/metrics)</Badge><Badge stroke shape="pill" color="blue" size="md">[Runs](/fr/support/models/tags/runs)</Badge>
