Hyperparameter Tuning
- 사람이 지정하는 파라미터
ex) Learning Rate, optimizer, model size..
- 요즘은 데이터가 매우 큰 빅데이터 시대이기 때문에 하이퍼 파라미터에 의해 성능이 크게 좌우되지 않는 편.
데이터 > 모델 > 하이퍼파라미터 순으로 조정의 효과가 있음.
- 가장 기본적인 Hyperparameter Tuning
- Grid Search / Random Search

Ray
- multi-node multi processing 지원 모듈
- ML/DL의 병렬 처리를 위해 개발
- 현재 분산병렬 ML/DL 모듈의 표준
- Hyperparameter Search를 위해 다양한 모듈 제공
example
data_dir = os.path.abspath("./data")
load_data(data_dir)
config = {
"l1": tune.sample_from(lambda _: 2 ** np.random.randint(2, 10)),
"l2": tune.sample_from(lambda _: 2 ** np.random.randint(2, 10)),
"lr": tune.loguniform(1e-4, 1e-1),
"batch_size": tune.choice([16, 32, 64, 128])
}
scheduler = ASHAScheduler(
metric="loss", mode="min", max_t=max_num_epochs, grace_period=1,
reduction_factor=2)
reporter = CLIReporter(
metric_columns=["loss", "accuracy", "training_iteration"])
result = tune.run(
partial(train_cifar, data_dir=data_dir),
resources_per_trial={"cpu": 4, "gpu": gpus_per_trial},
config=config, num_samples=num_samples,
scheduler=scheduler,
progress_reporter=reporter)