Delen via


Zelfstudie deel 4: batchgewijs scoren en voorspellingen opslaan in een lakehouse

In deze zelfstudie ziet u hoe u het geregistreerde LightGBMClassifier-model importeert dat u in deel 3 hebt gemaakt. In deze zelfstudie is het Microsoft Fabric MLflow-modelregister gebruikt om het model te trainen en vervolgens batchvoorspellingen uit te voeren op een testgegevensset die vanuit een lakehouse is geladen.

Met Microsoft Fabric kunt u machine learning-modellen operationeel maken met de schaalbare PREDICT-functie . Deze functie ondersteunt batchgewijs scoren in elke rekenengine. U kunt batchvoorspellingen rechtstreeks genereren vanuit een Microsoft Fabric-notebook of op de itempagina van een bepaald model. Ga naar deze resource voor meer informatie over de functie PREDICT.

Als u batchvoorspellingen voor de testgegevensset wilt genereren, gebruikt u versie 1 van het getrainde LightGBM-model. Die versie toont de beste prestaties van alle getrainde machine learning-modellen. U laadt de testgegevensset in een Spark DataFrame en maakt een MLFlowTransformer-object om batchvoorspellingen te genereren. Vervolgens kunt u de functie PREDICT aanroepen met behulp van een van deze technieken:

  • Transformer-API van SynapseML
  • Spark SQL-API
  • Door de gebruiker gedefinieerde PySpark-functie (UDF)

Voorwaarden

Dit is deel 4 van een vijfdelige reeks zelfstudies. Als u deze zelfstudie wilt voltooien, moet u eerst het volgende voltooien:

Volg mee in het notitieblok

4-predict.ipynb is het notebook dat bij deze tutorial hoort.

Belangrijk

Bevestig hetzelfde lakehouse dat u in de andere delen van deze serie gebruikt hebt.

De testgegevens laden

Laad in het volgende codefragment de testgegevens die u in deel 3 hebt opgeslagen:

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

VOORSPELLEN met de Transformer-API

Als u de Transformer-API van SynapseML wilt gebruiken, moet u eerst een MLFlowTransformer-object maken.

MlFlowTransformer-object instantiƫren

Het MLFlowTransformer-object fungeert als een wrapper rond het MLFlow-model dat u in deel 3 hebt geregistreerd. Hiermee kunt u batchvoorspellingen genereren voor een bepaald DataFrame. Als u het MLFlowTransformer-object wilt instantiƫren, moet u de volgende parameters opgeven:

  • De dataframe-testkolommen die het model nodig heeft als invoer (in dit geval heeft het model ze allemaal nodig)
  • Een naam voor de nieuwe uitvoerkolom (in dit geval voorspellingen)
  • De juiste modelnaam en modelversie om de voorspellingen te genereren (in dit geval lgbm_sm en versie 1)

Het volgende codefragment verwerkt deze stappen:

from synapse.ml.predict import MLFlowTransformer

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

Nu u het MLFlowTransformer-object hebt, kunt u dit gebruiken om batchvoorspellingen te genereren, zoals wordt weergegeven in het volgende codefragment:

import pandas

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

VOORSPELLEN met de Spark SQL-API

In het volgende codefragment wordt de Spark SQL-API gebruikt om de functie PREDICT aan te roepen:

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))

VOORSPELLEN met een door de gebruiker gedefinieerde functie (UDF)

In het volgende codefragment wordt een PySpark UDF gebruikt om de functie PREDICT aan te roepen:

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])))

U kunt ook PREDICT-code genereren op de itempagina van een model. Ga naar deze resource voor meer informatie over de functie PREDICT.

Modelvoorspellingsresultaten schrijven naar lakehouse

Nadat u batchvoorspellingen hebt gegenereerd, schrijft u de resultaten van de modelvoorspelling terug naar het lakehouse, zoals wordt weergegeven in het volgende codefragment:

# 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}")

Volgende stap

Ga door naar: