Hydra의 필요성
파라미터가 너무 많아지면서 코드 내부에 직접 작성하는 것이 불편하게 됨 ->
Hydra는 파라미터 관리를 위해 별도의 yaml(yet another markup language) 파일로 관리
yaml 포맷은 key-value 구성, 들여쓰기 두 칸으로 구조 구분
OmegaConf 를 발전시킨 것이라 변수 접근, 변수 참조 등의 기능을 사용할 수 있음 (${variable})
Hydra 만의 특징
- yaml 파일을 수정하지 않고 config 값을 터미널에서 추가 및 변경 가능
- 여러 설정 파일들을 하나의 설정 파일처럼 유기적 구성 가능
- 서로 다른 설정 파일 실험 조합 가능
Hydra를 위한 yaml 작성
- 들여쓰기 2칸
- key : value 형식
- list는 - 로 나열
- # 주석
- true, TRUE, false, FALSE, yes, no 도 됨
- 정수 또는 실수를 따옴표 없이 쓰면 숫자로 인식함
Config group - 설정파일마다 구분하는 것을 지향함 -> 모델만 바꿔서 실험하는 것이 가능함
<directory layout>
configs
|- callback
|- data
|- logger
|- model
|- optimizer
|- scheduler
|- trainer
config.yaml
confings/config.yaml - default list를 구성해야함
batch_size, learning_rate, num_epochs 등
작동구조
실행할 메인 파일에 (예. main.py)
import hydra
@hydra.main(config_path = "configs", config_name = "config")
def main(cfg):
#####
if __name__ == "__main__":
main()
cfg 를 인자로 받음
hydra에서 가져오는 hyperparams 를 dict type으로 cfg 변수에 저장
객체 방식 접근 / 딕셔너리 방식 접근 모두 가능
커맨드 라인에서 설정파일의 설정값 변경 및 추가 가능
예 1) 설정값 변경
python main.py data.batch_size=64 optimizer.lr=0.1
python main.py model=resnet34
예 2) 설정값 추가 (+ 커맨드로 가능함)
python main.py +optimizer.weight_decay=0.001
예 3) 변경&추가 (++ 커맨드로 가능함)
python main.py ++optimizer.lr=0.05
hydra로 실행시 설정값과 log가 기록됨
outputs/yyyy-MM-dd/hh-mm-ss
|- .hydra
| |- config.yaml (-> 사용한 설정값)
| |- hydra.yaml
| |- overrides.yaml (-> 터미널에서 오버라이드한 설정값)
|- (소스코드이름).log
instantiate
hydra는 Alias를 인식하지 못함
예)
criterion = instantiate(cfg.loss_function)
instantiate(torch.nn.CrossEntropyLoss)
잘못된 예)
instantiate(nn.CrossEntropyLoss)
instantiate 하고자 하는 설정 파일에 _target_ : 객체이름 명시
예) _target_ : torch.nn.CrossEntropyLoss
=> 이렇게 했을 경우의 장점 : 사용하고자 하는 loss 등을 다 yaml에 저장해두고 바꿔가며 쓸 수 있음.
Multi-run
커맨드라인에 --multirun 입력 -> 여러 실험 조합
'Upstage AI Lab 2기' 카테고리의 다른 글
Upstage AI Lab 2기 [Day100] NLP (0) | 2024.05.06 |
---|---|
Upstage AI Lab 2기 [Day095] CV - Generation (0) | 2024.04.29 |
Pytorch Lightning (0) | 2024.04.16 |
Upstage AI Lab 2기 [Day078] - [Day080] Computer Vision Basic (0) | 2024.04.03 |
Upstage AI Lab 2기 [Day069] ML Advanced - CH04 ML 기본모델 ~ CH05 ML 심화모델 (0) | 2024.03.21 |