Sdílet prostřednictvím


Ladění hyperparametrů pomocí Optuna

Optuna je opensourcová knihovna Pythonu pro ladění hyperparametrů, která se dá horizontálně škálovat napříč několika výpočetními prostředky. Optuna se také integruje s MLflow pro sledování modelů a zkušebních verzí a monitorování.

Instalace Optuna

Pomocí následujících příkazů nainstalujte Optuna a jeho integrační modul.

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

Definování vyhledávacího prostoru a spuštění optimalizace Optuna

Tady jsou kroky v pracovním postupu Optuna:

  1. Definujte funkci cíle, která se má optimalizovat. V rámci objektivní funkce definujte prostor pro vyhledávání hyperparametrů.
  2. Vytvořte objekt Optuna Study a spusťte algoritmus ladění voláním optimize funkce Study objektu.

Níže je uveden minimální příklad z dokumentace k Optuna.

  • Definujte objektivní funkci objectivea zavolejte suggest_float funkci, která definuje vyhledávací prostor pro parametr x.
  • Vytvořte studii a optimalizujte objective funkci pomocí 100 pokusů, tj. 100 volání objective funkce s různými hodnotami x.
  • Získání nejlepších parametrů studie
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

Paralelizace zkušebních verzí Optuna na více počítačů

Zkušební verze Optuna můžete distribuovat do více počítačů v clusteru Azure Databricks pomocí back-endu Apache Sparku 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)

Integrace s MLflow

Ke sledování hyperparametrů a metrik všech zkušebních verzí Optuna použijte MLflowCallback moduly Optuna Integration při volání optimize funkce.

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])

Příklad poznámkového bloku

Tento poznámkový blok obsahuje příklad použití optuna k výběru modelu scikit-learn a sady hyperparametrů pro datovou sadu Iris.

V rámci pracovního postupu Optuna s jedním počítačem předvádí poznámkový blok, jak na to

  • Paralelizace zkušebních verzí Optuna na více počítačů prostřednictvím joblibu
  • Sledování zkušebních spuštění pomocí MLflow

Vertikální navýšení kapacity ladění hyperparametrů pomocí Optuna a MLflow

Získat poznámkový blok