Hydra 기본 예제 — @hydra.main으로 앱 만들기

Hydra 기본 예제 — @hydra.main으로 앱 만들기

Hydra를 처음 쓸 때는 @hydra.main 데코레이터로 앱을 감싸는 것부터 시작해요. 이 데코레이터가 설정 파일을 자동으로 로드해서, 함수 인자 cfg로 계층적 설정 객체를 넘겨줘요. 여기에 명령줄 오버라이드까지 더하면 "설정을 코드 없이 바꾸는" Hydra의 힘이 드러나요.

출처: https://hydra.cc/docs/tutorials/basic/your_first_app/defaults/

설치

안정 버전은 이렇게 설치해요.

pip install hydra-core --upgrade

기본 예제

먼저 설정 파일을 만들어요.

# conf/config.yaml
db:
  driver: mysql
  user: omry
  pass: secret

그다음 앱 코드를 작성해요.

import hydra
from omegaconf import DictConfig, OmegaConf

@hydra.main(config_path="conf", config_name="config")
def my_app(cfg: DictConfig) -> None:
    print(OmegaConf.to_yaml(cfg))

if __name__ == "__main__":
    my_app()

config_path="conf"는 설정이 있는 디렉토리, config_name="config"는 기본 설정 파일 이름이에요. 실행하면 config.yaml이 자동으로 로드돼요.

$ python my_app.py
db:
  driver: mysql
  pass: secret
  user: omry

명령줄에서 값 덮어쓰기

Hydra의 강력한 기능은 명령줄 오버라이드예요. 실행할 때 설정 값을 직접 덮어쓸 수 있어요.

$ python my_app.py db.user=pons db.pass=1234

db.user=pons처럼 점으로 경로를 지정해 값을 바꿔요. 코드를 고치지 않고도 실행마다 다른 설정을 줄 수 있죠.

더 알아보기

설정을 파일·명령줄 양쪽에서 다루는 전체 튜토리얼은 공식 Your First Hydra App 문서에서 이어서 볼 수 있어요.