Hyperparameteroptimierung skalieren

Abgeschlossen

Einer der Vorteile der Verwendung von Apache Spark in Azure Databricks ist die Möglichkeit, Verarbeitungsaufgaben über mehrere Clusterknoten zu verteilen. Wenn Sie eine Spark-aware Machine Learning-Bibliothek wie MLlib verwenden, können maschinelle Lernschulungen skaliert werden, um die Gesamtzeit des Schulungsvorgangs zu reduzieren.

Optuna unterstützt die verteilte Hyperparameteroptimierung durch Integration in verschiedene Back-Ends, einschließlich Apache Spark. Sie können den Optimierungsprozess über mehrere Knoten in Ihrem Databricks-Cluster mithilfe der optuna.integration.SparkOptimizer Klasse parallelisieren.

Der folgende Beispielcode zeigt, wie Sie Optuna mit Spark für die verteilte Optimierung verwenden:

from optuna.integration import SparkOptimizer
import mlflow

def objective(trial):
    # Define your hyperparameters
    x = trial.suggest_float("x", -10, 10)
    # ... your model training and evaluation ...
    return (x - 2) ** 2  # Example objective

# Create a SparkOptimizer
spark_optimizer = SparkOptimizer(study_name="distributed_study",
                               storage="sqlite:///example.db",
                               n_trials=100)

# Run optimization with MLflow tracking
with mlflow.start_run():
    study = spark_optimizer.run_study(objective, direction="minimize")
    
    print("Best param values: ", study.best_params)
    print("Best value: ", study.best_value)

Zu den wichtigsten Vorteilen der Verwendung von Optuna mit Spark in Azure Databricks gehören:

  • Automatische Verteilung von Testversionen über Arbeitsknoten hinweg
  • Integrierte Fehlertoleranz und Wiederherstellung
  • Nahtlose Integration mit MLflow zur Experimentverfolgung
  • Unterstützung für verteilte und nicht verteilte ML-Bibliotheken

Tipp

Weitere Informationen zur verteilten Optimierung mit Optuna finden Sie in der Optuna-Dokumentation zur verteilten Optimierung.