Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Optuna är ett Python-bibliotek med öppen källkod för hyperparameterjustering som kan skalas vågrätt över flera beräkningsresurser.
MLflow 3.0 introducerar kraftfulla nya funktioner för hyperparameteroptimering genom att integrera med Optuna.
-
MlflowStorage-klassen tillåter Optuna att använda MLflow Tracking Server som lagringsserverdel. -
MlflowSparkStudy-klassen möjliggör start av parallella Optuna-studier med PySpark-exekutorer.
Installera Optuna
MLflow 3.0 är förinstallerat i Databricks Runtime 17.0 ML och senare. På äldre körmiljöer använder du följande kommandon för att installera den senaste versionen av Optuna och MLFlow.
%pip install mlflow --upgrade
%pip install optuna
Köra Optuna-optimering parallellt
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. Mer information finns i Optuna-dokumentationen.
Nedan visas ett exempel på modellval och hyperparameterjustering med sckit-learn. Exemplet definierar målfunktionen
objectiveoch anroparsuggest_floatfunktionen för att definiera sökutrymmet för parameternx.
import sklearn
def objective(trial):
# Invoke suggest methods of a Trial object to generate hyperparameters.
regressor_name = trial.suggest_categorical('classifier', ['SVR', 'RandomForest'])
if regressor_name == 'SVR':
svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
regressor_obj = sklearn.svm.SVR(C=svr_c)
else:
rf_max_depth = trial.suggest_int('rf_max_depth', 2, 32)
regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)
X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)
regressor_obj.fit(X_train, y_train)
y_pred = regressor_obj.predict(X_val)
error = sklearn.metrics.mean_squared_error(y_val, y_pred)
return error # An objective value linked with the Trial object
- Skapa en delad lagring för distribuerad optimering. Med
MlflowStoragekan du använda MLflow Tracking Server som lagringsserverdel.
import mlflow
from mlflow.optuna.storage import MlflowStorage
experiment_id = mlflow.get_experiment_by_name(dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()).experiment_id
mlflow_storage = MlflowStorage(experiment_id=experiment_id)
- Skapa ett Optuna Study-objekt och kör justeringsalgoritmen genom att anropa
optimizefunktionen för objektet Studie.MlflowSparkStudykan köra parallella Optuna-studier med PySpark-utförare.
Nedan visas ett exempel från Optuna-dokumentationen.
- Skapa en studie och optimera
objective-funktionen med 8 försök (8 anrop avobjective-funktionen med olika värdenx). - Hämta de bästa parametrarna för studien
from mlflow.pyspark.optuna.study import MlflowSparkStudy
mlflow_study = MlflowSparkStudy(
study_name="spark-mlflow-tuning",
storage=mlflow_storage,
)
mlflow_study.optimize(objective, n_trials=8, n_jobs=4)
best_params = study.best_params
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.
Skala upp hyperparameterjustering med Optuna och MLflow
INTEGRERINGS-API för MLFlow Optuna
MlflowStorage
MlflowStorage är en MLflow-baserad lagringsklass för Optuna med batchbearbetning för att undvika REST API-begränsning.
| Namn på klassparameter | Typ | Beskrivning |
|---|---|---|
experiment_id |
str |
MLflow-experiment-ID för lagringen |
name |
str |
Lagringens namn |
batch_flush_interval |
float |
Tid i sekunder mellan automatiska batchspolningar (standard: 1,0) |
batch_size_threshold |
float |
Maximalt antal objekt i batchen innan en tömning utlöses (standard: 100) |
MlflowSparkStudy
MlflowSparkStudy är en omslutning av klassen ~optuna.study.Study för att införliva Optuna med Spark via MLflow-experiment.
| Namn på klassparameter | Typ | Beskrivning |
|---|---|---|
study_name |
str |
Studiens namn |
storage |
mlflow.optuna.MlflowStorage |
MLflow-baserad lagringsklass |
sampler |
samplers.BaseSampler |
Ett exempelobjekt som implementerar bakgrundsalgoritm för värdeförslag.
optuna.samplers.TPESampler användssom standard. |
pruner |
float |
Ett beskärningsobjekt som bestämmer ett tidigt avslut av otillräckliga försök.
optuna.pruners.MedianPruner användssom standardinställning. |