> ## 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 클라우드 서비스 대신 로컬에서 검색 및 중지 알고리즘을 실행하세요.

# 로컬에서 알고리즘 관리

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

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

로컬 컨트롤러 기능은 로컬에서 검색 및 중지 알고리즘을 실행할 수 있게 해줍니다.

<Warning>
  이 기능은 스윕 도구를 위한 새로운 알고리즘의 더 빠른 개발 및 디버깅을 지원합니다. 하이퍼파라미터 최적화 워크로드에는 적합하지 않습니다.
</Warning>

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

W\&B SDK(`wandb`)를 설치하여 로컬 컨트롤러 명령어를 사용 가능하게 하세요:

```bash theme={"system"}
pip install wandb sweeps
```

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

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

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

1. `--controller` 플래그로 스윕을 초기화하세요:

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

2. `wandb sweep`이 생성한 스윕 ID를 기록한 다음 컨트롤러를 시작하세요. `[SWEEP-ID]`를 스윕 ID로 바꾸세요. 짧은 스윕 ID만 전달하거나 entity와 프로젝트를 경로에 포함할 수 있습니다(`[ENTITY]/[PROJECT]/[SWEEP-ID]`):

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

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

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

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

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

```yaml theme={"system"}
controller:
  type: local
```

그런 다음 플래그 없이 스윕을 초기화하고, 2단계와 3단계를 진행하세요:

```bash theme={"system"}
wandb sweep config.yaml
```

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

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

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

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

컨트롤러 루프를 더 세밀하게 제어하려면 직접 단계별로 실행하세요:

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

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

서빙되는 매개변수를 더욱 세밀하게 제어하려면 `search`와 `schedule`을 직접 호출하세요:

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

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

YAML 설정 파일 대신 완전히 코드로 스윕을 지정하려면, Python에서 검색, 프로그램, 컨트롤러 및 매개변수를 설정하세요:

```python theme={"system"}
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()
```
