Optuna를 사용하여 하이퍼 매개 변수 튜닝
Optuna는 여러 컴퓨팅 리소스에서 수평으로 확장할 수 있는 하이퍼 매개 변수 튜닝을 위한 오픈 소스 Python 라이브러리입니다. Optuna는 모델 및 평가판 추적 및 모니터링을 위해 MLflow와도 통합됩니다.
Optuna 설치
다음 명령을 사용하여 Optuna 및 해당 통합 모듈을 설치합니다.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
검색 공간 정의 및 Optuna 최적화 실행
Optuna 워크플로의 단계는 다음과 같습니다.
- 최적화할 목표 함수를 정의합니다. 목표 함수 내에서 하이퍼 매개 변수 검색 공간을 정의합니다.
- Optuna Study 개체를 만들고 Study 객체의
optimize
함수를 호출하여 튜닝 알고리즘을 실행합니다.
다음은 Optuna 설명서의 최소 예제입니다.
- 목표 함수
objective
를 정의하고suggest_float
함수를 호출하여 매개 변수x
의 검색 공간을 정의합니다. - 스터디를 만들고 100번의 평가판( 즉,
x
값이 다른objective
함수의 100개 호출)을 사용하여objective
함수를 최적화합니다. - 연구의 최상의 매개 변수 가져오기
def objective(trial):
x = trial.suggest_float("x", -10, 10)
return (x - 2) ** 2
study = optuna.create_study()
study.optimize(objective, n_trials=100)
best_params = study.best_params
Optuna 평가판을 여러 컴퓨터에 병렬 처리
Joblib Apache Spark 백엔드를 사용하여 Azure Databricks 클러스터의 여러 컴퓨터에 Optuna 평가판을 배포할 수 있습니다.
import joblib
from joblibspark import register_spark
register_spark() # register Spark backend for Joblib
with joblib.parallel_backend("spark", n_jobs=-1):
study.optimize(objective, n_trials=100)
MLflow와 통합
모든 Optuna 평가판의 하이퍼 매개 변수 및 메트릭을 추적하려면 MLflowCallback
함수를 호출할 때 Optuna 통합 모듈 optimize
을 사용합니다.
import mlflow
from optuna.integration.mlflow import MLflowCallback
mlflow_callback = MLflowCallback(
tracking_uri="databricks",
metric_name="accuracy",
create_experiment=False,
mlflow_kwargs={
"experiment_id": experiment_id
}
)
study.optimize(objective, n_trials=100, callbacks=[mlflow_callback])
Notebook 예제
이 노트북에서는 Optuna를 사용하여 scikit-learn 모델과 붓꽃 데이터 세트의 하이퍼 매개변수 집합을 선택하는 예를 제공합니다.
단일 컴퓨터 Optuna 워크플로를 기반으로 Notebook은 다음 방법을 보여줍니다.
- Joblib을 통해 Optuna 평가판을 여러 컴퓨터에 병렬 처리
- MLflow를 사용하여 평가판 실행 추적