Sdílet prostřednictvím


Kurz 4. část: Dávkové vyhodnocování a uložení předpovědí do jezera

V tomto kurzu se naučíte importovat registrovaný model LightGBMClassifier, který byl vytrénován v části 3 pomocí registru modelů Microsoft Fabric MLflow, a provádět dávkové předpovědi testovací datové sady načtené z lakehouse.

Microsoft Fabric umožňuje zprovoznit modely strojového učení škálovatelnou funkcí s názvem PREDICT, která podporuje dávkové bodování v jakémkoli výpočetním modulu. Dávkové předpovědi můžete generovat přímo z poznámkového bloku Microsoft Fabric nebo ze stránky položek daného modelu. Přečtěte si informace o funkci PREDICT.

K vygenerování dávkových predikcí v testovací datové sadě použijete verzi 1 vytrénovaného modelu LightGBM, který ukázal nejlepší výkon mezi všemi natrénovanými modely strojového učení. Testovací datovou sadu načtete do datového rámce Sparku a vytvoříte objekt MLFlowTransformer pro generování dávkových předpovědí. Funkci PREDICT pak můžete vyvolat jedním z následujících tří způsobů:

  • Rozhraní TRANSFORMER API ze služby SynapseML
  • Spark SQL API
  • Uživatelem definovaná funkce PySpark (UDF)

Požadavky

Tato část 4 z 5 v sérii kurzů. K dokončení tohoto kurzu nejprve dokončete:

Sledování v poznámkovém bloku

4-predict.ipynb je poznámkový blok, který doprovází tento kurz.

Pokud chcete otevřít doprovodný poznámkový blok pro tento kurz, postupujte podle pokynů v části Příprava systému na kurzy datových věd a importujte poznámkový blok do pracovního prostoru.

Pokud byste raději zkopírovali a vložili kód z této stránky, můžete vytvořit nový poznámkový blok.

Než začnete spouštět kód, nezapomeňte k poznámkovému bloku připojit lakehouse.

Důležité

Připojte stejné jezero, které jste použili v ostatních částech této série.

Načtení testovacích dat

Načtěte testovací data, která jste uložili v části 3.

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

PREDICT s využitím rozhraní Transformer API

Pokud chcete použít rozhraní Transformer API ze synapseML, musíte nejprve vytvořit objekt MLFlowTransformer.

Vytvoření instance objektu MLFlowTransformer

MLFlowTransformer objekt je obálka kolem modelu MLFlow, který jste zaregistrovali v části 3. Umožňuje generovat dávkové předpovědi pro daný datový rámec. Pokud chcete vytvořit instanci objektu MLFlowTransformer, budete muset zadat následující parametry:

  • Sloupce z testovacího datového rámce, které potřebujete jako vstup do modelu (v tomto případě byste je potřebovali všechny).
  • Název nového výstupního sloupce (v tomto případě předpovědi).
  • Správný název modelu a verze modelu pro vygenerování předpovědí (v tomto případě lgbm_sm a verze 1).
from synapse.ml.predict import MLFlowTransformer

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

Teď, když máte objekt MLFlowTransformer, můžete ho použít ke generování dávkových předpovědí.

import pandas

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

PREDICT s využitím rozhraní Spark SQL API

Následující kód vyvolá funkci PREDICT pomocí rozhraní SPARK SQL API.

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 s uživatelem definovanou funkcí (UDF)

Následující kód vyvolá funkci PREDICT s funkcí 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šimněte si, že kód PREDICT můžete také vygenerovat ze stránky položek modelu. Přečtěte si informace o funkci PREDICT.

Zápis výsledků predikce modelu do jezera

Jakmile vygenerujete dávkové předpovědi, napište výsledky předpovědi modelu zpět do jezera.

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

Další krok

Pokračujte k: