Opplæring del 4: Utføre batch scoring og lagre spådommer til et lakehouse

I denne opplæringen lærer du å importere den registrerte LightGBMClassifier-modellen som ble opplært i del 3 ved hjelp av Microsoft Fabric MLflow-modellregisteret, og utføre satsvise prognoser på et testdatasett lastet inn fra et lakehouse.

Med Microsoft Fabric kan du operasjonalisere maskinlæringsmodeller med en skalerbar funksjon kalt PREDICT, som støtter satsvis poengsum i alle databehandlingsmotorer. Du kan generere satsvise prognoser direkte fra en Microsoft Fabric-notatblokk eller fra en gitt modells elementside. Finn ut mer om PREDICT.

Hvis du vil generere satsvise prognoser på testdatasettet, bruker du versjon 1 av den opplærte LightGBM-modellen som viste best ytelse blant alle opplærte maskinlæringsmodeller. Du laster inn testdatasettet i en spark DataFrame og oppretter et MLFlowTransformer-objekt for å generere satsvise prognoser. Deretter kan du aktivere PREDICT-funksjonen ved hjelp av én av følgende tre måter:

  • Transformer API fra SynapseML
  • Spark SQL API
  • Brukerdefinert PySpark-funksjon (UDF)

Forutsetning

  • Få et Microsoft Fabric-abonnement. Eller registrer deg for en gratis prøveversjon av Microsoft Fabric.

  • Logg på Microsoft Fabric.

  • Bruk opplevelsesbryteren til venstre på hjemmesiden for å bytte til Synapse Data Science-opplevelsen.

    Screenshot of the experience switcher menu, showing where to select Data Science.

Denne delen 4 av 5 i opplæringsserien. Hvis du vil fullføre denne opplæringen, må du først fullføre:

Følg med i notatblokken

4-predict.ipynb er notatblokken som følger med denne opplæringen.

Hvis du vil åpne den medfølgende notatblokken for denne opplæringen, følger du instruksjonene i Klargjør systemet for opplæring for datavitenskap, for å importere notatblokken til arbeidsområdet.

Hvis du heller vil kopiere og lime inn koden fra denne siden, kan du opprette en ny notatblokk.

Pass på at du fester et lakehouse til notatblokken før du begynner å kjøre kode.

Viktig

Fest det samme lakehouse du brukte i de andre delene av denne serien.

Laste inn testdataene

Last inn testdataene du lagret i del 3.

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

FORUTSI med Transformer-API-en

Hvis du vil bruke Transformer-API-en fra SynapseML, må du først opprette et MLFlowTransformer-objekt.

Instantiate MLFlowTransformer-objekt

MLFlowTransformer-objektet er en wrapper rundt MLFlow-modellen som du registrerte i del 3. Den lar deg generere satsvise prognoser på en gitt DataFrame. Hvis du vil starte MLFlowTransformer-objektet, må du angi følgende parametere:

  • Kolonnene fra testdatarammen du trenger som inndata til modellen (i dette tilfellet trenger du alle).
  • Et navn på den nye utdatakolonnen (i dette tilfellet prognoser).
  • Riktig modellnavn og modellversjon for å generere prognoser (i dette tilfellet og lgbm_sm versjon 1).
from synapse.ml.predict import MLFlowTransformer

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

Nå som du har MLFlowTransformer-objektet, kan du bruke det til å generere satsvise prognoser.

import pandas

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

FORUTSI med Spark SQL-API-en

Følgende kode aktiverer PREDICT-funksjonen med Spark SQL-API-en.

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

FORUTSI med en brukerdefinert funksjon (UDF)

Følgende kode aktiverer PREDICT-funksjonen med en PySpark UDF.

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

Vær oppmerksom på at du også kan generere PREDICT-kode fra en modells elementside. Finn ut mer om PREDICT.

Skrive prognoseresultater for modell til lakehouse

Når du har generert satsvise prognoser, skriver du resultatet av modellprognosen tilbake til 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}")

Neste trinn

Fortsett til: