Udostępnij za pośrednictwem


Dostrajanie hiperparametrów za pomocą 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. Rozwiązanie Optuna integruje się również z platformą MLflow na potrzeby śledzenia i monitorowania wersji próbnej.

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ę objectiveobjective i wywołaj suggest_float funkcję , aby zdefiniować miejsce wyszukiwania 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

Równoległe próby Optuna do wielu maszyn

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 MLflowCallback modułów integracji Optuna podczas wywoływania optimize funkcji.

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 notesu

Ten notes 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 próby optuna do wielu maszyn za pośrednictwem biblioteki Joblib
  • Śledzenie przebiegów próbnych za pomocą biblioteki MLflow

Skalowanie w górę dostrajania hiperparametrów za pomocą Optuna i MLflow

Pobierz notes