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

jihyelee·2023년 12월 19일

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
AI (NLP) Graduate Student at Seoul National University. Ex-AI Researcher & Engineer at LG CNS AI Lab | Currently AX Engineer at Samsung Electronics (R&D Campus).

0개의 댓글