Tutorial Teil 4: Durchführen des Batch-Scorings 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 MLflow-Modellregistrierung von Microsoft Fabric importieren und Batchvorhersagen für ein aus einem Lakehouse geladenes Testdataset ausführen.
Mit Microsoft Fabric können Sie Machine Learning-Modelle mithilfe einer skalierbaren Funktion namens "PREDICT" operationalisieren, die die Batch-Verarbeitung in jeder Recheneinheit unterstützt. Sie können Batchvorhersagen direkt aus einem Microsoft Fabric-Notizbuch oder von der 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 veranschaulicht hat. Sie laden das Testdatenset in ein Spark DataFrame und erstellen ein MLFlowTransformer-Objekt, um Batchvorhersagen zu generieren. Anschließend können Sie die VORHERSAGE-Funktion auf eine der folgenden drei Arten aufrufen:
- Transformator-API von SynapseML
- Spark SQL-API
- Benutzerdefinierte PySpark-Funktion (UDF)
Voraussetzungen
Erhalten Sie ein Microsoft Fabric-Abonnement. Oder registrieren Sie sich für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabrican.
Verwenden Sie den Erfahrungsschalter auf der unteren linken Seite Ihrer Startseite, um zu Fabric zu wechseln.
Dies ist Teil 4 von 5 in der Tutorialreihe. Um dieses Lernprogramm abzuschließen, müssen Sie zuerst Folgendes erledigen:
- Teil 1: Einspeisen von Daten in ein Microsoft Fabric Lakehouse mit Apache Spark.
- Teil 2: Erkunden und Visualisieren von Daten mithilfe von Microsoft Fabric-Notizbüchern, 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 Notizbuch, das dieses Lernprogramm begleitet.
Zum Öffnen des zugehörigen Notizbuchs für dieses Lernprogramm folgen Sie den Anweisungen in Vorbereiten Ihres Systems für Data Science-Lernprogramme, um das Notizbuch in Ihren Arbeitsbereich zu importieren.
Wenn Sie den Code lieber von dieser Seite kopieren und einfügen möchten, können Sie ein neues Notizbucherstellen.
Fügen Sie unbedingt ein Lakehouse an das Notebook an, bevor Sie mit der Ausführung von Code beginnen.
Wichtig
Fügen Sie dasselbe Seehaus 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)
VORHERSAGEN mit der Transformator-API
Um die Transformator-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).
- Ein Name für die neue Ausgabespalte (in diesem Fall Vorhersagen).
- Der richtige Modellname und die Modellversion zum Generieren der Vorhersagen (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)
VORHERSAGEN mit der Spark SQL-API
Der folgende Code ruft die VORHERSAGE-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 einem PySpark UDF 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 VORHERSAGE-Code auf der 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 Seehaus.
# 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
Weiter zu: