240515 TIL #399 AI Tech #14 Optuna

김춘복·2024년 5월 14일
0

TIL : Today I Learned

목록 보기
399/571

Today I Learned

오늘은 optuna에 대해서 공부했다!


Optuna

오픈소스 하이퍼 파라미터 튜닝 프레임워크

  • 최적화된 하이퍼 파라미터를 자동화된 방식으로 찾는 여러가지 방법들을 제공

  • 병렬화가 쉽게 가능해 대규모 하이퍼 파라미터 탐색도 분산 머신을 통해서 시행할 수 있다.

사용 예

  • objective 함수를 정의하고 범위를 지정한다.
  • 하이퍼 파라미터를 탐색하는 공간을 설정한다.
import optuna

def objective(trial):
	X = trial.suggest_uniform('x', -10, 10)
	return (x - 2) ** 2

study = optuna.create_study()
study.optimize(objective, n_trials=100)

study.best_params # E.g. {'x': 2.002108042}

탐색 결과 저장

  • Storage API를 사용해서 하이퍼 파라미터 검색결과 저장 가능
    RDB, Redis 같은 Persistent 저장소에 하이퍼 파라미터 탐색 결과를 저장해 한번 탐색하고 다음에 다시 탐색이 가능하다.
import optuna

def objective(trial):
	x= trial.suggest_float("x", -100, 100)
	return x ** 2

storage = optuna.storages.RDBStorage(
	url="sqlite:///:memory:",
	engine_kwargs={"pool_size": 20, "connect_args": {"timeout": 10}},
)

study = optuna.create_study(storage=storage)
study.optimize(objective, n_trials=10)

Visualization

  • 하이퍼 파라미터 importance(중요도)에 대해 시각화가 가능하다
import optuna

def objective(trial):
	x= trial.suggest_int("x", 0, 2)
	y= trial.suggest_float("y", -1.0, 1.0)
	z = trial.suggest_float("z", 0.0, 1.5)
	return x ** 2 + y ** 3 - z ** 4

sampler = optuna.samplers.RandomSampler(seed=10)
study = optuna.create_study(sampler=sampler)
study.optimize(objective, n_trials=100)

fig = optuna.visualization.plot_param_importances(study)
fig.show()
  • 히스토리(history), Slice, Contour, Parallel Coordinate도 시각화가 가능하다.

본 포스트의 학습 내용은 부스트클래스 <AI 엔지니어 기초 다지기 : 부스트캠프 AI Tech 준비과정> 강의 내용을 바탕으로 작성되었습니다.

profile
Backend Dev / Data Engineer

0개의 댓글