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
Získejte předplatné Microsoft Fabric. Nebo si zaregistrujte bezplatnou zkušební verzi Microsoft Fabricu.
Přihlaste se k Microsoft Fabric.
Pomocí přepínače prostředí na levé straně domovské stránky přepněte na prostředí Synapse Datová Věda.
Tato část 4 z 5 v sérii kurzů. K dokončení tohoto kurzu nejprve dokončete:
- Část 1: Ingestování dat do Microsoft Fabric Lakehouse pomocí Apache Sparku
- Část 2: Prozkoumání a vizualizace dat pomocí poznámkových bloků Microsoft Fabric, kde najdete další informace o těchto datech .
- Část 3: Trénování a registrace modelů strojového učení
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: