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

> W&B의 기본 구성 요소인 Runs에 대해 알아보세요.

# 개요

*run*은 W\&B가 로깅하는 단일 연산 단위입니다. W\&B Run은 전체 프로젝트를 구성하는 최소 단위 요소라고 생각할 수 있습니다. 즉, 각 run은 모델 트레이닝 및 결과 로깅, 하이퍼파라미터 스윕 등 특정 연산을 기록한 것입니다.

run을 초기화하고 로깅하는 일반적인 사용 사례는 다음과 같습니다.

* 모델을 트레이닝하고 정확도, 손실 등의 [메트릭 기록](/ko/products/wandb/ref/python/experiments/run#method-run-log)
* [하이퍼파라미터 튜닝](/ko/products/wandb/sweeps) 수행 및 새 실험 실행
* 다른 모델로 새로운 머신러닝 실험 수행
* 데이터셋과 모델을 [W\&B Artifacts](/ko/products/wandb/artifacts)로 추적 및 저장
* 팀의 다른 구성원이 사용한 데이터셋이나 모델을 W\&B Artifacts로 [다운로드하여 사용](/ko/products/wandb/artifacts/download-and-use-an-artifact)

W\&B run을 초기화하려면 W\&B Python SDK의 [`wandb.init()`](/ko/products/wandb/ref/python/functions/init) 메서드를 호출하세요. 이 메서드는 새 run을 시작하고 `wandb.Run` 객체를 반환하며, 이 객체를 사용해 run에 메트릭, 아티팩트 및 기타 정보를 로깅할 수 있습니다. run 초기화에 대한 자세한 내용은 [run 초기화](/ko/products/wandb/runs/initialize-run)를 참조하세요.

각 run 객체에는 [*run ID*라는 고유 식별자](/ko/products/wandb/runs/run-identifiers#unique-run-identifiers)가 있습니다. [고유 ID를 직접 지정](/ko/products/wandb/runs/run-identifiers#unique-run-identifiers)하거나 [W\&B가 임의로 생성](/ko/products/wandb/runs/run-identifiers#autogenerated-run-ids)하도록 할 수 있습니다. 또한 각 run 객체에는 사람이 읽기 쉬운 [run 이름](/ko/products/wandb/runs/run-identifiers#run-name)이 있으며, 이 이름은 고유하지 않아도 됩니다. run 이름을 직접 지정하거나 W\&B가 임의로 생성하도록 할 수 있습니다. run을 초기화한 후에도 이름을 변경할 수 있습니다.

W\&B는 run을 [*프로젝트*](/ko/products/wandb/track/project-page)에 로깅합니다. 프로젝트는 `wandb.init(project="")`로 run을 초기화할 때 지정합니다. 프로젝트가 없으면 W\&B가 새 프로젝트를 생성하고, 프로젝트가 이미 있으면 지정한 프로젝트에 run을 로깅합니다.

<Note>
  프로젝트 이름을 지정하지 않으면 W\&B는 run을 `Uncategorized`라는 프로젝트에 저장합니다.
</Note>

`wandb.init()`은 ID, 이름, 설정, 상태 등 run의 속성을 담은 `wandb.Run` 객체를 반환합니다. run 객체의 `wandb.Run.log()`, `wandb.Run.log_code()`, `wandb.Run.use_artifact()` 등의 메서드를 사용하여 run에 메트릭, 아티팩트 및 기타 정보를 로깅하세요.

각 run에는 현재 진행 상황을 나타내는 상태가 있습니다. 가능한 run 상태의 전체 목록은 [Run states](/ko/products/wandb/runs/run-states)를 참조하세요.

W\&B App에서 run이 속한 프로젝트의 워크스페이스에서 [run과 해당 속성을 확인](/ko/products/wandb/runs/view-logged-runs)하세요. [`wandb.Api.Run`](/ko/products/wandb/ref/python/experiments/run) 객체를 사용하여 프로그래밍 방식으로 run 속성에 액세스할 수도 있습니다.

다음은 W\&B run을 초기화하고 몇 가지 메트릭을 로깅하는 코드 스니펫 예시입니다.

<Note>
  직접 따라 해 보려면 아래 코드 스니펫의 `entity` 변수에 W\&B entity를 전달하세요. entity는 W\&B 사용자 이름 또는 팀 이름으로, W\&B App 워크스페이스의 URL에서 확인할 수 있습니다. 예를 들어 워크스페이스 URL이 `https://wandb.ai/nico/awesome-project`이면 entity는 `nico`입니다.
</Note>

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

entity = "nico"  # 본인의 W&B entity로 바꾸세요
project = "awesome-project"

with wandb.init(entity=entity, project=project) as run:
    run.log({"accuracy": 0.9, "loss": 0.1})
```

첫 번째 줄은 W\&B Python SDK를 임포트합니다. 두 번째 줄은 entity `nico`의 `awesome-project` 프로젝트에서 run을 초기화합니다. 세 번째 줄은 모델의 정확도와 손실을 해당 run에 로깅합니다.

터미널에 W\&B가 다음과 같이 출력합니다.

```bash theme={"system"}
wandb: Syncing run earnest-sunset-1
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb:                                                                                
wandb: 
wandb: Run history:
wandb: accuracy ▁
wandb:     loss ▁
wandb: 
wandb: Run summary:
wandb: accuracy 0.9
wandb:     loss 0.5
wandb: 
wandb: 🚀 View run earnest-sunset-1 at: https://wandb.ai/nico/awesome-project/runs/1jx1ud12
wandb: ⭐️ View project at: https://wandb.ai/nico/awesome-project
wandb: Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb: Find logs at: ./wandb/run-20241105_111006-1jx1ud12/logs
```

W\&B는 터미널 출력에 두 개의 URL을 반환합니다. 첫 번째 URL은 [해당 run의 워크스페이스](/ko/products/wandb/runs/view-logged-runs)로, 두 번째 URL은 [프로젝트](/ko/products/wandb/track/project-page) 페이지로 연결됩니다.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/single-run-call.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=d94af51d31bb488f294d4ed90647f4b8" alt="단일 run 워크스페이스" width="2268" height="1178" data-path="products/wandb/_media/single-run-call.png" />
</Frame>

특정 시점에 메트릭을 한 번만 로깅하는 것은 그다지 유용하지 않을 수 있습니다. 판별 모델을 트레이닝할 때는 일정한 간격으로 메트릭을 로깅하는 것이 더 현실적입니다. 예를 들어 다음 코드 스니펫을 살펴보세요.

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

config = {
    "epochs": 10,
    "learning_rate": 0.01,
}

with wandb.init(project="awesome-project", config=config) as run:
    print(f"lr: {config['learning_rate']}")
      
    # 트레이닝 run 시뮬레이션
    for epoch in range(config['epochs']):
      offset = random.random() / 5
      acc = 1 - 2**-epoch - random.random() / (epoch + 1) - offset
      loss = 2**-epoch + random.random() / (epoch + 1) + offset
      print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
      run.log({"accuracy": acc, "loss": loss})
```

트레이닝 스크립트는 `wandb.Run.log()`를 10번 호출합니다. 스크립트가 `wandb.Run.log()`를 호출할 때마다 W\&B는 해당 에포크의 정확도와 손실을 로깅합니다.

터미널에 다음과 비슷한 출력이 표시됩니다.

```bash theme={"system"}
wandb: Syncing run jolly-haze-4
wandb: ⭐️ View project at https://wandb.ai/nico/awesome-project
wandb: 🚀 View run at https://wandb.ai/nico/awesome-project/runs/pdo5110r
lr: 0.01
epoch=0, accuracy=-0.10070974957523078, loss=1.985328507123956
epoch=1, accuracy=0.2884687745057535, loss=0.7374362314407752
epoch=2, accuracy=0.7347387967382066, loss=0.4402409835486663
epoch=3, accuracy=0.7667969248039795, loss=0.26176963846423457
epoch=4, accuracy=0.7446848791003173, loss=0.24808611724405083
epoch=5, accuracy=0.8035095836268268, loss=0.16169791827329466
epoch=6, accuracy=0.861349032371624, loss=0.03432578493587426
epoch=7, accuracy=0.8794926436276016, loss=0.10331872172219471
epoch=8, accuracy=0.9424839917077272, loss=0.07767793473500445
epoch=9, accuracy=0.9584880427028566, loss=0.10531971149250456
wandb: 🚀 View run jolly-haze-4 at: https://wandb.ai/nico/awesome-project/runs/pdo5110r
wandb: Find logs at: wandb/run-20241105_111816-pdo5110r/logs
```

W\&B는 시뮬레이션된 트레이닝 루프를 `jolly-haze-4`라는 단일 run에 캡처합니다. 스크립트에서 `wandb.init()` 메서드를 한 번만 호출하기 때문입니다.

이전 출력에서 W\&B가 출력한 URL을 복사하여 브라우저에 붙여 넣으세요. 이 URL을 열면 W\&B App UI에서 해당 run의 워크스페이스로 이동합니다. 예를 들어, 다음 이미지는 run `jolly-haze-4`의 워크스페이스입니다.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/run_log_example_2.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=a09a32b95940ac8be3745091a9b42b5a" alt="메트릭이 로깅된 트레이닝 run" width="2467" height="1446" data-path="products/wandb/_media/run_log_example_2.png" />
</Frame>

<h2 id="run-summary">
  Run summary
</h2>

run의 [`summary`](/ko/products/wandb/ref/python/experiments/run#attributes) 속성에는 모델, 트레이닝 프로세스 또는 전처리 단계를 요약하는 값을 저장할 수 있습니다. 시간에 따라 변하는 메트릭과 달리, summary 값은 보통 최종 결과나 집계된 결과를 나타냅니다.

summary 값은 run이 실행 중일 때 로깅하거나, run이 종료된 후에 업데이트할 수 있습니다. W\&B Python SDK로 프로그래밍 방식으로 액세스하거나 W\&B App에서 확인하세요.

자세한 내용은 [summary 메트릭 로깅하기](/ko/products/wandb/track/log/log-summary)를 참조하세요.

<h2 id="run-configuration">
  run 설정
</h2>

run 설정을 사용하면 하이퍼파라미터, 모델 아키텍처, 데이터셋 이름 등 실험의 입력값과 설정을 저장할 수 있습니다. 설정 값을 통해 run 결과를 도출하는 데 사용된 조건을 추적할 수 있습니다.

설정 값은 run이 활성 상태일 때 로깅하거나 run이 종료된 후에 업데이트할 수 있습니다. W\&B Python SDK로 프로그래밍 방식으로 액세스하거나 W\&B App에서 확인하세요.

자세한 내용은 [실험 설정하기](/ko/products/wandb/track/config)를 참조하세요.


## Related topics

- [개요](/ko/products/wandb/weave/reference.md)
