Sdílet prostřednictvím


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

V tomto kurzu se dozvíte, jak importovat registrovaný model LightGBMClassifier, který jste vytvořili v části 3. V tomto kurzu byl použit registr modelů Microsoft Fabric MLflow k trénování modelu a poté k provádění dávkových předpovědí na testovací datové sadě 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. Další informace najdete v tématu 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

Toto je část 4 pětidílné série kurzů. K dokončení tohoto kurzu nejprve dokončete:

%pip install scikit-learn==1.6.1

Sledujte v poznámkovém bloku

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

Důležitý

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

Načtení testovacích dat

V následujícím fragmentu kódu 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

Objekt MLFlowTransformer slouží jako obálka kolem modelu MLFlow, který jste zaregistrovali v části 3. Umožňuje generovat dávkové předpovědi pro daný datový rámec. Chcete-li vytvořit instanci objektu MLFlowTransformer, musíte zadat následující parametry:

  • Sloupce testovacího datového rámce, které model potřebuje jako vstup (v tomto případě model potřebuje 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 generování předpovědí (v tomto případě lgbm_sm a verze 1)

Následující fragment kódu zpracovává tyto kroky:

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í, jak je znázorněno v následujícím fragmentu kódu:

import pandas

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

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

Následující fragment kódu používá rozhraní SPARK SQL API k vyvolání funkce 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))

PREDICT s uživatelem definovanou funkcí (UDF)

Následující fragment kódu používá K vyvolání funkce PREDICT funkci 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])))

Kód PREDICT můžete také vygenerovat ze stránky položek modelu. Další informace o funkci PREDICT najdete v tématu Bodování modelu strojového učení pomocí prostředku PREDICT .

Zápis výsledků predikce modelu do jezera

Po vygenerování dávkových předpovědí zapište výsledky předpovědi modelu zpět do lakehouse, jak je znázorněno v následujícím fragmentu 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}")

Další krok

Pokračujte k: