Tutorial Teil 4: Durchführen einer Batchbewertung und Speichern von Vorhersagen in einem Lakehouse

In diesem Tutorial erfahren Sie, wie Sie das registrierte LightGBMClassifier-Modell, das in Teil 3 trainiert wurde, mit der Microsoft Fabric MLflow-Modellregistrierung importieren und Batchvorhersagen für ein aus einem Lakehouse geladenes Testdataset ausführen.

Microsoft Fabric ermöglicht Ihnen die Operationalisierung von Machine Learning-Modellen mit einer skalierbaren Funktion namens PREDICT, die die Batchbewertung in jeder Compute-Engine unterstützt. Sie können Batchvorhersagen direkt über ein Microsoft Fabric-Notebook oder die Elementseite eines bestimmten Modells generieren. Erfahren Sie mehr über PREDICT.

Um Batchvorhersagen für das Test-Dataset zu generieren, verwenden Sie Version 1 des trainierten LightGBM-Modells, das die beste Leistung unter allen trainierten Machine Learning-Modellen demonstriert hat. Sie laden das Test-Dataset in einen Spark-DataFrame und erstellen ein MLFlowTransformer-Objekt, um Batchvorhersagen zu generieren. Anschließend können Sie die PREDICT-Funktion auf eine der folgenden drei Arten aufrufen:

  • Transformator-API von SynapseML
  • Spark SQL-API
  • Benutzerdefinierte PySpark-Funktion (User-Defined Function, UDF)

Voraussetzungen

Dies ist Teil 4 von 5 in der Reihe von Tutorials. Um dieses Tutorial abzuschließen, führen Sie zunächst Folgendes aus:

Notebook für das Tutorial

4-predict.ipynb ist das Notebook, das dieses Tutorial begleitet.

Um das zugehörige Notebook für dieses Tutorial zu öffnen, befolgen Sie die Anweisungen unter Vorbereiten Ihres Systems für Data-Science-Tutorials zum Importieren des Notebooks in Ihren Arbeitsbereich.

Wenn Sie den Code lieber von dieser Seite kopieren und einfügen möchten, können Sie auch ein neues Notebook erstellen.

Fügen Sie unbedingt ein Lakehouse an das Notebook an, bevor Sie mit der Ausführung von Code beginnen.

Wichtig

Fügen Sie dasselbe Lakehouse an, das Sie in den anderen Teilen dieser Serie verwendet haben.

Laden der Testdaten

Laden Sie die Testdaten, die Sie in Teil 3 gespeichert haben.

df_test = spark.read.format("delta").load("Tables/df_test")
display(df_test)

PREDICT mit der Transformer-API

Um die Transformer-API von SynapseML zu verwenden, müssen Sie zuerst ein MLFlowTransformer-Objekt erstellen.

Instanziieren des MLFlowTransformer-Objekts

Das MLFlowTransformer-Objekt ist ein Wrapper um das MLFlow-Modell, das Sie in Teil 3 registriert haben. Es ermöglicht Ihnen, Batchvorhersagen für einen bestimmten DataFrame zu generieren. Um das MLFlowTransformer-Objekt zu instanziieren, müssen Sie die folgenden Parameter angeben:

  • Die Spalten aus dem Test-DataFrame, die Sie als Eingabe für das Modell benötigen (in diesem Fall benötigen Sie alle).
  • Einen Namen für die neue Ausgabespalte (in diesem Fall „Vorhersagen“).
  • Den richtigen Modellnamen und die Modellversion, um die Vorhersagen zu generieren (in diesem Fall lgbm_sm und Version 1).
from synapse.ml.predict import MLFlowTransformer

model = MLFlowTransformer(
    inputCols=list(df_test.columns),
    outputCol='predictions',
    modelName='lgbm_sm',
    modelVersion=1
)

Nachdem Sie nun über das MLFlowTransformer-Objekt verfügen, können Sie es verwenden, um Batchvorhersagen zu generieren.

import pandas

predictions = model.transform(df_test)
display(predictions)

PREDICT mit der Spark-SQL-API

Der folgende Code ruft die PREDICT-Funktion mit der Spark-SQL-API auf.

from pyspark.ml.feature import SQLTransformer 

# Substitute "model_name", "model_version", and "features" below with values for your own model name, model version, and feature columns
model_name = 'lgbm_sm'
model_version = 1
features = df_test.columns

sqlt = SQLTransformer().setStatement( 
    f"SELECT PREDICT('{model_name}/{model_version}', {','.join(features)}) as predictions FROM __THIS__")

# Substitute "X_test" below with your own test dataset
display(sqlt.transform(df_test))

PREDICT mit einer benutzerdefinierten Funktion (UDF)

Der folgende Code ruft die PREDICT-Funktion mit einer benutzerdefinierten PySpark-Funktion auf.

from pyspark.sql.functions import col, pandas_udf, udf, lit

# Substitute "model" and "features" below with values for your own model name and feature columns
my_udf = model.to_udf()
features = df_test.columns

display(df_test.withColumn("predictions", my_udf(*[col(f) for f in features])))

Beachten Sie, dass Sie auch PREDICT-Code über die Elementseite eines Modells generieren können. Erfahren Sie mehr über PREDICT.

Schreiben von Modellvorhersageergebnissen in das Lakehouse

Nachdem Sie Batchvorhersagen generiert haben, schreiben Sie die Modellvorhersageergebnisse zurück in das Lakehouse.

# Save predictions to lakehouse to be used for generating a Power BI report
table_name = "customer_churn_test_predictions"
predictions.write.format('delta').mode("overwrite").save(f"Tables/{table_name}")
print(f"Spark DataFrame saved to delta table: {table_name}")

Nächster Schritt

Fahren Sie fort mit: