메인 콘텐츠로 건너뛰기
이 페이지에서는 sweep를 정의, 초기화하고 실행하는 방법을 설명합니다. 주요 단계는 네 가지입니다:
  1. 트레이닝 코드를 설정합니다
  2. sweep 설정으로 검색 공간을 정의합니다
  3. sweep를 초기화합니다
  4. sweep 에이전트를 시작합니다
다음 코드를 Jupyter Notebook 또는 Python 스크립트에 복사하여 붙여넣으세요:
# 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 시작
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

wandb.agent(sweep_id, function=main, count=10)
다음 섹션에서는 코드 샘플의 각 step을 나누어 설명합니다.

트레이닝 코드를 설정합니다

wandb.Run.config에서 하이퍼파라미터 값을 받아, 이를 사용해 모델을 트레이닝하고 메트릭을 반환하는 트레이닝 함수를 정의합니다. 선택 사항으로 W&B run의 출력이 저장될 프로젝트 이름을 지정할 수 있습니다(wandb.init()의 project 파라미터). 프로젝트를 지정하지 않으면 run은 “Uncategorized” 프로젝트에 저장됩니다.
sweep와 run은 모두 동일한 프로젝트에 있어야 합니다. 따라서 W&B를 초기화할 때 지정하는 이름은 sweep를 초기화할 때 지정하는 프로젝트 이름과 일치해야 합니다.
# 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})

sweep 설정으로 검색 공간 정의하기

딕셔너리에서 sweep할 하이퍼파라미터를 지정합니다. 설정 옵션은 sweep 설정 정의를 참조하세요. 다음 예제는 무작위 검색('method':'random')을 사용하는 sweep 설정을 보여줍니다. 이 sweep은 배치 크기, 에포크, 학습률에 대해 설정에 나열된 값 중 임의의 조합을 무작위로 선택합니다. W&B는 metric 키에 지정된 메트릭과 "goal": "minimize"가 연결되어 있으면 해당 메트릭을 최소화합니다. 이 경우 W&B는 메트릭 score("name": "score")가 최소화되도록 최적화합니다.
# 2: 검색 공간 정의
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

Sweep 초기화

W&B는 하나 이상의 머신에서 클라우드(standard) 또는 로컬(local) 환경에 걸쳐 sweep를 관리하기 위해 Sweep Controller를 사용합니다. Sweep Controller에 대한 자세한 내용은 로컬에서 검색 및 중지 알고리즘을 참조하세요. sweep를 초기화하면 sweep 식별 번호가 반환됩니다:
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
Sweeps 초기화에 대한 자세한 내용은 Sweeps 초기화를 참조하세요.

Sweep 시작하기

sweep를 시작하려면 wandb.agent() API 호출을 사용하세요.
wandb.agent(sweep_id, function=main, count=10)
멀티프로세싱Python 표준 라이브러리의 multiprocessing 또는 PyTorch의 pytorch.multiprocessing 패키지를 사용하는 경우, wandb.agent()wandb.sweep() 호출을 if __name__ == '__main__':로 감싸야 합니다. 예를 들면 다음과 같습니다.
if __name__ == '__main__':
    wandb.agent(sweep_id="<sweep_id>", function="<function>", count="<count>")
이 관례에 따라 코드를 감싸면 스크립트를 직접 실행할 때만 코드가 실행되고, 워커 프로세스에서 모듈로 임포트될 때는 실행되지 않습니다.멀티프로세싱에 대한 자세한 내용은 Python standard library multiprocessing 또는 PyTorch multiprocessing을 참조하세요. if __name__ == '__main__': 관례에 대해서는 https://realpython.com/if-name-main-python/ 를 참조하세요.

결과 시각화(선택 사항)

프로젝트를 열어 W&B App 대시보드에서 실시간 결과를 확인하세요. 몇 번만 클릭하면 병렬 좌표 플롯, 파라미터 중요도 분석, 추가 차트 유형과 같은 풍부한 대화형 차트를 만들 수 있습니다.
Sweeps 대시보드 예시
결과를 시각화하는 방법에 대한 자세한 내용은 sweep 결과 시각화를 참조하세요. 예시 대시보드는 이 샘플 Sweeps 프로젝트에서 확인하세요.

에이전트 중지(선택)

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