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
Dapatkan langganan Microsoft Fabric. Atau, daftar untuk uji coba Microsoft Fabric gratis.
Masuk ke Microsoft Fabric.
Gunakan pengalih pengalaman di sisi kiri halaman beranda Anda untuk beralih ke pengalaman Ilmu Data Synapse.
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.
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" )
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))
Buat
MLFlowTransformer
objek untuk memuat model ML untuk inferensi. Untuk membuatMLFlowTransformer
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 )
- tentukan kolom mana dari
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_version
dan 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,
Buka halaman item untuk versi model ML tertentu.
Pilih Terapkan model ini dalam wizard dari dropdown Terapkan versi ini.
Pilihan membuka jendela "Terapkan prediksi model ML" di langkah "Pilih tabel input".
Pilih tabel input dari salah satu lakehouse di ruang kerja Anda saat ini.
Pilih Berikutnya untuk masuk ke langkah "Petakan kolom input".
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.
Pilih Berikutnya untuk masuk ke langkah "Buat tabel output".
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.
Pilih Berikutnya untuk masuk ke langkah "Petakan kolom output".
Gunakan bidang teks yang disediakan untuk memberi nama kolom dalam tabel output yang menyimpan prediksi model ML.
Pilih Berikutnya untuk masuk ke langkah "Konfigurasi buku catatan".
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.
Pilih Berikutnya untuk masuk ke langkah "Tinjau dan selesai".
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.
Menggunakan templat kode yang dapat disesuaikan
Untuk menggunakan templat kode untuk menghasilkan prediksi batch:
- Buka halaman item untuk versi model ML tertentu.
- 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
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
)
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk