Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Optuna ist eine Open-Source-Python-Bibliothek für die Optimierung von Hyperparametern, die horizontal über mehrere Computeressourcen skaliert werden kann. Optuna lässt sich in MLflow für Modell- und Testnachverfolgung und -überwachung integriert.
Optuna installieren
Verwenden Sie die folgenden Befehle, um Optuna und dessen Integrationsmodul zu installieren.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
Definieren des Suchbereichs und Ausführen der Optuna-Optimierung
Hier sind die Schritte in einem Optuna-Workflow:
- Definieren Sie eine Zielfunktion, die optimiert werden soll. Definieren Sie innerhalb der Zielfunktion den Suchbereich für Hyperparameter.
- Erstellen Sie ein Optuna Study-Objekt, und führen Sie den Optimierungsalgorithmus aus, indem Sie die
optimize
-Funktion des Study-Objekts aufrufen.
Im Folgenden finden Sie ein minimales Beispiel aus der Optuna-Dokumentation.
- Definieren Sie die Zielfunktion
objective
, und rufen Sie diesuggest_float
-Funktion auf, um den Suchbereich für den Parameterx
zu definieren. - Erstellen Sie ein Study-Objekt, und optimieren Sie die
objective
-Funktion mit 100 Versuchen, d. h. 100 Aufrufe derobjective
-Funktion mit unterschiedlichen Werten vonx
. - Abrufen der besten Parameter des Study-Objekts
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
Parallelisieren von Optuna-Testversionen auf mehreren Computern
Sie können Optuna-Testversionen mit dem Apache Spark-Back-End für Joblib an mehrere Computer in einem Azure Databricks-Cluster verteilen.
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)
Integration in MLflow
Verwenden Sie zum Nachverfolgen von Hyperparametern und Metriken aller Optuna-Testversionen das MLflowCallback
-Element der Optuna-Integrationsmodule, wenn Sie die optimize
-Funktion aufrufen.
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-Beispiel
Dieses Notebook enthält ein Beispiel für die Verwendung von Optuna zum Auswählen eines Scikit-learn-Modells und einer Reihe von Hyperparametern für das Iris-Dataset.
Neben einem Optuna-Workflow mit einem einzelnen Computer zeigt das Notebook, wie
- Optuna-Testversionen über Joblib auf mehreren Computern parallelisiert werden
- Ausführungen von Testversionen mit MLflow nachverfolgt werden