환경설정 관리 프레임워크 hydra 소개

jihyelee·2023년 12월 19일
0

Hydra란

  • 딥러닝 소스코드를 돌릴 때 다양한 configuration을 커맨드라인 혹은 환경설정 파일을 통해 부여하게 되는데, 이를 편리하게 관리하고자 개발된 오픈소스 프레임워크

머신러닝 소프트웨어 개발에 있어서의 공통 문제

  • 기능을 추가하면서 다양한 환경설정 변수들이 추가되는데, 이를 어떻게 그룹화하고 어떻게 재사용할 것인지 결정이 어려움
  • 환경설정 파일로 관리한다면, 모델을 돌리기 전에 항상 관련 파일을 수정해줘야 하는 번거로움이 생기며, 변경사항 추적이 용이하지 않음
  • 자주 변경하는 사항들을 command line을 통해 관리하는 것 또한 커맨드라인 코드를 복잡하고 따분하게 만드는 요인
  • 환경설정 파일을 세분화한다면 관리해야 할 파일 개수가 너무 많아지며(예: 세 개의 모델, 두 개의 데이터셋, 두 개의 loss function 사용 시 config file = 12개) 단일화한다면 복잡도가 증가하며 불필요하게 많은 config를 항상 로드해야 함

Hydra가 어떻게 해당 문제들을 해결할 수 있는가

  • 앞에서 언급한 문제를 해결하기 위해, 코드를 매 경우마다 작성하지 않으면서도 커맨드 라인에서 config(환경설정)을 손쉽게 변경할 수 있도록 함
  • 기능을 여러 번 실행할 때 항상 다른 환경설정으로 구성될 수 있도록 multirun 지원 ('20년도 기준 serial multi run만 지원, parallel(병렬) 혹은 remote(원격)도 제공되는지 확인 필요)
  • 매 실행마다 output directory를 자동으로 생성하고 코드 실행 이전에 현재 실행 디렉토리를 변경함으로써 output 저장의 편리함 도모 (customization 가능)
  • 이 밖에도 dynamic tab completion, automatic configuration of the Python logging 등이 가능

관련 링크 (link1, link2)

profile
Graduate student at Seoul National University, majoring in Artificial Intelligence (NLP). Currently AI Researcher at LG CNS AI Lab

0개의 댓글