> ## 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에 run을 로깅하는 데 이미 익숙하고, 이제 대규모로 하이퍼파라미터를 튜닝하려는 사용자를 대상으로 합니다.

이 튜토리얼은 다음 네 단계로 구성됩니다.

1. [트레이닝 코드 설정](#set-up-your-training-code)
2. [스윕 설정으로 검색 공간 정의](#define-the-search-space-with-a-sweep-configuration)
3. [스윕 초기화](#initialize-the-sweep)
4. [스윕 에이전트 시작](#start-the-sweep)

먼저 다음 코드를 복사하여 Jupyter Notebook 또는 Python 스크립트에 붙여넣으세요. 이어지는 섹션에서 이 예제의 각 부분을 자세히 설명합니다.

```python theme={"system"}
# W&B Python 라이브러리를 임포트하고 W&B에 로그인합니다
import wandb

# 1: 목적 함수(트레이닝 함수)를 정의합니다
def objective(config):
    score = config.x**3 + config.y
    return score

def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})

# 2: 탐색 공간을 정의합니다
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

# 3: 스윕을 시작합니다
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

wandb.agent(sweep_id, function=main, count=10)
```

<h2 id="set-up-your-training-code">
  트레이닝 코드 설정
</h2>

스윕 에이전트는 시도할 하이퍼파라미터 값 조합마다 트레이닝 함수를 호출합니다. 따라서 먼저 이 값을 받아 메트릭을 W\&B에 보고하는 함수를 작성해야 합니다.

`wandb.Run.config`에서 하이퍼파라미터 값을 가져와 모델을 트레이닝하고 메트릭을 반환하는 트레이닝 함수를 정의하세요.

필요한 경우 run의 출력을 저장할 프로젝트 이름을 지정할 수 있습니다([`wandb.init()`](/ko/products/wandb/ref/python/functions/init)의 project 매개변수). 프로젝트를 지정하지 않으면 W\&B는 run을 "Uncategorized" 프로젝트에 저장합니다.

<Note>
  스윕과 run은 같은 프로젝트에 있어야 합니다. 따라서 W\&B를 초기화할 때 지정하는 프로젝트 이름은 스윕을 초기화할 때 지정하는 프로젝트 이름과 같아야 합니다.
</Note>

```python theme={"system"}
# 1: 목적 함수/트레이닝 함수 정의
def objective(config):
    score = config.x**3 + config.y
    return score


def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})
```

<h2 id="define-the-search-space-with-a-sweep-configuration">
  스윕 설정으로 검색 공간 정의하기
</h2>

트레이닝 함수가 준비되었다면, 다음으로 어떤 하이퍼파라미터를 변경하고 어떤 방식으로 검색할지 W\&B에 알려주어야 합니다.

스윕할 하이퍼파라미터를 딕셔너리로 지정하세요. 설정 옵션은 [스윕 설정 정의하기](/ko/products/wandb/sweeps/define-sweep-configuration)를 참조하세요.

다음 예시는 랜덤 검색(`'method':'random'`)을 사용하는 스윕 설정입니다. 스윕은 설정에 나열된 값 중에서 `x` 및 `y` 매개변수의 값 조합을 무작위로 선택합니다.

`metric` 키에 지정된 메트릭에 `"goal": "minimize"`가 연결되어 있으면 W\&B는 해당 메트릭을 최소화합니다. 이 예시에서 W\&B는 메트릭 `score`(`"name": "score"`)가 최소가 되도록 최적화합니다.

```python theme={"system"}
# 2: 탐색 공간 정의
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}
```

<h2 id="initialize-the-sweep">
  스윕 초기화
</h2>

스윕을 초기화하면 검색 공간이 W\&B에 등록되고, 에이전트가 하이퍼파라미터 조합을 요청할 때 사용하는 식별자가 반환됩니다.

W\&B는 *Sweep Controller*를 사용하여 하나 이상의 머신에 걸쳐 클라우드(standard) 또는 로컬(local)에서 스윕을 관리합니다. Sweep Controller에 대한 자세한 내용은 [로컬에서 검색 및 중지 알고리즘 실행](/ko/products/wandb/sweeps/local-controller)을 참조하세요.

스윕을 초기화하면 스윕 식별 번호가 반환됩니다.

```python theme={"system"}
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
```

자세한 내용은 [스윕을 초기화](/ko/products/wandb/sweeps/initialize-sweeps)를 참조하세요.

<h2 id="start-the-sweep">
  스윕 시작하기
</h2>

스윕을 등록했으면 에이전트를 시작하여 run을 실행하고 검색 공간을 탐색하세요.

스윕을 시작하려면 [`wandb.agent()`](/ko/products/wandb/ref/python/functions/agent) API를 호출하세요.

```python theme={"system"}
wandb.agent(sweep_id, function=main, count=10)
```

에이전트가 시작되면 W\&B에 하이퍼파라미터 조합을 요청하고, 각 조합으로 트레이닝 함수를 호출한 뒤, 그 결과로 얻은 메트릭을 프로젝트에 로깅합니다.

<Warning>
  **멀티프로세싱**

  Python 표준 라이브러리의 `multiprocessing` 패키지나 PyTorch의 `pytorch.multiprocessing` 패키지를 사용하는 경우, `wandb.agent()` 및 `wandb.sweep()` 호출을 `if __name__ == '__main__':`로 감싸야 합니다. 예를 들면 다음과 같습니다.

  ```python theme={"system"}
  if __name__ == '__main__':
      wandb.agent(sweep_id="[SWEEP-ID]", function="[FUNCTION]", count="[COUNT]")
  ```

  이 관례를 따르면 스크립트를 직접 실행할 때만 코드가 실행되고, 워커 프로세스에서 모듈로 임포트될 때는 실행되지 않습니다.

  멀티프로세싱에 대한 자세한 내용은 [Python 표준 라이브러리 `multiprocessing`](https://docs.python.org/3/library/multiprocessing.html#the-spawn-and-forkserver-start-methods) 또는 [PyTorch `multiprocessing`](https://docs.pytorch.org/docs/stable/notes/multiprocessing.html#asynchronous-multiprocess-training-e-g-hogwild)을 참조하세요. `if __name__ == '__main__':` 관례에 대한 자세한 내용은 [Real Python의 `__main__` 가이드](https://realpython.com/if-name-main-python/)를 참조하세요.
</Warning>

<h2 id="optional-visualize-results">
  선택: 결과 시각화
</h2>

스윕이 실행되면 W\&B App에서 다양한 하이퍼파라미터 조합이 메트릭에 어떤 영향을 주는지 살펴볼 수 있습니다.

프로젝트를 열면 W\&B App 대시보드에서 실시간 결과를 확인할 수 있습니다. 몇 번의 클릭만으로 [병렬 좌표 플롯](/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="Sweeps 대시보드 예시" width="4172" height="3046" data-path="products/wandb/_media/quickstart_dashboard_example.png" />
</Frame>

자세한 내용은 [스윕 결과 시각화](/ko/products/wandb/sweeps/visualize-sweep-results)를 참조하세요. 대시보드 예시는 샘플 [Sweeps 프로젝트](https://forge.coreweave.com/wandb/anmolmann/pytorch-cnn-fashion/sweeps/pmqye6u3)에서 확인하세요.

<h2 id="optional-stop-the-agent">
  선택 사항: 에이전트 중지하기
</h2>

터미널에서 `Ctrl+C`를 눌러 현재 run을 중지하세요. 한 번 더 누르면 에이전트가 종료됩니다.
