Βαθμολόγηση μοντέλου εκμάθησης μηχανής με την PREDICT στο Microsoft Fabric
Το Microsoft Fabric επιτρέπει στους χρήστες να λειτουργικοποιούν μοντέλα εκμάθησης μηχανής με τη συνάρτηση PREDICT με δυνατότητα κλιμάκωσης. Αυτή η συνάρτηση υποστηρίζει βαθμολόγηση δέσμης σε οποιαδήποτε μηχανή υπολογιστικής λειτουργίας. Οι χρήστες μπορούν να δημιουργήσουν προβλέψεις δέσμης απευθείας από ένα σημειωματάριο Microsoft Fabric ή από τη σελίδα στοιχείου ενός συγκεκριμένου μοντέλου εκμάθησης μηχανής.
Σε αυτό το άρθρο, θα μάθετε πώς μπορείτε να εφαρμόσετε την ΠΡΌΒΛΕΨΗ γράφοντας κώδικα μόνοι σας ή χρησιμοποιώντας μια εμπειρία καθοδηγούμενου περιβάλλοντος εργασίας χρήστη που χειρίζεται τη βαθμολόγηση δέσμης για εσάς.
Προαπαιτούμενα στοιχεία
Λάβετε μια συνδρομή Microsoft Fabric. Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση του Microsoft Fabric.
Εισέλθετε στο Microsoft Fabric.
Χρησιμοποιήστε την εναλλαγή εμπειρίας στην αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε στην εμπειρία Synapse Data Science.
Περιορισμοί
- Η συνάρτηση PREDICT υποστηρίζεται προς το παρόν για αυτό το περιορισμένο σύνολο flavors μοντέλου εκμάθησης μηχανής:
- CatBoost
- Keras
- LightGBM
- ONNX
- Προφήτης
- PyTorch
- Sklearn
- Spark
- Στατιστικά στοιχεία
- TensorFlow
- XGBoost
- Η PREDICT απαιτεί να αποθηκεύετε μοντέλα εκμάθησης μηχανής στη μορφή MLflow, με συμπληρωμένες τις υπογραφές τους
- Η PREDICT δεν υποστηρίζει μοντέλα εκμάθησης μηχανής με εισόδους ή εξόδους πολλών δεκάδων
Κλήση της predict από ένα σημειωματάριο
Η PREDICT υποστηρίζει μοντέλα σε πακέτο MLflow στο μητρώο του Microsoft Fabric. Εάν υπάρχει ήδη εκπαιδευμένο και καταχωρημένο μοντέλο εκμάθησης μηχανής στον χώρο εργασίας σας, μπορείτε να προχωρήσετε στο βήμα 2. Αν όχι, το βήμα 1 παρέχει δείγμα κώδικα για να σας καθοδηγήσει στην εκπαίδευση ενός δείγματος μοντέλου λογιστικής παλινδρόμησης. Μπορείτε να χρησιμοποιήσετε αυτό το μοντέλο για να δημιουργήσετε προβλέψεις δέσμης στο τέλος της διαδικασίας.
Εκπαιδεύστε ένα μοντέλο εκμάθησης μηχανής και καταχωρήστε το με το MLflow. Το επόμενο δείγμα κώδικα χρησιμοποιεί το API MLflow για τη δημιουργία ενός πειράματος εκμάθησης μηχανής και, στη συνέχεια, ξεκινά μια εκτέλεση MLflow για ένα μοντέλο λογιστικής παλινδρόμησης scikit-learn. Στη συνέχεια, η έκδοση του μοντέλου αποθηκεύεται και καταχωρείται στο μητρώο του Microsoft Fabric. Επισκεφθείτε τον τρόπο εκπαίδευσης μοντέλων εκμάθησης μηχανής με πόρους scikit-learn για περισσότερες πληροφορίες σχετικά με τα μοντέλα εκπαίδευσης και την παρακολούθηση των δικών σας πειραμάτων.
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" )
Φόρτωση σε δεδομένα δοκιμής ως Spark DataFrame. Για να δημιουργήσετε προβλέψεις δέσμης με το μοντέλο εκμάθησης μηχανής εκπαιδευμένο στο προηγούμενο βήμα, χρειάζεστε δεδομένα δοκιμής με τη μορφή ενός Spark DataFrame. Στον παρακάτω κώδικα, αντικαταστήστε την τιμή μεταβλητής
test
με τα δικά σας δεδομένα.# You can substitute "test" below with your own data test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
Δημιουργήστε ένα
MLFlowTransformer
αντικείμενο για να φορτώσετε το μοντέλο εκμάθησης μηχανής για συμπεραίωση. Για να δημιουργήσετε έναMLFlowTransformer
αντικείμενο για τη δημιουργία προβλέψεων δέσμης, πρέπει να εκτελέσετε αυτές τις ενέργειες:- καθορίστε τις
test
στήλες DataFrame που χρειάζεστε ως δεδομένα εισόδου μοντέλου (σε αυτή την περίπτωση, όλες) - επιλέξτε ένα όνομα για τη νέα στήλη εξόδου (σε αυτή την περίπτωση,
predictions
) - Εισαγάγετε το σωστό όνομα μοντέλου και την έκδοση μοντέλου για τη δημιουργία αυτών των προβλέψεων.
Εάν χρησιμοποιείτε το δικό σας μοντέλο εκμάθησης μηχανής, αντικαταστήστε τις τιμές για τις στήλες εισόδου, το όνομα στήλης εξόδου, το όνομα μοντέλου και την έκδοση μοντέλου.
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 )
- καθορίστε τις
Δημιουργήστε προβλέψεις χρησιμοποιώντας τη συνάρτηση PREDICT. Για να καλέσετε τη συνάρτηση PREDICT, χρησιμοποιήστε το API Transformer, το Spark SQL API ή μια συνάρτηση που ορίζεται από τον χρήστη PySpark (UDF). Οι παρακάτω ενότητες δείχνουν πώς μπορείτε να δημιουργήσετε προβλέψεις δέσμης με τα δεδομένα δοκιμής και το μοντέλο εκμάθησης μηχανής που έχει οριστεί στα προηγούμενα βήματα, χρησιμοποιώντας τις διαφορετικές μεθόδους για την κλήση της συνάρτησης PREDICT.
ΠΡΟΒΛΕΨΗ με το API μετασχηματισμού
Αυτός ο κώδικας καλεί τη συνάρτηση PREDICT με το API μετασχηματισμού. Εάν χρησιμοποιείτε το δικό σας μοντέλο εκμάθησης μηχανής, αντικαταστήστε τις τιμές για το μοντέλο και ελέγξτε τα δεδομένα.
# You can substitute "model" and "test" below with values
# for your own model and test data
model.transform(test).show()
ΠΡΌΒΛΕΨΗ με το Spark SQL API
Αυτός ο κώδικας καλεί τη συνάρτηση PREDICT με το Spark SQL API. Εάν χρησιμοποιείτε το δικό σας μοντέλο εκμάθησης μηχανής, αντικαταστήστε τις τιμές για model_name
, model_version
και features
με το όνομα μοντέλου, την έκδοση μοντέλου και τις στήλες δυνατοτήτων.
Σημείωμα
Η χρήση του API Spark SQL για δημιουργία πρόβλεψης εξακολουθεί να απαιτεί τη δημιουργία ενός MLFlowTransformer
αντικειμένου (όπως φαίνεται στο βήμα 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 με μια συνάρτηση που ορίζεται από τον χρήστη
Αυτός ο κώδικας καλεί τη συνάρτηση PREDICT με ένα UDF PySpark. Εάν χρησιμοποιείτε το δικό σας μοντέλο εκμάθησης μηχανής, αντικαταστήστε τις τιμές για το μοντέλο και τις δυνατότητες.
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()
Δημιουργία κώδικα PREDICT από τη σελίδα στοιχείου ενός μοντέλου εκμάθησης μηχανής
Από τη σελίδα στοιχείου οποιουδήποτε μοντέλου εκμάθησης μηχανής, μπορείτε να επιλέξετε μία από αυτές τις επιλογές για να ξεκινήσετε τη δημιουργία πρόβλεψης δέσμης για μια συγκεκριμένη έκδοση μοντέλου, με τη συνάρτηση PREDICT:
- Αντιγράψτε ένα πρότυπο κώδικα σε ένα σημειωματάριο και προσαρμόστε τις παραμέτρους μόνοι σας
- Χρήση εμπειρίας καθοδηγούμενου περιβάλλοντος εργασίας χρήστη για τη δημιουργία κώδικα PREDICT
Χρήση εμπειρίας καθοδηγούμενου περιβάλλοντος εργασίας χρήστη
Η εμπειρία καθοδηγούμενου περιβάλλοντος εργασίας χρήστη σάς καθοδηγεί στα εξής βήματα:
- Επιλογή των δεδομένων προέλευσης για βαθμολόγηση
- Σωστή αντιστοίχιση των δεδομένων στις εισόδους του μοντέλου εκμάθησης μηχανής σας
- Καθορισμός του προορισμού για τις εξόδους του μοντέλου σας
- Δημιουργία σημειωματάριου που χρησιμοποιεί την PREDICT για τη δημιουργία και αποθήκευση αποτελεσμάτων πρόβλεψης
Για να χρησιμοποιήσετε την καθοδηγούμενη εμπειρία,
Μεταβείτε στη σελίδα στοιχείου για μια δεδομένη έκδοση μοντέλου εκμάθησης μηχανής.
Από την αναπτυσσόμενη λίστα Εφαρμογή αυτής της έκδοσης , επιλέξτε Εφαρμογή αυτού του μοντέλου στον οδηγό.
Στο βήμα "Επιλογή πίνακα εισόδου", ανοίγει το παράθυρο "Εφαρμογή προβλέψεων μοντέλου εκμάθησης μηχανής".
Επιλέξτε έναν πίνακα εισόδου από μια λίμνη στον τρέχοντα χώρο εργασίας σας.
Επιλέξτε Επόμενο για να μεταβείτε στο βήμα "Αντιστοίχιση στηλών εισόδου".
Αντιστοιχίστε τα ονόματα στηλών από τον πίνακα προέλευσης στα πεδία εισόδου του μοντέλου εκμάθησης μηχανής, τα οποία αντλούνται από την υπογραφή του μοντέλου. Πρέπει να καταχωρήσετε μια στήλη εισόδου για όλα τα απαιτούμενα πεδία του μοντέλου. Επιπλέον, οι τύποι δεδομένων στήλης προέλευσης πρέπει να συμφωνούν με τους αναμενόμενους τύπους δεδομένων του μοντέλου.
Φιλοδώρημα
Ο οδηγός προ-συμπυκνώνει αυτή την αντιστοίχιση εάν τα ονόματα των στηλών του πίνακα εισόδου συμφωνούν με τα ονόματα των στηλών που είναι συνδεδεμένα στην υπογραφή μοντέλου εκμάθησης μηχανής.
Επιλέξτε Επόμενο για να μεταβείτε στο βήμα "Δημιουργία πίνακα εξόδου".
Εισαγάγετε ένα όνομα για έναν νέο πίνακα εντός της επιλεγμένης λίμνης του τρέχοντος χώρου εργασίας σας. Αυτός ο πίνακας εξόδου αποθηκεύει τις τιμές εισόδου του μοντέλου εκμάθησης μηχανής σας και προσαρτά τις τιμές πρόβλεψης σε αυτόν τον πίνακα. Από προεπιλογή, ο πίνακας εξόδου δημιουργείται στην ίδια λίμνη με τον πίνακα εισόδου. Μπορείτε να αλλάξετε το lakehouse προορισμού.
Επιλέξτε Επόμενο για να μεταβείτε στο βήμα "Αντιστοίχιση στηλών εξόδου".
Χρησιμοποιήστε τα παρεχόμενα πεδία κειμένου για να ονομάσετε τις στήλες του πίνακα εξόδου που αποθηκεύει τις προβλέψεις μοντέλου εκμάθησης μηχανής.
Επιλέξτε Επόμενο για να μεταβείτε στο βήμα "Ρύθμιση παραμέτρων σημειωματάριου".
Εισαγάγετε ένα όνομα για ένα νέο σημειωματάριο που εκτελεί τον κωδικό PREDICT που δημιουργείται. Ο οδηγός εμφανίζει μια προεπισκόπηση του κώδικα που δημιουργήθηκε σε αυτό το βήμα. Εάν θέλετε, μπορείτε να αντιγράψετε τον κώδικα στο πρόχειρό σας και να τον επικολλήσετε σε ένα υπάρχον σημειωματάριο.
Επιλέξτε Επόμενο για να μεταβείτε στο βήμα "Αναθεώρηση και ολοκλήρωση".
Εξετάστε τις λεπτομέρειες στη σελίδα σύνοψης και επιλέξτε Δημιουργία σημειωματάριου για να προσθέσετε το νέο σημειωματάριο με τον κωδικό που δημιουργήθηκε στον χώρο εργασίας σας. Θα μεταφερθείτε απευθείας σε αυτό το σημειωματάριο, όπου μπορείτε να εκτελέσετε τον κώδικα για να δημιουργήσετε και αποθηκεύσετε προβλέψεις.
Χρήση προσαρμόσιμου προτύπου κώδικα
Για να χρησιμοποιήσετε ένα πρότυπο κώδικα για τη δημιουργία προβλέψεων δέσμης:
- Μεταβείτε στη σελίδα στοιχείου για μια δεδομένη έκδοση μοντέλου εκμάθησης μηχανής.
- Επιλέξτε Αντιγραφή κώδικα για εφαρμογή από το αναπτυσσόμενο μενού Εφαρμογή αυτής της έκδοσης . Η επιλογή σάς επιτρέπει να αντιγράψετε ένα προσαρμόσιμο πρότυπο κώδικα.
Μπορείτε να επικολλήσετε αυτό το πρότυπο κώδικα σε ένα σημειωματάριο για τη δημιουργία προβλέψεων δέσμης με το μοντέλο εκμάθησης μηχανής σας. Για να εκτελέσετε με επιτυχία το πρότυπο κώδικα, πρέπει να αντικαταστήσετε με μη αυτόματο τρόπο τις ακόλουθες τιμές:
<INPUT_TABLE>
: Η διαδρομή αρχείου για τον πίνακα που παρέχει εισόδους στο μοντέλο εκμάθησης μηχανής<INPUT_COLS>
: Ένας πίνακας ονομάτων στηλών από τον πίνακα εισόδου για τροφοδοσία στο μοντέλο εκμάθησης μηχανής<OUTPUT_COLS>
: Ένα όνομα για μια νέα στήλη στον πίνακα εξόδου που αποθηκεύει προβλέψεις<MODEL_NAME>
: Το όνομα του μοντέλου εκμάθησης μηχανής που θα χρησιμοποιηθεί για τη δημιουργία προβλέψεων<MODEL_VERSION>
: Η έκδοση του μοντέλου εκμάθησης μηχανής που θα χρησιμοποιηθεί για τη δημιουργία προβλέψεων<OUTPUT_TABLE>
: Η διαδρομή αρχείου για τον πίνακα που αποθηκεύει τις προβλέψεις
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
)