Hydra 자체 설정 — 런처·스위퍼·출력 디렉토리
Hydra 자체 설정 — 런처·스위퍼·출력 디렉토리
Hydra는 여러분의 애플리케이션 설정뿐 아니라 Hydra 자신도 설정할 수 있어요. 런처(Launcher), 스위퍼(Sweeper), 로깅, 출력 디렉토리 패턴, --help·--hydra-help 같은 앱 도움말까지요. 이 Hydra 설정은 자기만의 hydra 노드로 구성돼 있고, 여러 설정 파일이 조합돼 만들어져요.
Hydra 설정의 기본 구조
Hydra 설정은 hydra/config 아래에서 defaults로 조합돼요.
defaults:
- job_logging: default # Job's logging config
- launcher: basic # Launcher config
- sweeper: basic # Sweeper config
- output: default # Output directory
실제 Hydra 설정을 보려면 --cfg hydra로 확인할 수 있어요.
$ python my_app.py --cfg hydra
Hydra 설정에 접근하기
Hydra 설정은 @hydra.main()이 함수에 넘기는 cfg 객체에서는 자동으로 삭제돼서, 여러분 설정을 깔끔하게 유지해줘요. 필요한 경우 두 가지 방법으로 접근할 수 있어요.
- 설정에서
hydraresolver로:${hydra:job.name}같은 문법이에요. - 코드에서
HydraConfig싱글턴으로:
from hydra.core.hydra_config import HydraConfig
@hydra.main()
def my_app(cfg: DictConfig) -> None:
print(HydraConfig.get().job.name)
주요 설정 그룹
- hydra.job: 잡 이름(
name), 현재 작업 디렉토리로 이동할지(chdir), 스윕 속의 일련번호(num) 같은 잡 관련 설정. - hydra.run: 단일 실행 모드(
--multirun이 없을 때)의 출력 디렉토리(dir). - hydra.sweep: 멀티런(
--multirun) 모드에서 모든 잡의 공통 디렉토리(dir)와 잡별 하위 디렉토리 패턴(subdir). - hydra.runtime: Hydra 버전·원래 작업 디렉토리(
cwd)·조합된 출력 디렉토리 등 자동으로 채워지는 필드. 이건 오버라이드하면 안 돼요. - hydra.overrides: 실행에 사용된 명령줄 오버라이드 목록(작업용
task와 hydra용hydra).
기본 제공 resolver
Hydra는 몇 가지 OmegaConf resolver를 기본 제공해요.
- hydra:
${hydra:job.name}처럼 hydra 설정 노드로 보간. - now:
${now:%Y-%m-%d}처럼 현재 시각 문자열 생성. - python_version:
${python_version:major}처럼 런타임 파이썬 버전 반환.
더 알아보기
출력/작업 디렉토리 패턴을 바꾸는 법은 Customizing working directory, 잡 설정은 Job Configuration 문서에서 이어서 볼 수 있어요.