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
Erwerben Sie ein Microsoft Fabric-Abonnement. Registrieren Sie sich alternativ für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabric an.
Wechseln Sie zur Synapse-Data Science-Benutzeroberfläche, indem Sie den Umschalter für die Benutzeroberfläche auf der linken Seite Ihrer Homepage verwenden.
Dies ist Teil 4 von 5 in der Reihe von Tutorials. Um dieses Tutorial abzuschließen, führen Sie zunächst Folgendes aus:
- Teil 1: Aufnehmen von Daten in ein Microsoft Fabric Lakehouse mit Apache Spark.
- Teil 2: Erkunden und Visualisieren von Daten mithilfe von Microsoft Fabric-Notebooks, um mehr über die Daten zu erfahren.
- Teil 3: Trainieren und Registrieren von Machine Learning Modellen.
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: