Hydra 자체 설정 — 런처·스위퍼·출력 디렉토리

Hydra 자체 설정 — 런처·스위퍼·출력 디렉토리

Hydra는 여러분의 애플리케이션 설정뿐 아니라 Hydra 자신도 설정할 수 있어요. 런처(Launcher), 스위퍼(Sweeper), 로깅, 출력 디렉토리 패턴, --help·--hydra-help 같은 앱 도움말까지요. 이 Hydra 설정은 자기만의 hydra 노드로 구성돼 있고, 여러 설정 파일이 조합돼 만들어져요.

출처: https://hydra.cc/docs/configure_hydra/intro/

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 객체에서는 자동으로 삭제돼서, 여러분 설정을 깔끔하게 유지해줘요. 필요한 경우 두 가지 방법으로 접근할 수 있어요.

  • 설정에서 hydra resolver로: ${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 문서에서 이어서 볼 수 있어요.