다음을 통해 공유


Optuna를 사용하여 하이퍼 매개 변수 튜닝

Optuna는 여러 컴퓨팅 리소스에서 수평으로 확장할 수 있는 하이퍼 매개 변수 튜닝을 위한 오픈 소스 Python 라이브러리입니다. Optuna는 모델 및 평가판 추적 및 모니터링을 위해 MLflow와도 통합됩니다.

Optuna 설치

다음 명령을 사용하여 Optuna 및 해당 통합 모듈을 설치합니다.

%pip install optuna
%pip install optuna-integration # Integration with MLflow

검색 공간 정의 및 Optuna 최적화 실행

Optuna 워크플로의 단계는 다음과 같습니다.

  1. 최적화할 목표 함수를 정의합니다. 목표 함수 내에서 하이퍼 매개 변수 검색 공간을 정의합니다.
  2. 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를 사용하여 평가판 실행 추적

Optuna 및 MLflow를 사용하여 하이퍼 매개 변수 튜닝 확장

노트북 가져오기