Skalieren von Hyperopt-Tests

Abgeschlossen

Einer der Vorteile der Verwendung von Apache Spark in Azure Databricks ist die Möglichkeit, Verarbeitungsaufgaben auf mehrere Clusterknoten zu verteilen. Wenn Sie eine Spark-fähige Machine Learning-Bibliothek wie MLlib verwenden, kann das Machine Learning-Training skaliert werden, um die Gesamtdauer des Trainingsprozesses zu verkürzen. Wenn Sie Hyperopt mit einer verteilten Trainingsbibliothek wie MLlib einsetzen, wird die Arbeit automatisch auf die verfügbaren Workerknoten im Cluster aufgeteilt.

Hyperopt unterstützt die Skalierung von Tests zur Optimierung von Hyperparametern für nicht verteilte Bibliotheken, indem es anstelle einer regulären Trials-Klasse die Klasse SparkTrials verwendet. Mit diesem Ansatz können Sie die Vorteile der Parallelität durch horizontale Skalierung von Spark nutzen, um Optimierungsläufe für Hyperparameter auf mehrere Knoten zu verteilen – selbst wenn Sie eine Bibliothek verwenden, die für die Verarbeitung auf einem Einzelcomputer konzipiert ist (z. B. Scikit-Learn).

Der folgende Beispielcode zeigt, wie Sie die Klasse SparkTrials verwenden können.

from hyperopt import SparkTrials

  spark_trials = SparkTrials()
  with mlflow.start_run():
    argmin = fmin(
      fn=objective,
      space=search_space,
      algo=algo,
      max_evals=100,
      trials=spark_trials)
  
  print("Best param values: ", argmin)

Tipp

Weitere Informationen zur Verwendung der Klasse SparkTrials finden Sie unter Die SparkTrials-Klasse in der Azure Databricks-Dokumentation.