Scalare le prove di Hyperopt
Uno dei vantaggi dell'uso di Apache Spark in Azure Databricks è la possibilità di distribuire le attività di elaborazione tra più nodi del cluster. Quando si usa una libreria di Machine Learning compatibile con Spark come MLlib, il training di Machine Learning può essere ridimensionato per ridurre il tempo complessivo impiegato dal processo di training. Quando si usa Hyperopt con una libreria di training distribuita come MLlib, il lavoro viene ridimensionato automaticamente tra i nodi di lavoro disponibili nel cluster.
Hyperopt supporta il ridimensionamento delle prove di ottimizzazione degli iperparametri per le librerie che non vengono distribuite usando la classe SparkTrials al posto di una normale classe Trials. Questo approccio consente di sfruttare il parallelismo con scalabilità orizzontale di Spark per distribuire le esecuzioni di ottimizzazione degli iperparametri tra più nodi, anche quando si usa una libreria progettata per l'elaborazione in un singolo computer come Scikit-Learn.
L'esempio di codice seguente mostra come usare la classe SparkTrials.
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)
Suggerimento
Per altre informazioni sull'uso della classe SparkTrials, vedere La classe SparkTrials nella documentazione di Azure Databricks.