Hydra는 연구 및 기타 복잡한 애플리케이션 개발을 간소화하는 오픈 소스 Python 프레임워크입니다. 핵심 기능은 조합을 통해 계층적 설정을 동적으로 생성하고, 설정 파일과 명령줄로 이를 재정의할 수 있다는 점입니다.이 페이지에서는 Hydra 기반 설정 관리와 W&B 실험 추적을 함께 사용하는 방법을 설명합니다. 이를 통해 Hydra의 조합 가능한 설정은 그대로 유지하면서 W&B의 시각화, 하이퍼파라미터 최적화, 그리고 run 비교 기능을 활용할 수 있습니다. 다음 섹션에서는 메트릭 추적, Hydra 설정에서 하이퍼파라미터를 로깅하는 방법, multiprocessing 문제 해결, 그리고 W&B Sweeps를 사용한 하이퍼파라미터 최적화를 다룹니다.”
메트릭 추적
wandb.init()와 wandb.Run.log()를 사용하세요. 다음 예시에서는 동일한 설정이 Hydra와 W&B 모두에 사용되도록 wandb.entity와 wandb.project를 Hydra 설정 파일 내에 정의합니다.
하이퍼파라미터 추적
omegaconf.DictConfig)는 일반 Python dict 인스턴스가 아닙니다.
wandb.Run.config는 읽기 전용 속성이므로, OmegaConf 설정 객체를 전달하려고 wandb.Run.config = ...로 할당하면 AttributeError 예외가 발생합니다.
cfg를 OmegaConf.to_container()를 사용해 일반 dict로 변환한 다음 wandb.init(config=...)에 전달하세요(또는 wandb.Run.config.update(...)를 호출하세요).
멀티프로세싱 문제 해결
wandb.init()에 추가 설정 매개변수를 넣어 W&B의 멀티프로세싱 프로토콜을 변경하세요:
하이퍼파라미터 최적화
sweep.yaml 파일의 예시입니다:
wandb agent 명령어를 반환합니다. 스윕을 실행하려는 각 머신에서 해당 명령어를 실행합니다.”
Hydra 기본값에 없는 매개변수 전달하기
+를 붙입니다. 예를 들어, 다음과 같이 호출하여 값을 지정한 추가 매개변수를 전달할 수 있습니다:
+ 설정에 대해 스윕을 수행할 수 없습니다. 이를 우회하려면 experiment 파라미터를 기본 빈 파일로 초기화한 다음, 각 호출 시 W&B 스윕을 사용해 해당 빈 설정을 덮어쓰세요. 자세한 내용은 W&B 리포트 Configuring W&B Projects with Hydra를 참조하세요.”