이 페이지에서는 Sweeps 를 정의, 초기화 및 실행하는 방법을 설명합니다. 주요 단계는 다음과 같이 네 가지입니다.
- 트레이닝 코드 설정
- sweep configuration으로 검색 공간 정의
- Sweep 초기화
- Sweep 에이전트 시작
다음 코드를 복사하여 Jupyter 노트북이나 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)
다음 섹션에서는 코드 샘플의 각 단계를 자세히 설명합니다.
트레이닝 코드 설정
wandb.Run.config 에서 하이퍼파라미터 값을 가져와 모델을 트레이닝하고 메트릭을 반환하는 트레이닝 함수를 정의합니다.
선택 사항으로 W&B Run 의 결과가 저장될 Projects 이름을 지정할 수 있습니다 (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 configuration으로 검색 공간 정의
딕셔너리 형태로 스윕할 하이퍼파라미터를 지정합니다. 설정 옵션에 대한 자세한 내용은 Define sweep configuration 을 참조하세요.
위의 예시는 랜덤 검색 ('method':'random') 을 사용하는 sweep configuration 을 보여줍니다. 이 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 는 클라우드(표준) 또는 하나 이상의 머신에 걸친 로컬(local) 환경에서 sweep 을 관리하기 위해 Sweep Controller 를 사용합니다. Sweep 컨트롤러에 대한 자세한 내용은 Search and stop algorithms locally 를 참조하세요.
sweep 을 초기화하면 sweep ID 번호가 반환됩니다:
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
sweep 초기화에 대한 자세한 내용은 Initialize sweeps 를 참조하세요.
Sweep 시작
wandb.agent() API 호출을 사용하여 sweep 을 시작합니다.
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 앱 대시보드에서 실시간 결과를 확인하려면 Projects 를 여세요. 몇 번의 클릭만으로 평행 좌표 플롯, 파라미터 중요도 분석 및 기타 차트 유형 과 같은 풍부한 인터랙티브 차트를 구성할 수 있습니다.
결과 시각화 방법에 대한 자세한 내용은 Visualize sweep results 를 참조하세요. 대시보드 예시는 이 샘플 Sweeps Project 를 참조하세요.
에이전트 중지 (선택 사항)
터미널에서 Ctrl+C 를 눌러 현재 run 을 중지합니다. 한 번 더 누르면 에이전트가 종료됩니다.