Distribuire modelli per l'inferenza e la stima batch

Questo articolo descrive come distribuire modelli MLflow per l'inferenza offline (batch e streaming). Databricks consiglia di usare MLflow per distribuire modelli di Machine Learning per l'inferenza batch o di streaming. Per informazioni generali sull'uso dei modelli MLflow, vedere Registrare, caricare, registrare e distribuire modelli MLflow.

Per informazioni sul modello in tempo reale che viene usato in Azure Databricks, vedere Model serving with Azure Databricks (Gestire modelli con Azure Databricks).

Usare MLflow per l'inferenza del modello

MLflow consente di generare codice per l'inferenza batch o di streaming.

  • Nel Registro modelli MLflow è possibile generare automaticamente un notebook per l'inferenza batch o di streaming tramite tabelle Live Delta.
  • Nella pagina Esecuzione MLflow per il modello è possibile copiare il frammento di codice generato per l'inferenza in pandas o in dataframe Apache Spark.

È anche possibile personalizzare il codice generato da una delle opzioni precedenti. Per esempi, vedere i notebook seguenti:

  • L'esempio di inferenza del modello usa un modello sottoposto a training con scikit-learn e precedentemente registrato in MLflow per illustrare come caricare un modello e usarlo per eseguire stime sui dati in formati diversi. Il notebook illustra come applicare il modello come modello scikit-learn a un dataframe pandas e come applicare il modello come funzione definita dall'utente PySpark a un dataframe Spark.
  • L'esempio di Registro modelli MLflow illustra come compilare, gestire e distribuire un modello con il Registro modelli. In questa pagina è possibile cercare .predict per identificare esempi di stime offline (batch).

Creare un processo di Azure Databricks

Per eseguire stime batch o di streaming come processo, creare un notebook o un file JAR che includa il codice usato per eseguire le stime. Eseguire quindi il notebook o jar come processo di Azure Databricks. I processi possono essere eseguiti immediatamente o in base a una pianificazione.

Inferenza di streaming

Dal Registro di sistema del modello MLflow è possibile generare automaticamente un notebook che integra la funzione definita dall'utente di inferenza PySpark MLflow con le tabelle live Delta.

È anche possibile modificare il notebook di inferenza generato per usare l'API Apache Spark Structured Streaming .

Inferenza con modelli di Deep Learning

Per informazioni su ed esempi di inferenza del modello di Deep Learning in Azure Databricks, vedere gli articoli seguenti:

Inferenza con modelli MLlib e XGBoost4J

Per l'inferenza del modello scalabile con modelli MLlib e XGBoost4J, usare i metodi nativi transform per eseguire l'inferenza direttamente nei dataframe Spark. I notebook di esempio MLlib includono passaggi di inferenza.

Personalizzare e ottimizzare l'inferenza del modello

Quando si usano le API MLflow per eseguire l'inferenza nei dataframe Spark, è possibile caricare il modello come funzione definita dall'utente Spark e applicarlo su larga scala usando il calcolo distribuito.

È possibile personalizzare il modello per aggiungere pre-elaborazione o post-elaborazione e ottimizzare le prestazioni di calcolo per modelli di grandi dimensioni. Un'opzione valida per la personalizzazione dei modelli è l'API pyfunc MLflow, che consente di eseguire il wrapping di un modello con logica personalizzata.

Se è necessario eseguire altre personalizzazioni, è possibile eseguire manualmente il wrapping del modello di Machine Learning in una funzione definita dall'utente Pandas o in una funzione definita dall'utente pandas Iterator. Vedere gli esempi di Deep Learning.

Per i set di dati più piccoli, è anche possibile usare le routine di inferenza del modello nativo fornite dalla libreria.