Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
MLflow 3.0 zavádí výkonné nové funkce pro optimalizaci hyperparametrů díky integraci s Optuna.
-
MlflowStorage
Třída umožňuje Optuna používat MLflow Tracking Server jako své úložiště backendu. -
MlflowSparkStudy
třída umožňuje spouštění paralelních studií Optuna pomocí exekutorů PySpark.
Instalace Optuna
MLflow 3.0 je předinstalovaný v Databricks Runtime 17.0 ML a vyšší. Ve starších běhových prostředích použijte následující příkazy k instalaci nejnovější verze Optuna a MLFlow.
%pip install mlflow --upgrade
%pip install optuna
Paralelní 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ů. Další podrobnosti najdete v dokumentaci k Optuna.
Níže je příklad pro výběr modelu a ladění hyperparametrů pomocí sckit-learn. Příklad definuje cílovou funkci
objective
a zavolásuggest_float
funkci k definování vyhledávacího prostoru pro parametrx
.
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
- Vytvořte sdílené úložiště pro distribuovanou optimalizaci. Pomocí
MlflowStorage
příkazu MLflow Tracking Server můžete použít jako back-end úložiště.
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)
- Vytvořte objekt Optuna Study a spusťte algoritmus ladění voláním
optimize
funkce Study objektu.MlflowSparkStudy
může spouštět paralelní studie Optuna pomocí exekutorů PySpark.
Níže je příklad z dokumentace k Optuna.
- Vytvořte studii a optimalizujte
objective
funkci pomocí 8 pokusů (8 voláníobjective
funkce s různými hodnotamix
). - Získání nejlepších parametrů studie
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
Příklad poznámkového bloku
Tento poznámkový blok poskytuje příklad použití knihovny Optuna pro výběr modelu scikit-learn a sady hyperparametrů pro datovou sadu Iris.
Škálování ladění hyperparametrů pomocí Optuna a MLflow
Získejte poznámkový blok
MLFlow Optuna Integration API
MlflowStorage
MlflowStorage
je třída úložiště založená na MLflow pro Optuna s dávkovým zpracováním, aby se zabránilo omezování rozhraní REST API.
Název parametru třídy | Typ | Popis |
---|---|---|
experiment_id |
str |
ID experimentu MLflow pro úložiště |
name |
str |
Název úložiště |
batch_flush_interval |
float |
Doba v sekundách mezi automatickým vyprazdňováním dávek (výchozí hodnota: 1,0) |
batch_size_threshold |
float |
Maximální počet položek v dávce před spuštěním vyprázdnění (výchozí hodnota: 100) |
MlflowSparkStudy
MlflowSparkStudy
je obálka třídy ~optuna.study.Study
pro začlenění Optuna se Sparkem prostřednictvím experimentu MLflow.
Název parametru třídy | Typ | Popis |
---|---|---|
study_name |
str |
Název studie |
storage |
mlflow.optuna.MlflowStorage |
Třída úložiště založená na MLflow |
sampler |
samplers.BaseSampler |
Objekt sampler, který implementuje algoritmus na pozadí pro návrh hodnot.
optuna.samplers.TPESampler se používájako výchozí. |
pruner |
float |
Objekt prořezávače, který rozhoduje o předčasném zastavení neperspektivních pokusů.
optuna.pruners.MedianPruner se používájako výchozí. |