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 działającego na Microsoft Fabric, oraz jak wykonać wsadowe przewidywania na zestawie danych testowych załadowanym z lakehouse.
Microsoft Fabric umożliwia operacjonalizację modeli uczenia maszynowego za pomocą skalowalnej funkcji o nazwie PREDICT, która obsługuje ocenianie grupowe w dowolnym silniku obliczeniowym. Przewidywania wsadowe można wygenerować bezpośrednio z notesu usługi Microsoft Fabric lub na stronie elementu danego modelu. Dowiedz się więcej o 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 DataFrame Spark i utworzysz obiekt MLFlowTransformer w celu wygenerowania predykcji wsadowych. Następnie można wywołać funkcję PREDICT przy użyciu jednego z następujących trzech sposobów:
- Interfejs API Transformer z SynapseML
- Spark SQL API
- Funkcja zdefiniowana przez użytkownika (UDF) PySpark
Warunki wstępne
Pobierz subskrypcję usługi Microsoft Fabric . Możesz też utworzyć bezpłatne konto wersji próbnej usługi Microsoft Fabric.
Zaloguj się do usługi Microsoft Fabric.
Użyj przełącznika środowiska na dole po lewej stronie strony głównej, aby przełączyć się na Fabric.
To jest część 4 z 5 w serii poradnikó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.
Śledź w notesie.
4-predict.ipynb to notebook, który towarzyszy temu samouczkowi.
Aby otworzyć notatnik towarzyszący do tego samouczka, postępuj zgodnie z instrukcjami w Przygotuj swój system do samouczków z nauki o danych, aby zaimportować notatnik do swojego 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ć magazyn lakehouse do notesu.
Ważny
Dołącz ten sam dom na jeziorze, 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)
PRZEWIDUJ z API Transformer
Aby użyć interfejsu API transformer z usługi SynapseML, należy najpierw utworzyć obiekt MLFlowTransformer.
Utworzenie instancji obiektu MLFlowTransformer
Obiekt MLFlowTransformer jest otoką wokół modelu MLFlow, który zarejestrowałeś 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 za pomocą 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 o PREDICT.
Zapisz wyniki przewidywania modelu do Lakehouse
Po wygenerowaniu przewidywań wsadowych zapisz wyniki przewidywania modelu z powrotem do systemu 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: