Bagikan melalui


Tutorial Bagian 4: Melakukan pemeringkatan batch dan menyimpan prediksi ke lakehouse.

Tutorial ini menunjukkan cara mengimpor model LightGBMClassifier terdaftar yang Anda buat di bagian 3. Tutorial tersebut menggunakan registri model Microsoft Fabric MLflow untuk melatih model, lalu melakukan prediksi batch pada himpunan data pengujian yang dimuat dari lakehouse.

Microsoft Fabric memungkinkan Anda mengoprasikan model pembelajaran mesin dengan fungsi yang dapat diskalakan yang disebut PREDICT, yang mendukung penilaian batch di mesin komputasi apa pun. Anda dapat membuat prediksi batch langsung dari buku catatan Microsoft Fabric atau dari halaman item model tertentu. Untuk mempelajari selengkapnya, lihat PREDICT.

Untuk menghasilkan prediksi batch pada himpunan data pengujian, Anda akan menggunakan versi 1 dari model LightGBM terlatih yang menunjukkan performa terbaik di antara semua model pembelajaran mesin terlatih. Anda akan memuat himpunan data pengujian ke dalam Spark DataFrame dan membuat objek MLFlowTransformer untuk menghasilkan prediksi batch. Anda kemudian dapat memanggil fungsi PREDICT menggunakan salah satu dari tiga cara berikut:

  • TRANSFORMER API dari SynapseML
  • Spark SQL API
  • Fungsi yang ditentukan pengguna PySpark (UDF)

Prasyarat

  • Dapatkan langganan Microsoft Fabric . Atau, daftar untuk uji coba Microsoft Fabric gratis.

  • Masuk ke Microsoft Fabric.

  • Beralih ke Fabric dengan menggunakan pengalih pengalaman di sisi kiri bawah halaman beranda Anda.

    Cuplikan layar yang memperlihatkan pemilihan Fabric pada menu pengalih pengalaman.

Ini adalah bagian 4 dari seri tutorial lima bagian. Untuk menyelesaikan tutorial ini, selesaikan terlebih dahulu:

%pip install scikit-learn==1.6.1

Ikuti di buku catatan Anda

4-predict.ipynb adalah notebook yang menyertai tutorial ini.

Penting

Lampirkan lakehouse yang sama dengan yang Anda gunakan di bagian lain dari seri ini.

Memuat data uji

Dalam cuplikan kode berikut, muat data pengujian yang Anda simpan di Bagian 3:

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

Prediksi dengan Transformer API

Untuk menggunakan Transformer API dari SynapseML, Anda harus terlebih dahulu membuat objek MLFlowTransformer.

Menginstansiasi objek MLFlowTransformer

Objek MLFlowTransformer berfungsi sebagai pembungkus di sekitar model MLFlow yang Anda daftarkan di Bagian 3. Ini memungkinkan Anda untuk menghasilkan prediksi batch pada DataFrame tertentu. Untuk membuat instans objek MLFlowTransformer, Anda harus memberikan parameter berikut:

  • Kolom DataFrame pengujian yang dibutuhkan model sebagai input (dalam hal ini, model membutuhkan semuanya)
  • Nama untuk kolom output baru (dalam hal ini, prediksi)
  • Nama model dan versi model yang benar untuk menghasilkan prediksi (dalam hal ini, lgbm_sm dan versi 1)

Cuplikan kode berikut menangani langkah-langkah berikut:

from synapse.ml.predict import MLFlowTransformer

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

Sekarang setelah Anda memiliki objek MLFlowTransformer, Anda dapat menggunakannya untuk menghasilkan prediksi batch, seperti yang ditunjukkan dalam cuplikan kode berikut:

import pandas

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

PREDICT dengan Spark SQL API

Cuplikan kode berikut menggunakan Spark SQL API untuk memanggil fungsi 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))

PREDICT dengan fungsi yang ditentukan pengguna (UDF)

Cuplikan kode berikut menggunakan UDF PySpark untuk memanggil fungsi 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])))

Anda juga dapat membuat kode PREDICT dari halaman item model. Untuk informasi selengkapnya tentang fungsi PREDICT, lihat Penilaian model pembelajaran mesin dengan sumber daya PREDICT.

Menulis hasil prediksi model ke lakehouse

Setelah Anda membuat prediksi batch, tulis hasil prediksi model kembali ke lakehouse seperti yang ditunjukkan dalam cuplikan kode berikut:

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

Langkah berikutnya

Lanjutkan ke: