Kurz Časť 4: Vykonávanie dávkového bodovania a uloženie predpovedí do jazera

Tento tutoriál ukazuje, ako importovať registrovaný model LightGBMClassifier, ktorý ste vytvorili v časti 3. Tento tutoriál použil Microsoft Fabric MLflow modelový register na trénovanie modelu a následné dávkové predikcie na testovacej datasete načítanej z jazerného domu.

Microsoft Fabric umožňuje operácionalizovať modely strojového učenia pomocou škálovateľnej funkcie nazvanej PREDICT, ktorá podporuje dávkové skórovanie v akomkoľvek výpočtovom engine. Môžete generovať dávkové predikcie priamo z Microsoft Fabric notebooku alebo z položky daného modelu. Pre viac informácií si pozrite PREDICT.

Na generovanie dávkových predikcií na testovacom datasete použijete verziu 1 trénovaného modelu LightGBM, ktorá preukázala najlepší výkon spomedzi všetkých trénovaných modelov strojového učenia. Testovací dataset načítate do spark DataFrame a vytvoríte objekt MLFlowTransformer na generovanie dávkových predikcií. Funkciu PREDICT potom môžete vyvolať jedným z troch nasledujúcich spôsobov:

  • Transformer API zo synapseML
  • Spark SQL API
  • Funkcia definovaná používateľom v PySparku (UDF)

Predpoklady

  • Získajte predplatné služby Microsoft Fabric . Alebo si zaregistrujte bezplatnú skúšobnú služby Microsoft Fabric.

  • Prihláste sa do služby Microsoft Fabric.

  • Prepnite na Fabric pomocou prepínača skúseností v ľavom dolnom rohu domovskej stránky.

    Screenshot, ktorý ukazuje výber Fabric v menu prepínača zážitkov.

Toto je štvrtá časť päťdielnej série tutoriálov. Ak chcete dokončiť tento kurz, najskôr dokončite tieto kroky:

%pip install scikit-learn==1.6.1

Sledovanie v notebooku

4-predict.ipynb je notebook, ktorý sprevádza tento kurz.

Dôležitý

Pripojte rovnaký lakehouse ste použili v iných častiach tejto série.

Načítanie testovacích údajov

V nasledujúcom úryvku kódu načítajte testovacie dáta, ktoré ste si uložili v časti 3:

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

Funkcia PREDICT pomocou rozhrania API pre transformátor

Na použitie Transformer API zo SynapseML musíte najprv vytvoriť objekt MLFlowTransformer.

Inštancia objektu MLFlowTransformer

Objekt MLFlowTransformer slúži ako obal okolo modelu MLFlow, ktorý ste zaregistrovali v časti 3. Umožňuje generovať dávkové predpovede v danom údajovom prvku. Na inštanciu objektu MLFlowTransformer musíte poskytnúť nasledujúce parametre:

  • Testovacie stĺpce DataFrame, ktoré model potrebuje ako vstup (v tomto prípade model potrebuje všetky)
  • Názov pre nový výstupný stĺpec (v tomto prípade predikcie)
  • Správny názov modelu a verzia modelu na generovanie predpovedí (v tomto prípade lgbm_sm a verzia 1)

Nasledujúci úryvok kódu rieši tieto kroky:

from synapse.ml.predict import MLFlowTransformer

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

Teraz, keď máte objekt MLFlowTransformer, môžete ho použiť na generovanie dávkových predikcií, ako je znázornené v nasledujúcom úryvku kódu:

import pandas

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

FUNKCIA PREDICT s rozhraním API služby Spark SQL

Nasledujúci úryvok kódu využíva Spark SQL API na vyvolanie funkcie PREDICT:

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

FUNKCIA PREDICT s funkciou definovanou používateľom (UDF)

Nasledujúci úryvok kódu používa PySpark UDF na vyvolanie funkcie PREDICT:

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

Môžeš tiež generovať PREDICT kód z položky v modeli. Viac informácií o funkcii PREDICT nájdete v článku Machine learning model scoring with PREDICT resource.

Písanie výsledkov predpovede modelu do jazera

Po vygenerovaní dávkových predpovedí zapíšte výsledky modelových predpovedí späť do jazerného domu, ako je znázornené v nasledujúcom úryvku kódu:

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

Ďalší krok

Prejdite na: