Bagikan melalui


Penilaian model pembelajaran mesin dengan PREDICT di Microsoft Fabric

Microsoft Fabric memungkinkan pengguna untuk mengoprasikan model pembelajaran mesin dengan fungsi PREDICT yang dapat diskalakan. Fungsi ini mendukung penilaian batch di mesin komputasi apa pun. Pengguna dapat menghasilkan prediksi batch langsung dari notebook Microsoft Fabric atau dari halaman item model ML tertentu.

Dalam artikel ini, Anda mempelajari cara menerapkan PREDICT dengan menulis kode sendiri atau melalui penggunaan pengalaman UI terpandu yang menangani penilaian batch untuk Anda.

Prasyarat

Batasan

  • Fungsi PREDICT saat ini didukung untuk serangkaian ragam model ML terbatas ini:
    • CatBoost
    • Keras
    • LightGBM
    • ONNX
    • Prophet
    • PyTorch
    • Sklearn
    • Spark
    • Statsmodel
    • TensorFlow
    • XGBoost
  • PREDICT mengharuskan Anda menyimpan model ML dalam format MLflow, dengan tanda tangan yang diisi
  • PREDICT tidak mendukung model ML dengan input atau output multi-tensor

Memanggil PREDICT dari buku catatan

PREDICT mendukung model paket MLflow di registri Microsoft Fabric. Jika model ML yang sudah terlatih dan terdaftar ada di ruang kerja Anda, Anda dapat melompat ke langkah 2. Jika tidak, langkah 1 menyediakan kode sampel untuk memandu Anda melalui pelatihan model regresi logistik sampel. Anda dapat menggunakan model ini untuk menghasilkan prediksi batch di akhir prosedur.

  1. Latih model ML dan daftarkan dengan MLflow. Sampel kode berikutnya menggunakan API MLflow untuk membuat eksperimen pembelajaran mesin, lalu memulai eksekusi MLflow untuk model regresi logistik scikit-learn. Versi model kemudian disimpan dan didaftarkan di registri Microsoft Fabric. Kunjungi cara melatih model ML dengan sumber daya scikit-learn untuk informasi selengkapnya tentang model pelatihan dan melacak eksperimen Anda sendiri.

    import mlflow
    import numpy as np 
    from sklearn.linear_model import LogisticRegression 
    from sklearn.datasets import load_diabetes
    from mlflow.models.signature import infer_signature 
    
    mlflow.set_experiment("diabetes-demo")
    with mlflow.start_run() as run:
        lr = LogisticRegression()
        data = load_diabetes(as_frame=True)
        lr.fit(data.data, data.target) 
        signature = infer_signature(data.data, data.target) 
    
        mlflow.sklearn.log_model(
            lr,
            "diabetes-model",
            signature=signature,
            registered_model_name="diabetes-model"
        ) 
    
  2. Muat dalam data pengujian sebagai Spark DataFrame. Untuk menghasilkan prediksi batch dengan model ML yang dilatih pada langkah sebelumnya, Anda memerlukan data pengujian dalam bentuk Spark DataFrame. Dalam kode berikut, ganti test nilai variabel dengan data Anda sendiri.

    # You can substitute "test" below with your own data
    test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
    
  3. Buat MLFlowTransformer objek untuk memuat model ML untuk inferensi. Untuk membuat MLFlowTransformer objek untuk menghasilkan prediksi batch, Anda harus melakukan tindakan ini:

    • tentukan test kolom DataFrame yang Anda butuhkan sebagai input model (dalam hal ini, semuanya)
    • pilih nama untuk kolom output baru (dalam hal ini, predictions)
    • berikan nama model dan versi model yang benar untuk pembuatan prediksi tersebut.

    Jika Anda menggunakan model ML Anda sendiri, ganti nilai untuk kolom input, nama kolom output, nama model, dan versi model.

    from synapse.ml.predict import MLFlowTransformer
    
    # You can substitute values below for your own input columns,
    # output column name, model name, and model version
    model = MLFlowTransformer(
        inputCols=test.columns,
        outputCol='predictions',
        modelName='diabetes-model',
        modelVersion=1
    )
    
  4. Hasilkan prediksi menggunakan fungsi PREDICT. Untuk memanggil fungsi PREDICT, gunakan TRANSFORMER API, Spark SQL API, atau fungsi yang ditentukan pengguna (UDF) PySpark. Bagian berikut menunjukkan cara menghasilkan prediksi batch dengan data pengujian dan model ML yang ditentukan dalam langkah-langkah sebelumnya, menggunakan metode yang berbeda untuk memanggil fungsi PREDICT.

PREDICT dengan TRANSFORMER API

Kode ini memanggil fungsi PREDICT dengan Transformer API. Jika Anda menggunakan model ML Anda sendiri, ganti nilai untuk model dan data pengujian.

# You can substitute "model" and "test" below with values  
# for your own model and test data 
model.transform(test).show()

PREDICT dengan Spark SQL API

Kode ini memanggil fungsi PREDICT dengan Spark SQL API. Jika Anda menggunakan model ML Anda sendiri, ganti nilai untuk model_name, , model_versiondan features dengan nama model, versi model, dan kolom fitur Anda.

Catatan

Penggunaan Spark SQL API untuk pembuatan prediksi masih memerlukan pembuatan objek (seperti yang MLFlowTransformer ditunjukkan pada langkah 3).

from pyspark.ml.feature import SQLTransformer 

# You can substitute "model_name," "model_version," and "features" 
# with values for your own model name, model version, and feature columns
model_name = 'diabetes-model'
model_version = 1
features = test.columns

sqlt = SQLTransformer().setStatement( 
    f"SELECT PREDICT('{model_name}/{model_version}', {','.join(features)}) as predictions FROM __THIS__")

# You can substitute "test" below with your own test data
sqlt.transform(test).show()

PREDICT dengan fungsi yang ditentukan pengguna

Kode ini memanggil fungsi PREDICT dengan UDF PySpark. Jika Anda menggunakan model ML Anda sendiri, ganti nilai untuk model dan fitur.

from pyspark.sql.functions import col, pandas_udf, udf, lit

# You can substitute "model" and "features" below with your own values
my_udf = model.to_udf()
features = test.columns

test.withColumn("PREDICT", my_udf(*[col(f) for f in features])).show()

Membuat kode PREDICT dari halaman item model ML

Dari halaman item model ML apa pun, Anda dapat memilih salah satu opsi ini untuk memulai pembuatan prediksi batch untuk versi model tertentu, dengan fungsi PREDICT:

  • Menyalin templat kode ke dalam buku catatan, dan mengkustomisasi parameter sendiri
  • Menggunakan pengalaman UI terpandu untuk menghasilkan kode PREDICT

Menggunakan pengalaman UI terpandu

Pengalaman antarmuka pengguna terpandu memandu Anda melalui langkah-langkah berikut:

  • Pilih data sumber untuk penilaian
  • Memetakan data dengan benar ke input model ML Anda
  • Tentukan tujuan untuk output model Anda
  • Membuat buku catatan yang menggunakan PREDICT untuk menghasilkan dan menyimpan hasil prediksi

Untuk menggunakan pengalaman terpandu,

  1. Navigasi ke halaman item untuk versi model ML tertentu.

  2. Dari menu tarik-turun Terapkan versi ini, pilih Terapkan model ini di wizard.

    Cuplikan layar memperlihatkan perintah yang menerapkan model ML dari halaman itemnya.

    Pada langkah "Pilih tabel input", jendela "Terapkan prediksi model ML" terbuka.

  3. Pilih tabel input dari lakehouse di ruang kerja Anda saat ini.

    Cuplikan layar yang memperlihatkan pilihan tabel input untuk prediksi model ML.

  4. Pilih Berikutnya untuk masuk ke langkah "Petakan kolom input".

  5. Petakan nama kolom dari tabel sumber ke bidang input model ML, yang ditarik dari tanda tangan model. Anda harus menyediakan kolom input untuk semua bidang model yang diperlukan. Selain itu, jenis data kolom sumber harus cocok dengan jenis data model yang diharapkan.

    Tip

    Wizard telah mengisi pemetaan ini jika nama kolom tabel input cocok dengan nama kolom yang dicatat dalam tanda tangan model ML.

    Cuplikan layar yang memperlihatkan langkah yang memetakan kolom input untuk prediksi model ML.

  6. Pilih Berikutnya untuk masuk ke langkah "Buat tabel output".

  7. Berikan nama untuk tabel baru dalam lakehouse yang dipilih dari ruang kerja Anda saat ini. Tabel output ini menyimpan nilai input model ML Anda, dan menambahkan nilai prediksi ke tabel tersebut. Secara default, tabel output dibuat di lakehouse yang sama dengan tabel input. Anda dapat mengubah lakehouse tujuan.

    Cuplikan layar yang memperlihatkan langkah yang membuat tabel output untuk prediksi model ML.

  8. Pilih Berikutnya untuk masuk ke langkah "Petakan kolom output".

  9. Gunakan bidang teks yang disediakan untuk memberi nama kolom tabel output yang menyimpan prediksi model ML.

    Cuplikan layar memperlihatkan langkah yang memetakan kolom output untuk prediksi model ML.

  10. Pilih Berikutnya untuk masuk ke langkah "Konfigurasi buku catatan".

  11. Berikan nama untuk buku catatan baru yang menjalankan kode PREDICT yang dihasilkan. Wizard menampilkan pratinjau kode yang dihasilkan pada langkah ini. Jika mau, Anda bisa menyalin kode ke clipboard Anda dan menempelkannya ke buku catatan yang sudah ada.

    Cuplikan layar memperlihatkan langkah yang mengonfigurasi notebook untuk prediksi model ML.

  12. Pilih Berikutnya untuk masuk ke langkah "Tinjau dan selesai".

  13. Tinjau detail di halaman ringkasan, dan pilih Buat buku catatan untuk menambahkan buku catatan baru dengan kode yang dihasilkan ke ruang kerja Anda. Anda dibawa langsung ke notebook tersebut, tempat Anda dapat menjalankan kode untuk menghasilkan dan menyimpan prediksi.

    Cuplikan layar memperlihatkan langkah tinjau dan selesai untuk prediksi model ML.

Menggunakan templat kode yang dapat disesuaikan

Untuk menggunakan templat kode untuk menghasilkan prediksi batch:

  1. Buka halaman item untuk versi model ML tertentu.
  2. Pilih Salin kode untuk diterapkan dari dropdown Terapkan versi ini. Pilihan ini memungkinkan Anda menyalin templat kode yang dapat disesuaikan.

Anda dapat menempelkan templat kode ini ke dalam buku catatan untuk menghasilkan prediksi batch dengan model ML Anda. Agar berhasil menjalankan templat kode, Anda harus mengganti nilai berikut secara manual:

  • <INPUT_TABLE>: Jalur file untuk tabel yang menyediakan input ke model ML
  • <INPUT_COLS>: Array nama kolom dari tabel input untuk disalurkan ke model ML
  • <OUTPUT_COLS>: Nama untuk kolom baru dalam tabel output yang menyimpan prediksi
  • <MODEL_NAME>: Nama model ML yang digunakan untuk menghasilkan prediksi
  • <MODEL_VERSION>: Versi model ML yang digunakan untuk menghasilkan prediksi
  • <OUTPUT_TABLE>: Jalur file untuk tabel yang menyimpan prediksi

Cuplikan layar memperlihatkan templat kode salin untuk prediksi model ML.

import mlflow 
from synapse.ml.predict import MLFlowTransformer 
 
df = spark.read.format("delta").load( 
    <INPUT_TABLE> # Your input table filepath here
) 
 
model = MLFlowTransformer( 
    inputCols=<INPUT_COLS>, # Your input columns here
    outputCol=<OUTPUT_COLS>, # Your new column name here
    modelName=<MODEL_NAME>, # Your ML model name here
    modelVersion=<MODEL_VERSION> # Your ML model version here
) 
df = model.transform(df) 
 
df.write.format('delta').mode("overwrite").save( 
    <OUTPUT_TABLE> # Your output table filepath here
)