Apache Spark MLlib e rilevamento automatizzato di MLflow

Nota

Il rilevamento automatizzato di MLflow MLlib è deprecato nei cluster che eseguono Databricks Runtime 10.1 ML e versioni successive ed è disabilitato per impostazione predefinita nei cluster che eseguono Databricks Runtime 10.2 ML e versioni successive. Usare invece MLflow PySpark ML autologging chiamando mlflow.pyspark.ml.autolog(), che è abilitato per impostazione predefinita con l'assegnazione automatica di Databricks.

Per usare il vecchio MLlib automated MLflow tracking in Databricks Runtime 10.2 ML o versione successiva, abilitarlo impostando le configurazionispark.databricks.mlflow.trackMLlib.enabled true spark e spark.databricks.mlflow.autologging.enabled false.

MLflow è una piattaforma open source per la gestione del ciclo di vita end-to-end di Machine Learning. MLflow supporta il rilevamento per l'ottimizzazione dei modelli di Machine Learning in Python, R e Scala. Solo per i notebook Python, le versioni delle note sulla versione di Databricks Runtime edatabricks Runtime per Machine Learning supportano l'ottimizzazione automatizzatadel modello MLlib MLlib di MLflow Tracking per Apache Spark.

Con il rilevamento automatizzato di MLlib MLflow, quando si esegue il codice di ottimizzazione che usa CrossValidator o TrainValidationSplit, gli iperparametri e le metriche di valutazione vengono registrati automaticamente in MLflow. Senza il rilevamento automatizzato di MLflow, è necessario effettuare chiamate API esplicite per accedere a MLflow.

Gestire le esecuzioni di MLflow

CrossValidator o TrainValidationSplit i risultati di ottimizzazione dei log durante l'esecuzione di MLflow annidati:

  • Esecuzione principale o padre: le informazioni per CrossValidator o TrainValidationSplit vengono registrate nell'esecuzione principale. Se è già presente un'esecuzione attiva, le informazioni vengono registrate in questa esecuzione attiva e l'esecuzione attiva non viene arrestata. Se non è presente alcuna esecuzione attiva, MLflow crea una nuova esecuzione, vi registra e termina l'esecuzione prima di tornare.
  • Esecuzioni figlio: ogni impostazione degli iperparametri testata e la metrica di valutazione corrispondente vengono registrate in un'esecuzione figlio nell'esecuzione principale.

Quando si chiama fit(), Azure Databricks consiglia la gestione di esecuzione MLflow attiva, ovvero eseguire il wrapping della chiamata a fit() all'interno di un'istruzione "with mlflow.start_run():". In questo modo le informazioni vengono registrate con la propria esecuzione principale di MLflow e semplificano la registrazione di tag, parametri o metriche aggiuntivi per l'esecuzione.

Nota

Quando fit() viene chiamato più volte all'interno della stessa esecuzione attiva di MLflow, registra tali esecuzioni multiple nella stessa esecuzione principale. Per risolvere i conflitti di nomi per i parametri e i tag MLflow, MLflow aggiunge un UUID ai nomi con conflitti.

Il notebook Python seguente illustra il rilevamento automatizzato di MLflow.

Notebook di rilevamento automatizzato di MLflow

Ottenere il notebook

Dopo aver eseguito le azioni nell'ultima cella del notebook, l'interfaccia utente di MLflow dovrebbe essere visualizzata:

MLlib-MLflow demo