Aracılığıyla paylaş


Eğitim Bölüm 4: Toplu puanlama yapma ve tahminleri lakehouse'a kaydetme

Bu öğretici, 3. bölümde oluşturduğunuz kayıtlı LightGBMClassifier modelinin nasıl içeri aktarılacağını gösterir. Bu öğreticide modeli eğitmek için Microsoft Fabric MLflow model kayıt defteri kullanılmış ve ardından bir lakehouse'dan yüklenen test veri kümesi üzerinde toplu tahminler yapılmıştır.

Microsoft Fabric, herhangi bir işlem altyapısında toplu puanlama desteği sunan PREDICT adlı ölçeklenebilir bir işlevle makine öğrenmesi modellerini kullanıma sunmanızı sağlar. Toplu tahminleri doğrudan bir Microsoft Fabric not defterinden veya belirli bir modelin öğe sayfasından oluşturabilirsiniz. Daha fazla bilgi edinmek için bkz. PREDICT.

Test veri kümesinde toplu tahminler oluşturmak için eğitilen tüm makine öğrenmesi modelleri arasında en iyi performansı gösteren eğitilmiş LightGBM modelinin 1. sürümünü kullanacaksınız. Test veri kümesini bir spark DataFrame'e yükleyip toplu tahminler oluşturmak için bir MLFlowTransformer nesnesi oluşturacaksınız. Ardından, aşağıdaki üç yoldan birini kullanarak PREDICT işlevini çağırabilirsiniz:

  • SynapseML'den Transformatör API'si
  • Spark SQL API'si
  • PySpark kullanıcı tanımlı işlevi (UDF)

Önkoşullar

  • bir Microsoft Fabric aboneliği alın. Ya da ücretsiz Microsoft Fabricdeneme sürümüne kaydolun.

  • Oturum açın Microsoft Fabric.

  • Giriş sayfanızın sol alt köşesindeki deneyim değiştiriciyi kullanarak Fabric'e geçin.

    Deneyim değiştirici menüsünde doku seçimini gösteren ekran görüntüsü.

Bu, beş bölümden oluşan bir öğretici serisinin 4. bölümüdür. Bu öğreticiyi tamamlamak için önce şunları tamamlayın:

%pip install scikit-learn==1.6.1

Not defterinde adımları takip edin

4-predict.ipynb bu öğreticiye eşlik eden not defteridir.

Önemli

Diğer bölümlerde kullandığınız aynı lakehouse'u bu seriye ekleyin.

Test verilerini yükleme

Aşağıdaki kod parçacığında, Bölüm 3'te kaydettiğiniz test verilerini yükleyin:

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

Transformer API ile PREDICT

SynapseML'den Transformer API'sini kullanmak için önce bir MLFlowTransformer nesnesi oluşturmanız gerekir.

MLFlowTransformer nesnesinin örneğini oluşturma

MLFlowTransformer nesnesi, Bölüm 3'te kaydettiğiniz MLFlow modelinin çevresinde sarmalayıcı görevi görür. Belirli bir DataFrame üzerinde toplu tahminler oluşturmanıza olanak tanır. MLFlowTransformer nesnesinin örneğini görüntülemek için aşağıdaki parametreleri sağlamanız gerekir:

  • Modelin giriş olarak ihtiyaç duyduğu test DataFrame sütunları (bu örnekte, modelin tümüne ihtiyacı vardır)
  • Yeni çıkış sütunu için bir ad (bu örnekte tahminler)
  • Tahminleri oluşturmak için doğru model adı ve model sürümü (bu örnekte lgbm_sm ve sürüm 1)

Aşağıdaki kod parçacığı şu adımları işler:

from synapse.ml.predict import MLFlowTransformer

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

MLFlowTransformer nesnesine sahip olduğunuz için, aşağıdaki kod parçacığında gösterildiği gibi toplu tahminler oluşturmak için bunu kullanabilirsiniz:

import pandas

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

Spark SQL API'siyle PREDICT

Aşağıdaki kod parçacığı, PREDICT işlevini çağırmak için Spark SQL API'sini kullanır:

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

Kullanıcı tanımlı işlev (UDF) ile PREDICT

Aşağıdaki kod parçacığı, PREDICT işlevini çağırmak için PySpark UDF kullanır:

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

Modelin öğe sayfasından PREDICT kodu da oluşturabilirsiniz. PREDICT işlevi hakkında daha fazla bilgi için bkz. PREDICT kaynağıyla makine öğrenmesi modeli puanlaması .

Model tahmini sonuçları lakehouse'a yazın

Toplu tahminler oluşturduktan sonra, aşağıdaki kod parçacığında gösterildiği gibi model tahmini sonuçlarını lakehouse'a geri yazın:

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

Sonraki adım

Devam etmeye devam et: