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

> W&B 클라우드 호스팅 서비스를 사용하는 대신 로컬에서 검색 및 중지 알고리즘을 실행합니다.

# 로컬에서 알고리즘 관리하기

이 페이지에서는 W\&B 클라우드 호스팅 컨트롤러를 사용하는 대신 스윕의 검색 및 중지 알고리즘을 로컬에서 실행하는 방법을 설명합니다. 로컬 컨트롤러를 사용하면 코드를 검사하고 계측하여 문제를 디버그하거나, 나중에 클라우드 호스팅 컨트롤러에 통합할 새 알고리즘을 개발할 수 있습니다.

기본적으로 W\&B는 하이퍼파라미터 컨트롤러를 클라우드 서비스로 호스팅합니다. W\&B 에이전트는 컨트롤러와 통신하여 트레이닝에 사용할 다음 파라미터 집합을 확인합니다. 또한 컨트롤러는 조기 중지 알고리즘을 실행하여 어떤 Runs을 중지할지 확인합니다.

로컬 컨트롤러 기능을 사용하면 검색 및 중지 알고리즘을 로컬에서 실행할 수 있습니다.

<Warning>
  이 기능은 Sweeps 도구용 새 알고리즘을 더 빠르게 개발하고 디버그할 수 있도록 지원합니다. 하이퍼파라미터 최적화 워크로드에는 적합하지 않습니다.
</Warning>

<div id="prerequisites">
  ## 사전 요구 사항
</div>

로컬 컨트롤러 명령을 사용할 수 있게 W\&B SDK (`wandb`)를 설치하세요:

```bash theme={null}
pip install wandb sweeps
```

다음 예에서는 Python 스크립트 또는 Jupyter Notebook에 이미 설정 파일과 트레이닝 루프가 정의되어 있다고 가정합니다. 자세한 내용은 [스윕 설정 정의하기](/ko/models/sweeps/define-sweep-configuration/)를 참조하세요.

<div id="run-a-local-controller-from-the-command-line">
  ## 명령줄에서 로컬 컨트롤러 실행
</div>

W\&B에서 클라우드 서비스로 제공하는 하이퍼파라미터 컨트롤러를 사용할 때와 같은 방식으로 스윕을 초기화하되, 로컬 컨트롤러를 사용하려면 `--controller` 플래그를 전달하세요:

1. `--controller` 플래그를 사용해 스윕을 초기화합니다:

   ```bash theme={null}
   wandb sweep --controller config.yaml
   ```

2. `wandb sweep`가 생성한 스윕 ID를 확인한 다음 컨트롤러를 시작합니다. `[SWEEP-ID]`를 스윕 ID로 바꾸세요. 짧은 스윕 ID만 전달할 수도 있고, entity와 프로젝트를 경로(`[ENTITY]/[PROJECT]/[SWEEP-ID]`)로 포함할 수도 있습니다:

   ```bash theme={null}
   wandb controller [SWEEP-ID]
   ```

3. 하나 이상의 스윕 에이전트를 시작해 스윕을 실행합니다. `[SWEEP-ID]`를 스윕 ID로 바꾸세요:

   ```bash theme={null}
   wandb agent [SWEEP-ID]
   ```

   자세한 내용은 [스윕 에이전트 시작](/ko/models/sweeps/start-sweep-agents)을 참조하세요.

또는 설정 파일에 컨트롤러를 추가하면 스윕을 초기화할 때마다 `--controller`를 전달하지 않아도 됩니다:

```yaml theme={null}
controller:
  type: local
```

그런 다음 플래그 없이 스윕을 초기화한 후, 2번과 3번 step을 이어서 수행하세요:

```bash theme={null}
wandb sweep config.yaml
```

<div id="run-a-local-controller-with-wb-python-sdk">
  ## W\&B Python SDK로 로컬 컨트롤러 실행하기
</div>

다음 코드 스니펫은 W\&B Python SDK에서 로컬 컨트롤러를 지정하고 사용하는 방법을 보여줍니다. 각 예시는 점차 더 세밀한 제어를 제공하므로, 검색과 스케줄링을 얼마나 사용자 지정해야 하는지에 맞는 접근 방식을 선택할 수 있습니다.

Python SDK에서 컨트롤러를 사용하려면 [`wandb.controller()`](/ko/models/ref/python/functions/controller) 방법에 sweep ID를 전달한 다음, 반환된 객체의 `run` 방법을 호출해 스윕 작업을 시작하세요:

```python theme={null}
sweep = wandb.controller(sweep_id)
sweep.run()
```

컨트롤러 루프를 더 세밀하게 제어하려면 직접 한 단계씩 진행하세요:

```python theme={null}
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    sweep.print_status()
    sweep.step()
    time.sleep(5)
```

서빙할 파라미터를 더욱 세밀하게 제어하려면 `search`와 `schedule`을 직접 호출하세요:

```python theme={null}
import wandb

sweep = wandb.controller(sweep_id)
while not sweep.done():
    params = sweep.search()
    sweep.schedule(params)
    sweep.print_status()
```

YAML 설정 파일 대신 코드만으로 스윕을 완전히 정의하려면 Python에서 검색, 프로그램, 컨트롤러 및 파라미터를 설정하세요:

```python theme={null}
import wandb

sweep = wandb.controller()
sweep.configure_search("grid")
sweep.configure_program("train-dummy.py")
sweep.configure_controller(type="local")
sweep.configure_parameter("param1", value=3)
sweep.create()
sweep.run()
```
