Assegnazione automatica di databricks

Databricks Autologging è una soluzione senza codice che estende la registrazione automatica di MLflow per offrire il rilevamento automatico degli esperimenti per le sessioni di training di Machine Learning in Azure Databricks.

Con l'assegnazione automatica di Databricks, i parametri del modello, le metriche, i file e le informazioni di derivazione vengono acquisiti automaticamente quando si esegue il training dei modelli da un'ampia gamma di librerie di Machine Learning più diffuse. Le sessioni di training vengono registrate come esecuzioni di rilevamento MLflow. I file di modello vengono inoltre rilevati in modo da poter registrarli facilmente nel Registro modelli MLflow e distribuirli per l'assegnazione dei punteggi in tempo reale con Model Serving.

Il video seguente mostra l'assegnazione automatica di Databricks con una sessione di training del modello scikit-learn in un notebook Python interattivo. Le informazioni di rilevamento vengono acquisite e visualizzate automaticamente nella barra laterale Esecuzioni esperimento e nell'interfaccia utente di MLflow.

Esempio di assegnazione automatica

Requisiti

  • L'assegnazione automatica di Databricks è disponibile a livello generale in tutte le aree con Databricks Runtime 10.4 LTS ML o versione successiva.
  • L'assegnazione automatica di Databricks è disponibile nelle aree di anteprima selezionate con Databricks Runtime 9.1 LTS ML o versione successiva.

Funzionamento

Quando si collega un notebook Python interattivo a un cluster Azure Databricks, Databricks Autologging chiama mlflow.autolog() per configurare il rilevamento per le sessioni di training del modello. Quando si esegue il training dei modelli nel notebook, le informazioni di training del modello vengono rilevate automaticamente con MLflow Tracking. Per informazioni su come queste informazioni di training del modello sono protette e gestite, vedere Sicurezza e gestione dei dati.

La configurazione predefinita per la chiamata mlflow.autolog() è:

mlflow.autolog(
    log_input_examples=False,
    log_model_signatures=True,
    log_models=True,
    disable=False,
    exclusive=False,
    disable_for_unsupported_versions=True,
    silent=False
)

È possibile personalizzare la configurazione di assegnazione automatica dei tag.

Utilizzo

Per usare l'assegnazione automatica di Databricks, eseguire il training di un modello di Machine Learning in un framework supportato usando un notebook Python interattivo di Azure Databricks. Databricks Autologging registra automaticamente le informazioni sulla derivazione del modello, i parametri e le metriche in MLflow Tracking. È anche possibile personalizzare il comportamento di Databricks Autologging.

Nota

Databricks Autologging non viene applicato alle esecuzioni create usando l'API Fluent MLflow con mlflow.start_run(). In questi casi, è necessario chiamare mlflow.autolog() per salvare il contenuto registrato automaticamente nell'esecuzione di MLflow. Vedere Tenere traccia di contenuto aggiuntivo.

Personalizzare il comportamento di registrazione

Per personalizzare la registrazione, usare mlflow.autolog(). Questa funzione fornisce parametri di configurazione per abilitare la registrazione del modello (log_models), raccogliere esempi di input (log_input_examples), configurare avvisi (silent) e altro ancora.

Tenere traccia di contenuto aggiuntivo

Per tenere traccia di metriche, parametri, file e metadati aggiuntivi con MLflow eseguite da Databricks Autologging, seguire questa procedura in un notebook Python interattivo di Azure Databricks:

  1. Chiamare mlflow.autolog() con exclusive=False.
  2. Avviare un'esecuzione MLflow usando mlflow.start_run(). È possibile eseguire il wrapping di questa chiamata in with mlflow.start_run(). Quando si esegue questa operazione, l'esecuzione viene terminata automaticamente dopo il completamento.
  3. Usare i metodi MLflow Tracking, ad esempio mlflow.log_param(), per tenere traccia del contenuto di pre-training.
  4. Eseguire il training di uno o più modelli di Machine Learning in un framework supportato da Databricks Autologging.
  5. Usare i metodi MLflow Tracking, ad esempio mlflow.log_metric(), per tenere traccia del contenuto post-training.
  6. Se non è stato usato nel passaggio 2, terminare l'esecuzione di MLflow usando mlflow.end_run().If you not use with mlflow.start_run() in Step 2, end the MLflow run using mlflow.end_run().

Ad esempio:

import mlflow
mlflow.autolog(exclusive=False)

with mlflow.start_run():
  mlflow.log_param("example_param", "example_value")
  # <your model training code here>
  mlflow.log_metric("example_metric", 5)

Disabilitare l'assegnazione automatica di Databricks

Per disabilitare l'assegnazione automatica di Datibricks in un notebook Python interattivo di Azure Databricks, chiamare mlflow.autolog() con disable=True:

import mlflow
mlflow.autolog(disable=True)

Amministrazione istrator può anche disabilitare l'assegnazione automatica di Databricks per tutti i cluster in un'area di lavoro daScheda Avanzate della pagina delle impostazioni di amministrazione. Per rendere effettiva questa modifica, è necessario riavviare i cluster.

Ambienti e framework supportati

Databricks Autologging è supportato nei notebook Python interattivi ed è disponibile per i framework ml seguenti:

  • scikit-learn
  • Apache Spark MLlib
  • TensorFlow
  • Keras
  • PyTorch Lightning
  • XGBoost
  • LightGBM
  • Gluon
  • Fast.ai (versione 1.x)
  • statsmodels.

Per altre informazioni su ognuno dei framework supportati, vedere Registrazione automatica di MLflow.

Sicurezza e gestione dei dati

Tutte le informazioni di training del modello rilevate con l'assegnazione automatica di Databricks vengono archiviate in MLflow Tracking ed è protetto dalle autorizzazioni dell'esperimento MLflow. È possibile condividere, modificare o eliminare informazioni sul training del modello usando l'API MLflow Tracking o l'interfaccia utente.

Amministrazione

Amministrazione istrator può abilitare o disabilitare l'assegnazione automatica di Databricks per tutte le sessioni interattive dei notebook nell'area di lavoro nell'area di lavoroScheda Avanzate della pagina delle impostazioni di amministrazione. Le modifiche non diventano effettive fino al riavvio del cluster.

Limiti

  • Databricks Autologging non è supportato nei processi di Azure Databricks. Per usare l'assegnazione automatica di tag dai processi, è possibile chiamare in modo esplicito mlflow.autolog().
  • L'assegnazione automatica di Databricks è abilitata solo nel nodo driver del cluster Azure Databricks. Per usare l'assegnazione automatica dei tag dai nodi di lavoro, è necessario chiamare in modo esplicito mlflow.autolog() dall'interno del codice in esecuzione in ogni ruolo di lavoro.
  • L'integrazione scikit-learn di XGBoost non è supportata.

Apache Spark MLlib, Hyperopt e monitoraggio automatizzato di MLflow

Databricks Autologging non modifica il comportamento delle integrazioni di rilevamento automatizzate di MLflow esistenti per Apache Spark MLlib e Hyperopt.

Nota

In Databricks Runtime 10.1 ML disabilitando l'integrazione automatica del rilevamento MLflow per Apache Spark MLlib CrossValidator e TrainValidationSplit i modelli disabilita anche la funzionalità di assegnazione automatica di Databricks per tutti i modelli MLlib di Apache Spark.