Udostępnij za pośrednictwem


Samouczek, część 4. Wykonywanie oceniania wsadowego i zapisywanie przewidywań w lakehouse

W tym samouczku dowiesz się, jak zaimportować zarejestrowany model LightGBMClassifier, który został wytrenowany w części 3 przy użyciu rejestru modeli MLflow usługi Microsoft Fabric, i wykonać przewidywania wsadowe na zestawie danych testowych załadowanych z magazynu lakehouse.

Usługa Microsoft Fabric umożliwia operacjonalizacja modeli uczenia maszynowego za pomocą skalowalnej funkcji o nazwie PREDICT, która obsługuje ocenianie wsadowe w dowolnym aucie obliczeniowym. Przewidywania wsadowe można wygenerować bezpośrednio z notesu usługi Microsoft Fabric lub na stronie elementu danego modelu. Dowiedz się więcej na temat funkcji PREDICT.

Aby wygenerować przewidywania wsadowe w zestawie danych testowych, użyjesz wersji 1 wytrenowanego modelu LightGBM, który wykazał najlepszą wydajność wśród wszystkich wytrenowanych modeli uczenia maszynowego. Załadujesz testowy zestaw danych do ramki danych platformy Spark i utworzysz obiekt MLFlowTransformer w celu wygenerowania przewidywań wsadowych. Następnie można wywołać funkcję PREDICT przy użyciu jednego z następujących trzech sposobów:

  • Interfejs API przekształcania z usługi SynapseML
  • Spark SQL API
  • Funkcja zdefiniowana przez użytkownika (UDF) PySpark

Wymagania wstępne

  • Uzyskaj subskrypcję usługi Microsoft Fabric. Możesz też utworzyć konto bezpłatnej wersji próbnej usługi Microsoft Fabric.

  • Zaloguj się do usługi Microsoft Fabric.

  • Użyj przełącznika środowiska po lewej stronie głównej, aby przełączyć się na środowisko usługi Synapse Nauka o danych.

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

Ta część 4 z 5 w serii samouczków. Aby ukończyć ten samouczek, najpierw wykonaj następujące czynności:

Postępuj zgodnie z instrukcjami w notesie

4-predict.ipynb to notes, który towarzyszy temu samouczkowi.

Aby otworzyć towarzyszący notes na potrzeby tego samouczka, postępuj zgodnie z instrukcjami w temacie Przygotowywanie systemu do celów nauki o danych, aby zaimportować notes do obszaru roboczego.

Jeśli wolisz skopiować i wkleić kod z tej strony, możesz utworzyć nowy notes.

Przed rozpoczęciem uruchamiania kodu pamiętaj, aby dołączyć usługę Lakehouse do notesu .

Ważne

Dołącz ten sam jezioro, którego użyto w innych częściach tej serii.

Ładowanie danych testowych

Załaduj dane testowe zapisane w części 3.

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

PREDICT with the Transformer API

Aby użyć interfejsu API transformer z usługi SynapseML, należy najpierw utworzyć obiekt MLFlowTransformer.

Tworzenie wystąpienia obiektu MLFlowTransformer

Obiekt MLFlowTransformer jest otoką modelu MLFlow zarejestrowaną w części 3. Umożliwia ona generowanie przewidywań wsadowych dla danej ramki danych. Aby utworzyć wystąpienie obiektu MLFlowTransformer, należy podać następujące parametry:

  • Kolumny z testowej ramki danych potrzebne jako dane wejściowe do modelu (w tym przypadku będą potrzebne wszystkie).
  • Nazwa nowej kolumny danych wyjściowych (w tym przypadku przewidywania).
  • Poprawna nazwa modelu i wersja modelu do wygenerowania przewidywań (w tym przypadku lgbm_sm i wersja 1).
from synapse.ml.predict import MLFlowTransformer

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

Teraz, gdy masz obiekt MLFlowTransformer, możesz go użyć do generowania przewidywań wsadowych.

import pandas

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

PREDICT with the Spark SQL API

Poniższy kod wywołuje funkcję PREDICT za pomocą interfejsu API Spark SQL.

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

FUNKCJA PREDICT z funkcją zdefiniowaną przez użytkownika (UDF)

Poniższy kod wywołuje funkcję PREDICT z funkcją UDF PySpark.

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

Pamiętaj, że możesz również wygenerować kod PREDICT na stronie elementu modelu. Dowiedz się więcej na temat funkcji PREDICT.

Pisanie wyników przewidywania modelu w lakehouse

Po wygenerowaniu przewidywań wsadowych zapisz wyniki przewidywania modelu z powrotem do usługi 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}")

Następny krok

Przejdź do: