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

# 스윕 설정 옵션

> method, metric, parameters, early termination, command를 포함한 모든 스윕 설정 키에 대한 레퍼런스입니다.

스윕 설정은 중첩된 키-값 쌍으로 구성됩니다. 스윕 설정의 최상위 키를 사용하여 검색할 매개변수([`parameters`](#parameters) 키), 매개변수 공간을 검색하는 방식([`method`](#method) 키) 등 스윕 검색의 특성을 정의하세요.

다음 표는 최상위 스윕 설정 키와 각 키에 대한 간단한 설명입니다. 각 키에 대한 자세한 내용은 해당 섹션을 참조하세요.

| 최상위 키 | 설명 |
| - | - |
| `program` | (필수) 실행할 트레이닝 스크립트 |
| `entity` | 이 스윕의 entity |
| `project` | 이 스윕의 프로젝트 |
| `description` | 스윕에 대한 텍스트 설명 |
| `name` | W\&B UI에 표시되는 스윕 이름 |
| [`method`](#method) | (필수) 검색 전략 |
| [`metric`](#metric) | 최적화할 메트릭(일부 검색 전략 및 중지 기준에서만 사용) |
| [`parameters`](#parameters) | (필수) 검색할 매개변수 범위 |
| [`early_terminate`](#early_terminate) | 조기 중지 기준 |
| [`command`](#command) | 트레이닝 스크립트를 호출하고 인수를 전달하는 명령 구조 |
| `run_cap` | 이 스윕의 최대 run 수 |

자세한 내용은 [스윕 설정 정의하기](/ko/products/wandb/sweeps/define-sweep-configuration)를 참조하세요.

<h2 id="metric">
  `metric`
</h2>

최상위 스윕 설정 키인 `metric`을 사용하여 최적화할 메트릭의 이름, 목표, 대상 값을 지정하세요.

| 키 | 설명 |
| - | - |
| `name` | 최적화할 메트릭의 이름입니다. |
| `goal` | `minimize` 또는 `maximize` 중 하나입니다(기본값: `minimize`). |
| `target` | 최적화하려는 메트릭의 목표 값입니다. run이 지정한 목표 값에 도달하면 스윕은 더 이상 새 run을 생성하지 않습니다. run이 목표 값에 도달한 시점에 실행 중인 run이 있는 활성 에이전트는 해당 run이 완료될 때까지 기다린 후 새 run 생성을 중단합니다. |

<h2 id="parameters">
  `parameters`
</h2>

YAML 파일이나 Python 스크립트에서 `parameters`를 최상위 키로 지정하세요. `parameters` 키 안에는 최적화하려는 하이퍼파라미터의 이름을 지정합니다. 대표적인 하이퍼파라미터로는 학습률, 배치 크기, 에포크, 최적화기 등이 있습니다. 스윕 설정에 정의하는 각 하이퍼파라미터마다 검색 제약 조건을 하나 이상 지정하세요.

다음 table은 지원되는 하이퍼파라미터 검색 제약 조건입니다. 하이퍼파라미터와 사용 사례에 맞는 검색 제약 조건을 하나 골라, 스윕 에이전트가 어느 범위에서(분포의 경우) 또는 어떤 값을(`value`, `values` 등) 검색하거나 사용할지 지정하세요.

| 검색 제약 조건 | 설명 |
| - | - |
| `values` | 이 하이퍼파라미터에 유효한 모든 값을 지정합니다. `grid`와 호환됩니다. |
| `value` | 이 하이퍼파라미터에 유효한 단일 값을 지정합니다. `grid`와 호환됩니다. |
| `distribution` | 확률 [분포](#distribution-options-for-random-and-bayesian-search)를 지정합니다. 기본값에 대한 자세한 내용은 이 table 아래의 참고 사항을 확인하세요. |
| `probabilities` | `random`을 사용할 때 `values`의 각 요소가 선택될 확률을 지정합니다. |
| `min`, `max` | (`int` 또는 `float`) 최솟값과 최댓값입니다. `int`는 `int_uniform` 분포 하이퍼파라미터에, `float`는 `uniform` 분포 하이퍼파라미터에 사용합니다. |
| `mu` | (`float`) `normal` 또는 `lognormal` 분포 하이퍼파라미터의 평균 매개변수입니다. |
| `sigma` | (`float`) `normal` 또는 `lognormal` 분포 하이퍼파라미터의 표준 편차 매개변수입니다. |
| `q` | (`float`) 양자화된 하이퍼파라미터의 양자화 단계 크기입니다. |
| `parameters` | 루트 수준 매개변수 안에 다른 매개변수를 중첩합니다. |

<Note>
  [분포](#distribution-options-for-random-and-bayesian-search)를 지정하지 않으면 W\&B는 다음 조건에 따라 분포를 설정합니다.

  * `values`를 지정한 경우 `categorical`
  * `max`와 `min`을 정수로 지정한 경우 `int_uniform`
  * `max`와 `min`을 부동 소수점 수로 지정한 경우 `uniform`
  * `value`를 지정한 경우 `constant`
</Note>

<h2 id="method">
  `method`
</h2>

`method` 키로 하이퍼파라미터 탐색 전략을 지정하세요. 그리드 탐색, 랜덤 탐색, 베이지안 탐색 중 하나를 선택할 수 있습니다.

<h3 id="grid-search">
  그리드 검색
</h3>

그리드 검색은 하이퍼파라미터 값의 가능한 모든 조합을 순회합니다. 그리드 검색은 각 반복에서 사용할 하이퍼파라미터 값 집합을 이전 결과를 참고하지 않고 결정합니다. 따라서 계산 비용이 많이 들 수 있습니다.

연속적인 검색 공간을 대상으로 검색하면 그리드 검색은 종료되지 않고 계속 실행됩니다.

<h3 id="random-search">
  랜덤 탐색
</h3>

랜덤 탐색은 반복할 때마다 분포에 따라 사전 정보 없이 하이퍼파라미터 값 세트를 무작위로 선택합니다. 커맨드라인이나 Python 스크립트, 또는 [W\&B App](/ko/products/wandb/sweeps/visualize-sweep-results)에서 프로세스를 중지하지 않으면 랜덤 탐색은 무기한 실행됩니다.

랜덤 탐색(`method: random`)을 선택하는 경우 `parameters` 키에서 각 하이퍼파라미터의 분포를 지정하세요.

<h3 id="bayesian-search">
  베이지안 탐색
</h3>

[랜덤](#random-search) 탐색이나 [그리드](#grid-search) 탐색과 달리, 베이지안 모델은 이전 결과를 바탕으로 정보에 입각한 결정을 내립니다. 베이지안 최적화는 확률 모델을 사용하여 시도할 값을 결정합니다. 이 과정에서는 목적 함수를 평가하기 전에 대리 함수로 값을 반복해서 테스트합니다. 베이지안 탐색은 연속형 매개변수의 수가 적을 때 효과적이지만 확장성이 떨어집니다. 베이지안 탐색에 대한 자세한 내용은 [Bayesian Optimization Primer 논문](https://web.archive.org/web/20240209053347/https://static.sigopt.com/b/20a144d208ef255d3b981ce419667ec25d8412e2/static/pdf/SigOpt_Bayesian_Optimization_Primer.pdf)을 참조하세요.

베이지안 탐색은 명령줄, Python 스크립트 내부 또는 [W\&B App](/ko/products/wandb/sweeps/visualize-sweep-results)에서 프로세스를 중지하지 않으면 무기한 실행됩니다.

<h3 id="distribution-options-for-random-and-bayesian-search">
  랜덤 및 베이지안 탐색의 분포 옵션
</h3>

`parameters` 키 안에 하이퍼파라미터 이름을 중첩하세요. 그런 다음 `distribution` 키를 지정하고, 해당 값의 분포를 지정하세요.

다음 표는 W\&B에서 지원하는 분포 목록입니다.

| `distribution` 키의 값 | 설명 |
| - | - |
| `constant` | 상수 분포입니다. 사용할 상수 값(`value`)을 지정해야 합니다. |
| `categorical` | 범주형 분포입니다. 이 하이퍼파라미터에 유효한 모든 값(`values`)을 지정해야 합니다. |
| `int_uniform` | 정수에 대한 이산 균등 분포입니다. `max`와 `min`을 정수로 지정해야 합니다. |
| `uniform` | 연속 균등 분포입니다. `max`와 `min`을 부동소수점 수로 지정해야 합니다. |
| `q_uniform` | 양자화된 균등 분포입니다. `X`가 균등 분포를 따를 때 `round(X / q) * q`를 반환합니다. `q`의 기본값은 `1`입니다. |
| `log_uniform` | 로그 균등 분포입니다. 자연로그 값이 `min`과 `max` 사이에서 균등하게 분포하도록 `exp(min)`과 `exp(max)` 사이의 값 `X`를 반환합니다. |
| `log_uniform_values` | 로그 균등 분포입니다. `log(X)`가 `log(min)`과 `log(max)` 사이에서 균등하게 분포하도록 `min`과 `max` 사이의 값 `X`를 반환합니다. |
| `q_log_uniform` | 양자화된 로그 균등 분포입니다. `X`가 `log_uniform`일 때 `round(X / q) * q`를 반환합니다. `q`의 기본값은 `1`입니다. |
| `q_log_uniform_values` | 양자화된 로그 균등 분포입니다. `X`가 `log_uniform_values`일 때 `round(X / q) * q`를 반환합니다. `q`의 기본값은 `1`입니다. |
| `inv_log_uniform` | 역 로그 균등 분포입니다. `log(1/X)`가 `min`과 `max` 사이에서 균등하게 분포하는 `X`를 반환합니다. |
| `inv_log_uniform_values` | 역 로그 균등 분포입니다. `log(1/X)`가 `log(1/max)`와 `log(1/min)` 사이에서 균등하게 분포하는 `X`를 반환합니다. |
| `normal` | 정규 분포입니다. 반환값은 평균이 `mu`(기본값 `0`)이고 표준편차가 `sigma`(기본값 `1`)인 정규 분포를 따릅니다. |
| `q_normal` | 양자화된 정규 분포입니다. `X`가 `normal`일 때 `round(X / q) * q`를 반환합니다. `q`의 기본값은 `1`입니다. |
| `log_normal` | 로그 정규 분포입니다. 자연로그 `log(X)`가 평균이 `mu`(기본값 `0`)이고 표준편차가 `sigma`(기본값 `1`)인 정규 분포를 따르는 값 `X`를 반환합니다. |
| `q_log_normal` | 양자화된 로그 정규 분포입니다. `X`가 `log_normal`일 때 `round(X / q) * q`를 반환합니다. `q`의 기본값은 `1`입니다. |

<h2 id="early_terminate">
  `early_terminate`
</h2>

조기 종료(`early_terminate`)를 사용하면 성능이 낮은 run을 중지할 수 있습니다. 조기 종료가 발생하면 W\&B는 새 하이퍼파라미터 값 세트로 새 run을 생성하기 전에 현재 run을 중지합니다.

<Note>
  `early_terminate`를 사용하려면 중지 알고리즘을 반드시 지정해야 합니다. 스윕 설정의 `early_terminate` 아래에 `type` 키를 중첩하여 지정하세요.
</Note>

<h3 id="stopping-algorithm">
  중지 알고리즘
</h3>

<Note>
  W\&B는 [Hyperband](https://arxiv.org/abs/1603.06560) 중지 알고리즘을 지원합니다.
</Note>

[Hyperband](https://arxiv.org/abs/1603.06560) 하이퍼파라미터 최적화는 *브래킷*이라고 부르는, 미리 설정된 하나 이상의 반복 횟수 지점에서 프로그램을 중지할지 계속 실행할지 평가합니다.

W\&B run이 브래킷에 도달하면 스윕은 해당 run의 메트릭을 이전에 보고된 모든 메트릭 값과 비교합니다. 목표가 최소화인데 run의 메트릭 값이 너무 높거나, 목표가 최대화인데 run의 메트릭이 너무 낮으면 스윕은 해당 run을 종료합니다.

브래킷은 로깅된 반복 횟수를 기준으로 합니다. 브래킷 수는 최적화하려는 메트릭을 로깅한 횟수와 같습니다. 반복은 step이나 에포크, 또는 그 사이의 어떤 단위든 될 수 있습니다. 브래킷을 계산할 때 step 카운터의 숫자 값은 사용하지 않습니다.

<Note>
  브래킷 일정을 만들려면 `min_iter` 또는 `max_iter` 중 하나를 지정하세요.
</Note>

| 키 | 설명 |
| - | - |
| `min_iter` | 첫 번째 브래킷의 반복 횟수를 지정합니다 |
| `max_iter` | 최대 반복 횟수를 지정합니다. |
| `s` | 전체 브래킷 수를 지정합니다(`max_iter` 사용 시 필수) |
| `eta` | 브래킷 승수 일정을 지정합니다(기본값: `3`). |
| `strict` | 원래 Hyperband 논문을 더 충실하게 따라 run을 적극적으로 정리하는 `strict` 모드를 활성화합니다. 기본값은 `false`입니다. |

<Note>
  Hyperband는 몇 분에 한 번씩 종료할 [run](/ko/products/wandb/ref/python/experiments/run)을 확인합니다. 따라서 run이나 반복이 짧으면 run이 실제로 종료되는 시점이 지정된 브래킷과 다를 수 있습니다.
</Note>

<h2 id="command">
  `command`
</h2>

`command` 최상위 키를 사용하면 스윕 에이전트가 트레이닝 스크립트를 호출하고 인수를 전달하는 방식을 제어할 수 있습니다. 형식과 내용은 `command` 키 안에 중첩된 값으로 수정합니다. 파일 이름 같은 고정 컴포넌트는 직접 포함할 수 있습니다.

<Note>
  Unix 시스템에서는 `/usr/bin/env`를 사용하면 OS가 환경에 맞는 Python 인터프리터를 선택합니다.
</Note>

W\&B는 명령의 가변 컴포넌트에 사용할 수 있도록 다음 매크로를 지원합니다.

| 명령 매크로 | 설명 |
| - | - |
| `${env}` | Unix 시스템에서는 `/usr/bin/env`이며, Windows에서는 생략됩니다. |
| `${interpreter}` | `python`으로 확장됩니다. |
| `${program}` | 스윕 설정의 `program` 키로 지정한 트레이닝 스크립트 파일 이름입니다. |
| `${args}` | `--param1=value1 --param2=value2` 형식의 하이퍼파라미터와 그 값입니다. |
| `${args_no_boolean_flags}` | `--param1=value1` 형식의 하이퍼파라미터와 그 값입니다. 단, 불리언 매개변수는 `True`이면 `--boolean_flag_param` 형식으로 전달되고 `False`이면 생략됩니다. |
| `${args_no_hyphens}` | `param1=value1 param2=value2` 형식의 하이퍼파라미터와 그 값입니다. |
| `${args_json}` | JSON으로 인코딩된 하이퍼파라미터와 그 값입니다. |
| `${args_json_file}` | JSON으로 인코딩된 하이퍼파라미터와 그 값이 담긴 파일의 경로입니다. |
| `${envvar}` | 환경 변수를 전달하는 데 사용합니다. `${envvar:MYENVVAR}`는 `MYENVVAR` 환경 변수의 값으로 확장됩니다. |


## Related topics

- [튜토리얼: 스윕 정의, 초기화 및 실행](/ko/products/wandb/sweeps/walkthrough.md)
