Dela via


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:

  1. Definiera en objektiv funktion som ska optimeras. I målfunktionen definierar du sökutrymmet för hyperparameter.
  2. 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 objectiveoch anropa suggest_float funktionen för att definiera sökutrymmet för parametern x.
  • Skapa en studie och utför optimering av funktionen objective med 100 försök, d.v.s. 100 anrop av funktionen objective med olika värden för x.
  • 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

Skala upp hyperparameterjustering med Optuna och MLflow

Hämta anteckningsbok