Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Optuna to biblioteka języka Python typu open source umożliwiająca dostrajanie hiperparametrów, które można skalować w poziomie w wielu zasobach obliczeniowych.
MLflow 3.0 wprowadza zaawansowane nowe możliwości optymalizacji hiperparametrów dzięki integracji z optuna.
-
MlflowStorageklasa umożliwia Optunie korzystanie z serwera śledzenia MLflow jako backendu magazynu. -
MlflowSparkStudyklasa umożliwia uruchamianie równoległych badań Optuna przy użyciu funkcji wykonawczych PySpark.
Instalowanie platformy Optuna
Środowisko MLflow 3.0 jest wstępnie zainstalowane w środowisku Databricks Runtime 17.0 ML lub nowszym. W starszych środowiskach wykonawczych użyj następujących poleceń, aby zainstalować najnowszą wersję Optuna i MLFlow.
%pip install mlflow --upgrade
%pip install optuna
Uruchamianie optymalizacji Optuna równolegle
Poniżej przedstawiono kroki przepływu pracy Optuna:
Zdefiniuj funkcję celu do optymalizacji. W ramach funkcji objective zdefiniuj przestrzeń wyszukiwania hiperparametrów. Aby uzyskać więcej informacji, zobacz dokumentację optuna.
Poniżej przedstawiono przykład wyboru modelu i dostrajania hiperparametrów za pomocą biblioteki sckit-learn. W przykładzie zdefiniowano funkcję celu
objective, oraz wywołuje funkcjęsuggest_floatw celu zdefiniowania przestrzeni wyszukiwania dla parametrux.
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
- Utwórz magazyn udostępniony na potrzeby optymalizacji rozproszonej. Za pomocą
MlflowStorageprogramu można użyć serwera śledzenia MLflow jako zaplecza magazynu.
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)
- Utwórz obiekt Optuna Study i uruchom algorytm dostrajania, wywołując
optimizefunkcję obiektu Study.MlflowSparkStudymoże uruchamiać równoległe badania Optuna przy użyciu funkcji wykonawczych PySpark.
Poniżej znajduje się przykład z dokumentacji Optuna.
- Utwórz badanie i zoptymalizuj
objectivefunkcję przy użyciu 8 prób (8 wywołańobjectivefunkcji z różnymi wartościamix). - Uzyskiwanie najlepszych parametrów badania
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
Przykład notatnika
Ten notatnik zawiera przykład użycia Optuna do wybrania modelu scikit-learn i zestawu hiperparametrów dla zestawu danych Iris.
Zwiększanie optymalizacji hiperparametrów za pomocą Optuna i MLflow
Interfejs API integracji rozwiązania MLFlow Optuna
MlflowStorage
MlflowStorage jest klasą pamięci masowej opartą na MLflow dla Optuna z przetwarzaniem wsadowym, w celu uniknięcia ograniczeń interfejsu API REST.
| Nazwa parametru klasy | Typ | Opis |
|---|---|---|
experiment_id |
str |
Identyfikator eksperymentu MLflow dla przechowywania |
name |
str |
Nazwa magazynu |
batch_flush_interval |
float |
Czas w sekundach między automatycznymi czyszczeniami buforów wsadowych (wartość domyślna: 1.0) |
batch_size_threshold |
float |
Maksymalna liczba przedmiotów w partii przed wyzwoleniem opróżnienia (wartość domyślna: 100) |
MlflowSparkStudy
MlflowSparkStudy to opakowanie klasy ~optuna.study.Study dla integracji Optuna ze Spark za pomocą eksperymentu MLflow.
| Nazwa parametru klasy | Typ | Opis |
|---|---|---|
study_name |
str |
Nazwa badania |
storage |
mlflow.optuna.MlflowStorage |
Klasa magazynu oparta na platformie MLflow |
sampler |
samplers.BaseSampler |
Obiekt typu samplera, który implementuje algorytm działający w tle dla sugestii wartości.
optuna.samplers.TPESampler jest używanyjako wartość domyślna. |
pruner |
float |
Obiekt przycinający, który decyduje o wczesnym zatrzymaniu nieobiecujących eksperymentów.
optuna.pruners.MedianPruner jest używanyjako wartość domyślna. |