Hydra
2 minute read
Hydra는 연구 및 기타 복잡한 애플리케이션 개발을 간소화하는 오픈 소스 Python 프레임워크입니다. 주요 기능은 구성 파일을 통해 계층적 설정을 동적으로 생성하고 커맨드 라인에서 이를 재정의하는 기능입니다.
W&B의 강력한 기능을 활용하면서 Hydra를 구성 관리용으로 계속 사용할 수 있습니다.
메트릭 추적
wandb.init
및 wandb.log
를 사용하여 평소처럼 메트릭을 추적하세요. 여기서 wandb.entity
및 wandb.project
는 hydra 설정 파일 내에 정의됩니다.
import wandb
@hydra.main(config_path="configs/", config_name="defaults")
def run_experiment(cfg):
run = wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project)
wandb.log({"loss": loss})
하이퍼파라미터 추적
Hydra는 구성 사전에 연결하는 기본 방법으로 omegaconf를 사용합니다. OmegaConf
의 사전은 기본 사전의 서브클래스가 아니므로 Hydra의 Config
를 wandb.config
에 직접 전달하면 대시보드에서 예기치 않은 결과가 발생합니다. omegaconf.DictConfig
를 wandb.config
에 전달하기 전에 기본 dict
유형으로 변환해야 합니다.
@hydra.main(config_path="configs/", config_name="defaults")
def run_experiment(cfg):
wandb.config = omegaconf.OmegaConf.to_container(
cfg, resolve=True, throw_on_missing=True
)
wandb.init(entity=cfg.wandb.entity, project=cfg.wandb.project)
wandb.log({"loss": loss})
model = Model(**wandb.config.model.configs)
다중 처리 문제 해결
프로세스가 시작될 때 멈추면 알려진 문제로 인해 발생할 수 있습니다. 이 문제를 해결하려면 다음을 수행하여 wandb.init
에 추가 설정 파라미터를 추가하여 wandb의 다중 처리 프로토콜을 변경해 보세요.
wandb.init(settings=wandb.Settings(start_method="thread"))
또는 셸에서 전역 환경 변수를 설정합니다.
$ export WANDB_START_METHOD=thread
하이퍼파라미터 최적화
W&B Sweeps는 확장성이 뛰어난 하이퍼파라미터 검색 플랫폼으로, 최소한의 코딩 공간으로 W&B Experiments에 대한 흥미로운 통찰력과 시각화를 제공합니다. Sweeps는 코딩 요구 사항 없이 Hydra Projects와 원활하게 통합됩니다. 필요한 것은 스윕할 다양한 파라미터를 설명하는 구성 파일뿐입니다.
간단한 sweep.yaml
파일의 예는 다음과 같습니다.
program: main.py
method: bayes
metric:
goal: maximize
name: test/accuracy
parameters:
dataset:
values: [mnist, cifar10]
command:
- ${env}
- python
- ${program}
- ${args_no_hyphens}
스윕을 호출합니다.
wandb sweep sweep.yaml` \
W&B는 자동으로 프로젝트 내부에 스윕을 생성하고 각 머신에서 스윕을 실행할 수 있도록 wandb agent
코맨드를 반환합니다.
Hydra 기본값에 없는 파라미터 전달
Hydra는 커맨드 앞에 +
를 사용하여 기본 구성 파일에 없는 추가 파라미터를 커맨드 라인을 통해 전달할 수 있도록 지원합니다. 예를 들어 다음과 같이 호출하여 일부 값이 있는 추가 파라미터를 전달할 수 있습니다.
$ python program.py +experiment=some_experiment
Hydra Experiments를 구성하는 동안 수행하는 작업과 유사하게 이러한 +
구성을 스윕할 수 없습니다. 이를 해결하려면 기본 빈 파일로 experiment 파라미터를 초기화하고 W&B Sweep을 사용하여 각 호출에서 해당 빈 설정을 재정의할 수 있습니다. 자세한 내용은 이 W&B Report를 참조하세요.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.