> ## 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를 Ray Tune과 통합하여 하이퍼파라미터 튜닝 trial을 추적하고, 메트릭을 로깅하고, 실험 결과를 비교하세요.

# Ray Tune

이 페이지에서는 W\&B를 [Ray](https://github.com/ray-project/ray) Tune과 함께 사용하여 하이퍼파라미터 튜닝 trial을 추적하고, 메트릭을 로깅하고, Runs 간의 실험 결과를 비교하는 방법을 설명합니다. W\&B는 Ray를 위한 두 가지 경량 인테그레이션을 제공하며, 트레이닝 워크플로에 가장 적합한 방식을 선택할 수 있습니다.

* `WandbLoggerCallback` 함수는 Tune에 보고된 메트릭을 W\&B에 자동으로 로깅합니다.
* 함수 API와 함께 사용할 수 있는 `setup_wandb()` 함수는 Tune의 트레이닝 정보를 바탕으로 W\&B Python SDK(`wandb`)를 자동으로 초기화합니다. `run.log()`를 호출해 트레이닝 과정을 로깅하는 것처럼, W\&B API를 평소와 같이 사용할 수 있습니다.

<div id="configure-the-integration">
  ## 인테그레이션 설정하기
</div>

이 섹션에서는 Tune trial 메트릭을 W\&B로 전송하는 가장 직접적인 방법인 `WandbLoggerCallback`을 설정하는 방법을 설명합니다.

```python theme={null}
from ray.air.integrations.wandb import WandbLoggerCallback
```

W\&B를 설정하려면 `tune.run()`의 config 매개변수에 wandb 키를 전달하세요. 사용 방법은 [예시](#example)를 참조하세요.

이 인테그레이션은 wandb config 항목의 내용을 키워드 인수로 `wandb.init()`에 전달합니다. 단, `WandbLoggerCallback` 자체를 설정하는 항목은 예외입니다.

<div id="parameters">
  ### 매개변수
</div>

`WandbLoggerCallback`은 다음 매개변수를 받습니다.

* `project (str)`: W\&B 프로젝트 이름입니다. 필수입니다.
* `api_key_file (str)`: W\&B API 키가 포함된 파일 경로입니다.
* `api_key (str)`: W\&B API 키입니다. `api_key_file` 설정 대신 사용할 수 있습니다.
* `excludes (list)`: 로그에서 제외할 메트릭 목록입니다.
* `log_config (bool)`: 결과 딕셔너리의 `config` 매개변수를 로깅할지 여부입니다. 기본값은 `False`입니다.
* `upload_checkpoints (bool)`: `True`이면 모델 체크포인트를 아티팩트로 업로드합니다. 기본값은 `False`입니다.

<div id="example">
  ### 예시
</div>

```python theme={null}
from ray import tune, train
from ray.air.integrations.wandb import WandbLoggerCallback


def train_fc(config):
    for i in range(10):
        train.report({"mean_accuracy": (i + config["alpha"]) / 10})


tuner = tune.Tuner(
    train_fc,
    param_space={
        "alpha": tune.grid_search([0.1, 0.2, 0.3]),
        "beta": tune.uniform(0.5, 1.0),
    },
    run_config=train.RunConfig(
        callbacks=[
            WandbLoggerCallback(
                project="<your-project>", api_key="<your-api-key>", log_config=True
            )
        ]
    ),
)

results = tuner.fit()
```

<div id="setup_wandb">
  ## setup\_wandb
</div>

트레이닝 함수 내부에서 W\&B 로깅을 직접 제어해야 하는 경우 `setup_wandb()`를 사용하세요. 예를 들어 Tune의 리포팅과 함께 커스텀 메트릭을 사용해 `run.log()`를 호출할 수 있습니다.

```python theme={null}
from ray.air.integrations.wandb import setup_wandb
```

이 유틸리티 함수는 Ray Tune과 함께 사용할 수 있도록 W\&B를 초기화하는 데 도움이 됩니다. 기본적인 사용 방법은 트레이닝 함수에서 `setup_wandb()`를 호출하는 것입니다:

```python theme={null}
from ray import tune
from ray.air.integrations.wandb import setup_wandb


def train_fn(config):
    # wandb 초기화
    wandb = setup_wandb(config)
    run = wandb.init(
        project=config["wandb"]["project"],
        api_key_file=config["wandb"]["api_key_file"],
    )

    for i in range(10):
        loss = config["a"] + config["b"]
        run.log({"loss": loss})
        tune.report(loss=loss)
    run.finish()


tuner = tune.Tuner(
    train_fn,
    param_space={
        # 검색 공간 정의
        "a": tune.choice([1, 2, 3]),
        "b": tune.choice([4, 5, 6]),
        # wandb 설정
        "wandb": {"project": "Optimization_Project", "api_key_file": "/path/to/file"},
    },
)
results = tuner.fit()
```

<div id="example-code">
  ## 예시 코드
</div>

엔드 투 엔드 레퍼런스로, 이 인테그레이션이 어떻게 작동하는지 보여 주는 다음 예시를 참조하세요:

* [Colab에서 인테그레이션 사용해 보기](https://wandb.me/raytune-colab): 인테그레이션을 직접 사용해 볼 수 있는 데모입니다.
* [예시 대시보드 보기](https://wandb.ai/anmolmann/ray_tune): 예시로 생성된 대시보드를 확인해 보세요.
