> ## 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()`](/ko/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()`](/ko/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`에 비례하는 오버헤드를 발생시킵니다. 매 step마다 로깅하면(`log_freq=1`) 트레이닝 속도가 크게 느려질 수 있습니다. 대부분의 트레이닝 run에는 일반적으로 50\~200 사이의 값이 적합합니다. 성능이 중요하다면 `log="gradients"` 대신 `log="parameters"`로 설정하세요. 매개변수 히스토그램은 역전파 훅 없이 계산되므로 비용이 더 적게 듭니다.

**watch 중지하기**

트레이닝 도중 그라디언트 로깅을 중지하려면 다음과 같이 하세요.

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

이렇게 하면 run을 종료하지 않고 훅만 제거되므로 메트릭 로깅은 그대로 계속됩니다.

***

<Badge stroke shape="pill" color="blue" size="md">[Experiments](/ko/support/models/tags/experiments)</Badge><Badge stroke shape="pill" color="blue" size="md">[메트릭](/ko/support/models/tags/metrics)</Badge><Badge stroke shape="pill" color="blue" size="md">[Runs](/ko/support/models/tags/runs)</Badge>
