Home [BoostCamp AI Tech / PyTorch] Day9 - Hyper-parameter Tuning
Post
Cancel

[BoostCamp AI Tech / PyTorch] Day9 - Hyper-parameter Tuning

PyTorch : Hyper-parameter Tuning


Introduction

  • 모델 성능을 좋게 만드는 방법은 크게 3가지가 있다.
    • 모델 변경
    • data check
    • hyperparameter tuning
  • 모델을 변경하는 것은 사실 요즘 좋은 backbone 모델이 있어서 큰 의미는 없다.
  • 가장 좋은 성능 향상을 보이는 것은 data preprocessing인데, 이 부분이 요즘 가장 화두가 되는 MLOps와 관련이 깊다.
  • Hyper parameter tuning은 좋은 성능을 보일 것이라 생각했지만 요즘은 별로 큰 향상을 보이지는 못한다.

Hyper-parameter Tuning

  • 모델 스스로 학습하지 않는 값을 사람이 직접 지정하며 모델의 성능을 확인한다.
    • learning rate, 모델 크기, optimizer 등등
    • 요즘은 AutoML의 발달로 이 부분도 많이 축소가 되고 있다.
  • 가장 기본적인 방법론에는 Grid Search와 Random Search가 있다.

Random Search for Hyper-parameter Optimization

  • Grid Search란 왼쪽 그림처럼 해당하는 경우의 수 조합을 모두 확인하는 방식이다.
    내 기억으론 GridSearchCV라는 함수를 쓰면 TensorFlow에서 튜닝을 했는데 토치는 될지 모르겠다.
  • 또 다른 방법은 Random으로 가장 좋은 조합을 찍어내는 것이다.
  • 과거에 자주 사용하는 방식은 Random Search로 탐색을 하다가 잘 나오는 부분에서 Grid Search를 진행하는 방식을 썼다.
  • 요즘은 베이지안 방식을 많이 사용하는데 이 방법은 BOHB 2018에서 참고할 수 있다.

Ray

  • Spark를 개발한 연구실에서 개발한 multi-node multi processing 지원 모듈이다.
  • 머신러닝의 병렬 처리에서 자주 사용하기 위해 만들어졌다.
  • Ray Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from ray import tune
from ray.tune import CLIReporter
from ray.tune.schedulers import ASHAScheduler

data_dir = # your directory
load_data(data_dir)

config = {
    '''
    your hyper-parameter tuning configuration
    '''
}

scheduler = ASHASceduler(metric=metric, mode=mode, max_t=max_num_epochs, grace_period=1, reduction_factor=2)
reporter = CLIReporter(metric_colums=metric_columns)

result = tune.run(
    partial(train_cifar, data_dir=data_dir),
    resource_per_trial={'cpu':cpu_num, 'gpu':gpus_per_tiral},
    config=config, num_samples=num_samples,
    scheduler=scheduler,
    progress_reporter=reporter
)
  • config에 우리가 테스트할 hyper-parameter 조합을 설정한다.
  • scheduler가 중요한데, 스케쥴러를 세팅하는 방식에 따라 어떤 값을 체크하고 어떻게 파라미터 조합을 짤 지를 결정한다.
This post is licensed under CC BY 4.0 by the author.

[BoostCamp AI Tech / PyTorch] Day9 - Multi-GPU 학습

[BoostCamp AI Tech] Day9

Comments powered by Disqus.