Hyperparameterjustering med Optuna
Optuna är ett Python-bibliotek med öppen källkod för hyperparameterjustering som kan skalas vågrätt över flera beräkningsresurser. Optuna integreras också med MLflow för modell- och utvärderingsspårning och övervakning.
Installera Optuna
Använd följande kommandon för att installera Optuna och dess integreringsmodul.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
Definiera sökutrymme och kör Optuna-optimering
Här följer stegen i ett Optuna-arbetsflöde:
- Definiera en objektiv funktion som ska optimeras. I målfunktionen definierar du sökutrymmet för hyperparameter.
- Skapa ett Optuna Study-objekt och kör justeringsalgoritmen genom att anropa
optimize
funktionen för objektet Studie.
Nedan visas ett minimalt exempel från Optuna-dokumentationen.
- Definiera funktionen objective
objective
och anropasuggest_float
funktionen för att definiera sökutrymmet för parameternx
. - Skapa en studie och utför optimering av funktionen
objective
med 100 försök, d.v.s. 100 anrop av funktionenobjective
med olika värden förx
. - Hämta de bästa parametrarna för studien
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
Parallellisera Optuna-utvärderingsversioner till flera datorer
Du kan distribuera Optuna-utvärderingsversioner till flera datorer i ett Azure Databricks-kluster med Joblib Apache Spark-serverdelen.
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)
Integrera med MLflow
Om du vill spåra hyperparametrar och mått för alla Optuna-utvärderingsversioner använder MLflowCallback
du Optuna Integration-modulerna när du anropar optimize
funktionen.
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-exempel
Den här notebook-filen innehåller ett exempel på hur du använder Optuna för att välja en scikit-learn-modell och en uppsättning hyperparametrar för Iris-datauppsättningen.
Ovanpå ett Optuna-arbetsflöde med en enda dator visar notebook-filen hur du
- Parallellisera Optuna-utvärderingsversioner till flera datorer via Joblib
- Spåra utvärderingskörningar med MLflow