본문 바로가기
AI

[Hydra 사용법] configuration 관리 프레임워크

by hyelllllog 2023. 6. 9.
Hydra (히드라)
configuration management framework

configuration을 계층화하여 관리하고, 실험 configuration 기록하여 실험 관리에 도움을 준다.


01. Configuration 구성

config directory를 생성하고, 해당 디렉토리 안에 각 그룹 단위로 config 파일을 yaml 형태로 생성한다.

 

출처 : reference 02

 

위 사진의 configuration 계층 구조를 살펴보면, model 안에 'resnet18.yaml'과 'resnet34.yaml'이 있다. 

resnet18.yaml은 resnet18을 사용하기 위해 필요한 파라미터가 저장되어 있을 것이고, 

resnet34.yaml은 resnet34를 사용하기 위해 필요한 파라미터가 저장되어 있을 것이다. 

 

이처럼 내가 실험에 사용할 수 있는 다양한 모듈의 파라미터를 yaml 형태로 저장하여 관리한다.

이 config 파일은 모듈 그룹별로 묶어서 계층 구조로 관리된다.

** 이때 모듈은 model, optimizer, scheduler, data ... 등 ML engineering에 사용될 수 있는 모든 것을 의미한다. 

 

config.yaml

 

가장 위에 보이는 config.yaml

실제 실험에 사용할 configuration을 지정하고 관리하는 최고 권위자 역할을 한다.

 

config.yaml 예시 (출처 : reference 02)

 

config.yaml 위에는 실험에서 사용되는 공통 변수를 정의하고,

'defaults' 아래에는 각 모듈에서 선택하고 싶은 yaml을 지정할 수 있다. 

 

예를 들어 model은 resnet18이 지정되어

프로그램을 실행(model engineering 실험)하면 resnet18에 저장된 configuration에 맞게 환경이 구성된다.

 

설정된 default 값이 아닌 다른 모듈을 사용하는 방법

 

command line에 바꿀 모듈 그룹의 파라미터 값을 새로 지정해주면 된다. 

[ default 사용 명령어 예시 ]
python trainer.py 

[ 모듈 변경 명령어 예시 ]
python trainer.py model=resnet34  

 

  • resnet34.yaml에 맞춰 실험 환경에 구성된다.
  • 또한 outputs에 resnet18 대신 resnet34가 사용됐다는 log가 남는다.
  • 실행 Log 저장 경로 : outputs/date/time/hydra/config.yaml

이렇게 command line 에서 파라미터를 지정하는 방식으로, 편하게 다양한 실험을 진행할 수 있다.

파라미터 변경에 대한 내용은 Log 형태로 기록되므로, 실험 관리에 용이하다. 


** 내용 추가 예정 

 

Reference
  1. Hydra 공식 문서 : https://hydra.cc/docs/intro/
  2. Tistory Blog : https://only-wanna.tistory.com/entry/Hydra-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC