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

> Python SDK를 사용하여 W&B 실험을 생성하고 run 초기화, 하이퍼파라미터 및 메트릭 로깅을 추적하세요.

# 실험 만들기

W\&B Python SDK를 사용하여 머신 러닝 실험을 추적하세요. 그런 다음 대화형 대시보드에서 결과를 검토하거나 [W\&B Public API](/ko/products/wandb/ref/python/public-api)를 사용하여 Python으로 데이터를 프로그래밍 방식으로 액세스할 수 있습니다.

이 가이드는 W\&B building blocks를 사용하여 W\&B 실험을 만드는 방법을 설명합니다.

<h2 id="how-to-create-a-wb-experiment">
  W\&B 실험 생성 방법
</h2>

다음 네 단계로 W\&B 실험을 생성하세요.

1. [W\&B run 초기화하기](#initialize-a-wb-run)
2. [하이퍼파라미터 딕셔너리 캡처하기](#capture-a-dictionary-of-hyperparameters)
3. [트레이닝 루프에서 메트릭 로깅하기](#log-metrics-inside-your-training-loop)
4. [W\&B에 아티팩트 로깅하기](/ko/products/wandb/track/create-an-experiment#log-an-artifact-to-w%26b)

<h3 id="initialize-a-wb-run">
  W\&B run 초기화
</h3>

[`wandb.init()`](/ko/products/wandb/ref/python/functions/init)를 사용하여 W\&B run을 생성하세요.

다음 스니펫은 `“cat-classification”`이라는 이름의 W\&B 프로젝트에서 `“My first experiment”` 설명과 함께 run을 생성하며, 이 run을 파악하는 데 도움이 됩니다. `“baseline”` 및 `“paper1”` 태그가 포함되어 있으며, 이는 향후 논문 발행을 위한 베이스라인 실험임을 상기시킵니다.

```python theme={"system"}
import wandb

with wandb.init(
    project="cat-classification",
    notes="My first experiment",
    tags=["baseline", "paper1"],
) as run:
    ...
```

`wandb.init()`는 [Run](/ko/products/wandb/ref/python/experiments/run) 객체를 반환합니다.

<Note>
  참고: run은 `wandb.init()`을 호출할 때 해당 프로젝트가 이미 존재하면 기존 프로젝트에 추가됩니다. 예를 들어, 이미 `“cat-classification”`이라는 프로젝트가 있는 경우, 해당 프로젝트는 계속 존재하며 삭제되지 않습니다. 대신, 새 run이 해당 프로젝트에 추가됩니다.
</Note>

<h3 id="capture-a-dictionary-of-hyperparameters">
  하이퍼파라미터 딕셔너리 캡처하기
</h3>

학습률이나 모델 유형과 같은 하이퍼파라미터 딕셔너리를 저장하세요. 설정에 캡처한 모델 설정은 나중에 결과를 정리하고 쿼리하는 데 유용합니다.

```python theme={"system"}
with wandb.init(
    ...,
    config={"epochs": 100, "learning_rate": 0.001, "batch_size": 128},
) as run:
    ...
```

실험을 설정하는 방법에 대한 자세한 내용은 [Configure Experiments](/ko/products/wandb/track/config)를 참조하세요.

<h3 id="log-metrics-inside-your-training-loop">
  트레이닝 루프 내에서 메트릭 로깅하기
</h3>

각 트레이닝 단계의 메트릭(예: 정확도 및 loss)을 로깅하려면 [`run.log()`](/ko/products/wandb/ref/python/experiments/run#method-runlog)을 호출하세요.

```python theme={"system"}
model, dataloader = get_model(), get_data()

for epoch in range(run.config["epochs"]):
    for batch in dataloader:
        loss, accuracy = model.training_step()
        run.log({"accuracy": accuracy, "loss": loss})
```

W\&B로 로깅할 수 있는 다양한 데이터 유형에 대한 자세한 내용은 [객체와 미디어 로깅](/ko/products/wandb/track/log)을 참조하세요.

<h3 id="log-an-artifact-to-wb">
  W\&B에 아티팩트 로깅하기
</h3>

선택적으로 W\&B 아티팩트를 로깅하세요. 아티팩트는 데이터셋과 모델을 쉽게 버전 관리할 수 있게 해줍니다.

```python theme={"system"}
# 모든 파일은 물론 디렉터리도 저장할 수 있습니다. 이 예제에서는
# 모델에 ONNX 파일을 출력하는 save() 메서드가 있다고 가정합니다.
model.save("path_to_model.onnx")
run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
```

[Artifacts](/ko/products/wandb/artifacts)에 대해 더 알아보거나 [레지스트리](/ko/products/registry)에서 모델 버전 관리에 대해 알아보세요.

<h3 id="putting-it-all-together">
  모두 함께 모으기
</h3>

전체 스크립트는 앞의 코드 스니펫과 함께 아래에서 확인할 수 있습니다:

```python theme={"system"}
import wandb

with wandb.init(
    project="cat-classification",
    notes="",
    tags=["baseline", "paper1"],
    # run의 하이퍼파라미터를 기록합니다.
    config={"epochs": 100, "learning_rate": 0.001, "batch_size": 128},
) as run:
    # 모델과 데이터를 설정합니다.
    model, dataloader = get_model(), get_data()

    # 모델 성능을 시각화하기 위해 메트릭을 로깅하면서 트레이닝을 실행합니다.
    for epoch in range(run.config["epochs"]):
        for batch in dataloader:
            loss, accuracy = model.training_step()
            run.log({"accuracy": accuracy, "loss": loss})

    # 트레이닝된 모델을 아티팩트로 업로드합니다.
    model.save("path_to_model.onnx")
    run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
```

<h2 id="next-steps-visualize-your-experiment">
  다음 단계: 실험 시각화
</h2>

프로젝트의 워크스페이스를 사용하여 머신 러닝 모델의 결과를 정리하고 시각화하세요. [병렬 좌표 플롯](/ko/products/wandb/app/features/panels/parallel-coordinates), [매개변수 중요도 분석](/ko/products/wandb/app/features/panels/parameter-importance), [추가 차트 유형](/ko/products/wandb/app/features/panels)과 같은 대화형 차트를 구성할 수 있습니다.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/quickstart_dashboard_example.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=cdd010a365825115c5a34de76e5ffa6b" alt="퀵스타트 스윕 워크스페이스 예시" width="4172" height="3046" data-path="products/wandb/_media/quickstart_dashboard_example.png" />
</Frame>

실험 및 특정 run을 보는 방법에 대한 자세한 내용은 [실험 결과 보기](/ko/products/wandb/track/workspaces)를 참조하세요.

<h2 id="best-practices">
  모범 사례
</h2>

실험을 생성할 때 고려하면 좋은 권장 지침은 다음과 같습니다.

* **컨텍스트 관리자로 run 관리**: `with` 문에서 `wandb.init()`를 사용하면 코드 실행이 완료되거나 예외가 발생할 때 run이 자동으로 종료됩니다.
  * Jupyter 노트북에서는 run 객체를 직접 관리하는 편이 나을 수 있습니다. 이 경우 `finish()`를 호출하여 run을 완료 상태로 표시하세요.

    ```python theme={"system"}
    # 노트북 셀에서:
    run = wandb.init()

    # 다른 셀에서:
    run.finish()
    ```
* **설정**: 하이퍼파라미터, 모델 아키텍처, 데이터셋 정보를 비롯해 모델을 재현하는 데 필요한 값을 추적하세요. 자세한 내용은 [W\&B App의 run 개요 섹션에서 설정 보기](/ko/products/wandb/track/config#view-config-values-in-the-w\&b-app)를 참고하세요.
* **프로젝트**: [프로젝트](/ko/products/wandb/track/project-page)를 사용하면 실험을 한곳에서 정리할 수 있습니다. 프로젝트에서 결과를 시각화하고, run을 비교하고, 아티팩트를 확인 및 다운로드하고, 자동화를 생성하는 등 다양한 작업을 수행할 수 있습니다.
* **노트**: `기준선 모델`, `tuned hyperparameters`처럼 run의 목적을 설명하는 노트를 추가하세요. 노트는 나중에 W\&B App의 run 개요에서 편집할 수 있습니다.
* **작업 유형**: [run에 작업 유형을 추가](/ko/products/wandb/runs/grouping#organize-runs-by-job-type)하면 `train`, `test`, `inference` 등 작업별로 run을 정리하고 필터링할 수 있습니다.
* **태그**: [run에 태그를 추가](/ko/products/wandb/runs/tags)하면 로깅된 메트릭이나 아티팩트만으로는 드러나지 않는 기능이나 속성으로 run에 레이블을 지정할 수 있습니다.

다음 예시는 이러한 모범 사례를 적용하여 W\&B run을 초기화하는 방법을 보여줍니다.

```python theme={"system"}
import wandb

config = {
    "learning_rate": 0.01,
    "momentum": 0.2,
    "architecture": "CNN",
    "dataset_id": "cats-0192",
}

with wandb.init(
    project="detect-cats",
    notes="tweak baseline",
    tags=["baseline", "paper1"],
    config=config,
) as run:
    ...
```

사용 가능한 매개변수에 대한 자세한 내용은 [Python SDK 레퍼런스 Guide](/ko/products/wandb/ref/python)의 [`wandb.init()`](/ko/products/wandb/ref/python/functions/init)를 참조하세요.
