Dostrajanie hiperparametrów za pomocą optuna
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. Rozwiązanie Optuna integruje się również z platformą MLflow na potrzeby śledzenia i monitorowania wersji próbnej.
Instalowanie platformy Optuna
Użyj następujących poleceń, aby zainstalować platformę Optuna i jej moduł integracji.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
Definiowanie obszaru wyszukiwania i uruchamianie optymalizacji Optuna
Poniżej przedstawiono kroki przepływu pracy Optuna:
- Zdefiniuj funkcję celu do optymalizacji. W ramach funkcji objective zdefiniuj przestrzeń wyszukiwania hiperparametrów.
- Utwórz obiekt Optuna Study i uruchom algorytm dostrajania, wywołując
optimize
funkcję obiektu Study.
Poniżej przedstawiono minimalny przykład z dokumentacji optuna.
- Zdefiniuj funkcję
objective
objective i wywołajsuggest_float
funkcję , aby zdefiniować miejsce wyszukiwania dla parametrux
. - Utwórz badanie i zoptymalizuj
objective
funkcję przy użyciu 100 prób, tj. 100 wywołańobjective
funkcji z różnymi wartościamix
. - Uzyskiwanie najlepszych parametrów badania
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
Równoległe próby Optuna do wielu maszyn
Wersje próbne Optuna można dystrybuować na wiele maszyn w klastrze usługi Azure Databricks za pomocą zaplecza platformy Apache Spark z biblioteką Joblib.
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)
Integracja z platformą MLflow
Aby śledzić hiperparametry i metryki wszystkich prób optuna, użyj MLflowCallback
modułów integracji Optuna podczas wywoływania optimize
funkcji.
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])
Przykład notesu
Ten notes zawiera przykład użycia optuna do wybrania modelu scikit-learn i zestawu hiperparametrów dla zestawu danych Iris.
Na podstawie przepływu pracy Optuna z jedną maszyną notes przedstawia sposób
- Równoległe próby optuna do wielu maszyn za pośrednictwem biblioteki Joblib
- Śledzenie przebiegów próbnych za pomocą biblioteki MLflow