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.
Ta część 4 z 5 w serii samouczków. Aby ukończyć ten samouczek, najpierw wykonaj następujące czynności:
- Część 1. Pozyskiwanie danych do usługi Microsoft Fabric Lakehouse przy użyciu platformy Apache Spark.
- Część 2. Eksplorowanie i wizualizowanie danych przy użyciu notesów usługi Microsoft Fabric, aby dowiedzieć się więcej o danych.
- Część 3. Trenowanie i rejestrowanie modeli uczenia maszynowego.
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: