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:
- Definujte funkci cíle, která se má optimalizovat. V rámci objektivní funkce definujte prostor pro vyhledávání hyperparametrů.
- 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
objective
a zavolejtesuggest_float
funkci, která definuje vyhledávací prostor pro parametrx
. - Vytvořte studii a optimalizujte
objective
funkci pomocí 100 pokusů, tj. 100 voláníobjective
funkce s různými hodnotamix
. - 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