Udostępnij za pośrednictwem


Dostrajanie hiperparametrów przy użyciu Optuna

Optuna to biblioteka języka Python typu open source umożliwiająca dostrajanie hiperparametrów, które można skalować w poziomie w wielu zasobach obliczeniowych. Optuna integruje się również z MLflow w celu śledzenia i monitorowania modeli i prób.

Instalowanie platformy Optuna

Użyj następujących poleceń, aby zainstalować platformę Optuna i jej moduł integracji.

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

Definiowanie obszaru wyszukiwania i uruchamianie optymalizacji Optuna

Poniżej przedstawiono kroki przepływu pracy Optuna:

  1. Zdefiniuj funkcję celu do optymalizacji. W ramach funkcji objective zdefiniuj przestrzeń wyszukiwania hiperparametrów.
  2. Utwórz obiekt Optuna Study i uruchom algorytm dostrajania, wywołując optimize funkcję obiektu Study.

Poniżej przedstawiono minimalny przykład z dokumentacji Optuna.

  • Zdefiniuj funkcję celu objective, a następnie wywołaj funkcję suggest_float, aby zdefiniować przestrzeń poszukiwań dla parametru x.
  • Utwórz badanie i zoptymalizuj objective funkcję przy użyciu 100 prób, tj. 100 wywołań objective funkcji z różnymi wartościami x.
  • Uzyskiwanie najlepszych parametrów badania
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

Przeprowadzaj próby Optuna równolegle na wielu maszynach

Wersje próbne Optuna można dystrybuować na wiele maszyn w klastrze usługi Azure Databricks za pomocą zaplecza platformy Apache Spark z biblioteką Joblib.

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)

Integracja z platformą MLflow

Aby śledzić hiperparametry i metryki wszystkich prób Optuna, użyj modułów integracyjnych Optuna podczas wywoływania funkcji 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])

Przykład notatnika

Ten notatnik zawiera przykład użycia Optuna do wybrania modelu scikit-learn i zestawu hiperparametrów dla zestawu danych Iris.

Na podstawie przepływu pracy Optuna z jedną maszyną notes przedstawia sposób

  • Równoległe uruchamianie prób z wykorzystaniem Optuna na wielu maszynach za pomocą biblioteki Joblib
  • Śledzenie eksperymentów próbnych za pomocą narzędzia MLflow

Zwiększanie optymalizacji hiperparametrów za pomocą Optuna i MLflow

Pobierz notatnik