[부스트캠프 AI Tech 5기] Hyperparameter Tuning

박상우·2023년 3월 16일
0

부스트캠프

목록 보기
14/54
post-thumbnail

제대로 학습을 해보자
성능을 올리기 위해서는 model, data, HT가 중요

Hyperparameter Tuning

  • 사람이 지정하는 Hyperparameter (learning rate, 모델의 크기, optimizer 등)
  • 한 때는 하이퍼파라미터에 의해 값이 크게 좌우될 때도 있었음
  • 최근에는 마지막 0.01을 쥐어짜야 할 때 도전
  • 격자 탐색과 random 탐색
  • 최근에는 베이지안 기반 기법들이 주도

Ray

  • Multi-node multi processing 지원 모듈
  • ML/DL의 병렬 처리를 위해 개발된 모듈
  • ML/DL 분산 병렬 모듈의 표준
  • Hyperparameter Search를 위한 다양한 모듈 제공
data_dir = os.path.abspath("./data")
load_data(data_dir)
# config에 search space 지정 
config = {
        "l1": tune.sample_from(lambda _: 2 ** np.random.randint(2, 9)),
        "l2": tune.sample_from(lambda _: 2 ** np.random.randint(2, 9)),
        "lr": tune.loguniform(1e-4, 1e-1),
        "batch_size": tune.choice([2, 4, 8, 16])
    }
# 학습 스케줄링 알고리즘 지정 
scheduler = ASHAScheduler(
        metric="loss",
        mode="min",
        max_t=max_num_epochs,
        grace_period=1,
        reduction_factor=2)
    reporter = CLIReporter(
        # parameter_columns=["l1", "l2", "lr", "batch_size"],
# 결과 출력 양식 지정 
metric_columns=["loss", "accuracy", "training_iteration"])
    
result = tune.run(
        partial(train_cifar, data_dir=data_dir),
        resources_per_trial={"cpu": 2, "gpu": gpus_per_trial},
        config=config,
        num_samples=num_samples,
        scheduler=scheduler,
        progress_reporter=reporter)
  • ray는 모델 학습을 함수의 형태로 지정해야 함
profile
세상아 덤벼라

0개의 댓글