Udostępnij przez


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

W tym samouczku pokazano, jak zaimportować zarejestrowany model LightGBMClassifier utworzony w części 3. W tym samouczku użyto rejestru modeli MLflow usługi Microsoft Fabric do wytrenowania modelu, a następnie wykonano przewidywania wsadowe na testowym zestawie danych załadowanym z lakehouse.

Usługa Microsoft Fabric umożliwia operacjonalizację modeli uczenia maszynowego za pomocą skalowalnej funkcji o nazwie PREDICT, która obsługuje ocenianie wsadowe w dowolnym silniku obliczeniowym. Przewidywania wsadowe można wygenerować bezpośrednio z notebooka Microsoft Fabric lub z strony elementu wybranego modelu. Aby dowiedzieć się więcej, zobacz 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 platformy Spark i utworzysz obiekt MLFlowTransformer, aby wygenerować wsadowe przewidywania. 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

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

%pip install scikit-learn==1.6.1

Śledź w notesie.

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

Ważny

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

Ładowanie danych testowych

W poniższym fragmencie kodu 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ć Transformer API z SynapseML, należy najpierw utworzyć obiekt MLFlowTransformer.

Utworzenie instancji obiektu MLFlowTransformer

Obiekt MLFlowTransformer służy jako opakowanie modelu MLFlow zarejestrowanego w części 3. Umożliwia ona generowanie przewidywań wsadowych dla danej ramki danych. Aby utworzyć instancję obiektu MLFlowTransformer, należy podać następujące parametry:

  • Kolumny testowej ramki danych, których model potrzebuje jako danych wejściowych (w tym przypadku model potrzebuje ich wszystkich)
  • 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)

Poniższy fragment kodu obsługuje następujące kroki:

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, jak pokazano w poniższym fragmencie kodu:

import pandas

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

PREDICT with the Spark SQL API

Poniższy fragment kodu używa interfejsu API SQL platformy Spark do wywoływania funkcji 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))

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

Poniższy fragment kodu używa funkcji UDF PySpark do wywoływania funkcji PREDICT:

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

Możesz również wygenerować kod PREDICT na stronie elementu modelu. Aby uzyskać więcej informacji na temat funkcji PREDICT, zobacz Machine Learning model scoring with PREDICT resource (Ocenianie modelu uczenia maszynowego przy użyciu zasobu PREDICT ).

Zapisz wyniki przewidywania modelu do Lakehouse

Po wygenerowaniu przewidywań wsadowych zapisz wyniki przewidywania modelu z powrotem do usługi Lakehouse, jak pokazano w poniższym fragmencie kodu:

# 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}")

Następny krok

Przejdź do: