> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-2989.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# Overview

*run*은 W\&B에 로깅되는 단일 계산 단위입니다. W\&B Run은 전체 프로젝트를 구성하는 가장 기본적인 요소라고 볼 수 있습니다. 다시 말해, 각 run은 모델 트레이닝과 결과 로깅, 하이퍼파라미터 sweep 등 특정 계산 작업의 기록입니다.

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

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

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

각 run 객체에는 [*run ID*라고 하는 고유 식별자](/ko/models/runs/run-identifiers#unique-run-identifiers)가 있습니다. [고유 ID를 직접 지정](/ko/models/runs/run-identifiers#unique-run-identifiers)할 수도 있고 [W\&B가 무작위로 생성하도록 둘 수도 있습니다](/ko/models/runs/run-identifiers#autogenerated-run-ids). 각 run 객체에는 사람이 읽을 수 있지만 고유하지는 않은 [run name](/ko/models/runs/run-identifiers#run-name)도 있습니다. run의 이름을 직접 지정할 수도 있고 W\&B가 무작위로 생성하도록 둘 수도 있습니다. run은 초기화한 후에도 이름을 변경할 수 있습니다.

W\&B는 사용자의 run을 [*project*](/ko/models/track/project-page/)에 로깅합니다. `wandb.init(project="")`로 run을 초기화할 때 프로젝트를 지정합니다. 프로젝트가 존재하지 않으면 W\&B가 새 프로젝트를 생성합니다. 프로젝트가 이미 존재하면 W\&B는 지정한 프로젝트에 run을 로깅합니다.

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

`wandb.init()`은 ID, 이름, 설정, 상태와 같은 run의 속성을 포함하는 `wandb.Run` 객체를 반환합니다. `wandb.Run.log()`, `wandb.Run.log_code()`, `wandb.Run.use_artifact()` 같은 메서드로 run 객체를 사용해 메트릭, artifact 및 기타 정보를 run에 로깅하세요.

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

W\&B App에서 run의 프로젝트 workspace 내 [run과 해당 속성 보기](/ko/models/runs/view-logged-runs)가 가능합니다. 또한 [`wandb.Api.Run`](/ko/models/ref/python/experiments/run) 객체를 사용해 run 속성에 프로그래밍 방식으로 액세스할 수도 있습니다.

예를 들어, 다음 코드 스니펫은 W\&B run을 초기화하고 여기에 일부 메트릭을 로깅합니다.

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

```python theme={null}
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={null}
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의 Workspace](/ko/models/runs/view-logged-runs)로 연결되고, 두 번째 URL은 [프로젝트](/ko/models/track/project-page) 페이지로 연결됩니다.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-2989/CP-FCMVKj1a6s27G/images/runs/single-run-call.png?fit=max&auto=format&n=CP-FCMVKj1a6s27G&q=85&s=33e82ade5cd6337b99c795020deda267" alt="단일 run Workspace" width="2376" height="1294" data-path="images/runs/single-run-call.png" />
</Frame>

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

```python theme={null}
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={null}
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 Workspace로 연결됩니다. 예를 들어, 다음 이미지는 `jolly-haze-4` run의 Workspace를 보여줍니다:

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-2989/CP-FCMVKj1a6s27G/images/runs/run_log_example_2.png?fit=max&auto=format&n=CP-FCMVKj1a6s27G&q=85&s=61d35d04715c97345ad14d40113b7264" alt="메트릭이 로깅된 트레이닝 run" width="2592" height="1578" data-path="images/runs/run_log_example_2.png" />
</Frame>

<div id="run-summary">
  ## Run summary
</div>

run의 [`summary`](/ko/models/ref/python/experiments/run#attributes) 속성을 사용하여 모델, 트레이닝 프로세스 또는 전처리 단계를 요약하는 값을 저장하세요. 시간에 따라 변하는 메트릭과 달리 summary 값은 일반적으로 최종 결과나 집계 결과를 나타냅니다.

활성 run 중에 summary 값을 로깅하거나 run이 완료된 후 업데이트할 수 있습니다. W\&B Python SDK를 통해 프로그래밍 방식으로 액세스하거나 W\&B App에서 확인하세요.

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

<div id="run-configuration">
  ## Run 설정
</div>

run 설정을 사용하여 하이퍼파라미터, 모델 아키텍처, 데이터셋 이름 등 실험의 입력 값과 설정을 저장하세요. 설정 값은 run 결과를 생성하는 데 사용된 조건을 추적하는 데 도움이 됩니다.

활성 run 중에 설정 값을 로깅하거나 run이 완료된 후 업데이트할 수 있습니다. W\&B Python SDK를 사용하여 프로그래밍 방식으로 액세스하거나 W\&B App에서 확인하세요.

자세한 내용은 [실험 구성](/ko/models/track/config)을 참조하세요.
