Bagikan melalui


Penilaian model pembelajaran mesin dengan PREDICT di Microsoft Fabric

Microsoft Fabric memungkinkan pengguna untuk mengoprasikan model pembelajaran mesin dengan fungsi yang dapat diskalakan yang disebut PREDICT, yang 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 dua cara, apakah Anda lebih nyaman menulis kode sendiri atau menggunakan pengalaman UI terpandu untuk menangani penilaian batch untuk Anda.

Prasyarat

Pembatasan

  • Fungsi PREDICT saat ini didukung untuk serangkaian ragam model ML terbatas, termasuk:
    • PyTorch
    • Sklearn
    • Spark
    • TensorFlow
    • ONNX
    • XGBoost
    • LightGBM
    • CatBoost
    • Statsmodel
    • Prophet
    • Keras
  • PREDICT mengharuskan model ML disimpan 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 ada model ML yang sudah terlatih dan terdaftar 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. Kode sampel berikut menggunakan API MLflow untuk membuat eksperimen pembelajaran mesin dan memulai eksekusi MLflow untuk model regresi logistik scikit-learn. Versi model kemudian disimpan dan didaftarkan di registri Microsoft Fabric. Lihat cara melatih model ML dengan scikit-learn untuk mempelajari 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 menggunakan model ML yang dilatih pada langkah sebelumnya, Anda memerlukan data pengujian dalam bentuk Spark DataFrame. Anda dapat mengganti nilai untuk test variabel dalam kode berikut 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 berikut:

    • tentukan kolom mana dari test DataFrame yang Anda butuhkan sebagai input model (dalam hal ini, semuanya),
    • pilih nama untuk kolom output baru (dalam hal ini, predictions), dan
    • berikan nama model dan versi model yang benar untuk menghasilkan 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, Anda dapat menggunakan 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 PREDICT.

PREDICT dengan TRANSFORMER API

Kode berikut memanggil fungsi PREDICT dengan Transformer API. Jika Anda telah 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 berikut memanggil fungsi PREDICT dengan Spark SQL API. Jika Anda telah menggunakan model ML Anda sendiri, ganti nilai untuk model_name, , model_versiondan features dengan nama model, versi model, dan kolom fitur Anda.

Catatan

Menggunakan Spark SQL API untuk menghasilkan prediksi masih mengharuskan Anda membuat MLFlowTransformer objek (seperti 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 berikut memanggil fungsi PREDICT dengan UDF PySpark. Jika Anda telah 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 berikut untuk mulai menghasilkan prediksi batch untuk versi model tertentu dengan PREDICT.

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

Menggunakan pengalaman UI terpandu

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

  • 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. Buka halaman item untuk versi model ML tertentu.

  2. Pilih Terapkan model ini dalam wizard dari dropdown Terapkan versi ini.

    Screenshot of the prompt to apply an ML model from its item page.

    Pilihan membuka jendela "Terapkan prediksi model ML" di langkah "Pilih tabel input".

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

    Screenshot of the step to select an input table for ML model predictions.

  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 untuk kolom sumber harus cocok dengan jenis data model yang diharapkan.

    Tip

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

    Screenshot of the step to map input columns for ML model predictions.

  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 dengan nilai prediksi yang ditambahkan. Secara default, tabel output dibuat di lakehouse yang sama dengan tabel input, tetapi opsi untuk mengubah lakehouse tujuan juga tersedia.

    Screenshot of the step to create an output table for ML model predictions.

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

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

    Screenshot of the step to map output columns for ML model predictions.

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

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

    Screenshot of the step to configure a notebook for ML model predictions.

  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.

    Screenshot of the review-and-finish step for ML model predictions.

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

Screenshot of the copy-code template for ML model predictions.

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
)