> ## 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.

# wandb.watch() で勾配とモデルの重みをログするにはどうすればよいですか？

`wandb.watch()` は PyTorch モデルのパラメーターと勾配にフックを追加し、それらの値のヒストグラムを一定間隔でログします。これは、トレーニングの不安定性、勾配消失、活動しないニューロンの診断に役立ちます。

**基本的な使用方法**

`wandb.init()` の後、最初のトレーニングステップの前に `wandb.watch()` を呼び出します：

```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()
```

勾配のヒストグラムは `log_freq` **バッチ**ごとにログされます ([`Run.watch()`](/ja/products/wandb/ref/python/experiments/run) のデフォルトは `log_freq=1000` です。この例では、より早くフィードバックを得るために `100` を使用しています) 。これらは **Charts** タブに、`gradients/layer_name.weight` などのキーで表示されます。

**`log` パラメーターのオプション**

| 値 | ログされる内容 |
| - | - |
| `"gradients"` | 勾配のヒストグラムのみ (デフォルト) |
| `"parameters"` | 重み/パラメーターのヒストグラムのみ |
| `"all"` | 勾配とパラメーターの両方 |
| `None` | どちらもログせず、モデルのグラフのトポロジのみをログします |

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

**モデルのグラフのトポロジをログする**

ヒストグラムのログが無効または最小限の場合に計算グラフを取得するには、`log_graph=True` を渡します。グラフは run の **Overview** タブの **Model** で確認できます。`log`、`log_graph`、`log_freq` の相互作用については、[`Run.watch()`](/ja/products/wandb/ref/python/experiments/run) を参照してください。

```python theme={"system"}
wandb.watch(model, log=None, log_graph=True)  # グラフを重視し、ヒストグラムはログしません
```

**複数のモデルの監視**

モデルごとに `wandb.watch()` を個別に呼び出します (GAN のトレーニングで便利です)：

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

各モデルの勾配は、パラメーター名を接頭辞としてログされます。

**パフォーマンスの考慮事項**

勾配のログには、`log_freq` に比例するオーバーヘッドが発生します。毎ステップのログ (`log_freq=1`) は、トレーニングを大幅に遅くする可能性があります。ほとんどのトレーニング run では、50〜200 の値が一般的です。パフォーマンスが重要な場合は、`log="gradients"` ではなく `log="parameters"` を設定してください。パラメーターのヒストグラムは逆伝播のフックなしで計算されるため、負荷が低くなります。

**監視の停止**

トレーニングの途中で勾配のログを停止するには:

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

これにより、run を終了せずにフックが削除されるため、メトリクスのログは影響を受けずに継続されます。

***

<Badge stroke shape="pill" color="blue" size="md">[Experiments](/ja/support/models/tags/experiments)</Badge><Badge stroke shape="pill" color="blue" size="md">[メトリクス](/ja/support/models/tags/metrics)</Badge><Badge stroke shape="pill" color="blue" size="md">[Runs](/ja/support/models/tags/runs)</Badge>
