Hydra는 연구용 및 기타 복잡한 애플리케이션 개발을 단순화하는 오픈 소스 Python 프레임워크입니다. 핵심 기능은 구성을 조합해 계층적 설정을 동적으로 생성하고, 설정 파일과 커맨드 라인을 통해 이를 덮어쓸 수 있는 능력입니다.W&B의 강력한 기능을 활용하면서도 설정 관리를 위해 계속 Hydra를 사용할 수 있습니다.
메트릭 추적
wandb.init()과 wandb.Run.log()을 사용해 평소와 같이 메트릭을 추적합니다. 여기서는 wandb.entity와 wandb.project가 Hydra 설정 파일 안에서 정의됩니다.
하이퍼파라미터 추적
OmegaConf의 사전 객체는 기본 사전의 서브클래스가 아니므로 Hydra의 Config를 그대로 wandb.Run.config에 전달하면 대시보드에서 예기치 않은 결과가 발생할 수 있습니다. wandb.Run.config에 전달하기 전에 omegaconf.DictConfig를 파이썬의 기본 dict 타입으로 변환해야 합니다.
멀티프로세싱 문제 해결
wandb.init()에 추가 설정 파라미터를 넣어서 wandb의 멀티프로세싱 프로토콜을 다음과 같이 변경해 보세요:
하이퍼파라미터 최적화
sweep.yaml 파일은 다음과 같습니다:
wandb agent 명령을 반환합니다.
Hydra 기본값에 없는 파라미터 전달하기
+를 붙이면 됩니다. 예를 들어, 다음과 같이 호출해 값이 지정된 추가 파라미터를 전달할 수 있습니다:
+ 설정에 대해서는 스윕을 수행할 수 없습니다. 이를 우회하려면 실험 파라미터를 기본값으로 빈 파일로 초기화한 다음, 각 호출 시 W&B Sweep을 사용해 그 빈 설정을 덮어쓰면 됩니다. 더 자세한 내용은 이 W&B Report를 참고하세요.