Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Microsoft Fabric können Sie Machine Learning-Modelle mithilfe der skalierbaren VORHERSAGE-Funktion operationalisieren. Diese Funktion unterstützt die Batchbewertung in jeder Compute-Engine. Sie können Batchvorhersagen direkt aus einem Microsoft Fabric-Notizbuch oder von der Elementseite eines bestimmten ML-Modells generieren.
In diesem Artikel wird erläutert, wie Sie PREDICT anwenden können, indem Sie Code selbst schreiben oder eine Benutzeroberfläche mit Anleitung verwenden, die Batchbewertung für Sie verarbeitet.
Voraussetzungen
Erwerben Sie ein Microsoft Fabric-Abonnement. Registrieren Sie sich alternativ für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabric an.
Wechseln Sie zu Fabric, indem Sie den Benutzeroberflächenschalter auf der unteren linken Seite Ihrer Startseite verwenden.
Begrenzungen
- Die VORHERSAGE-Funktion unterstützt derzeit nur die folgenden ML-Modellaromen:
- CatBoost
- Keras
- LightGBM
- ONNX
- Prophet
- PyTorch
- Sklearn
- Spark
- Statsmodels
- TensorFlow
- XGBoost
- PROGNOSE erfordert , dass Sie ML-Modelle im MLflow-Format speichern, wobei ihre Signaturen aufgefüllt sind.
- PREDICT unterstützt keine ML-Modelle mit Multi-Tensor-Ein- oder Ausgaben.
Aufrufen von PREDICT über ein Notebook
PREDICT unterstützt MLflow-gepackte Modelle in der Microsoft Fabric-Registrierung. Wenn sich in Ihrem Arbeitsbereich bereits ein trainiertes und registriertes ML-Modell befindet, können Sie mit Schritt 2 fortfahren. Andernfalls enthält Schritt 1 Beispielcode, der Sie durch das Trainieren eines logistischen Regressionsmodells führt. Verwenden Sie dieses Modell, um Batchvorhersagen am Ende der Prozedur zu generieren.
Trainieren und Registrieren eines ML-Modells bei MLflow. Im nächsten Codebeispiel wird die MLflow-API verwendet, um ein Machine Learning-Experiment zu erstellen, und startet dann eine MLflow-Ausführung für ein Scikit-learn-Logistik-Regressionsmodell. Die Modellversion wird dann gespeichert und in der Microsoft Fabric-Registrierung registriert. Weitere Informationen zu Trainingsmodellen und zum Nachverfolgen ihrer eigenen Experimente finden Sie in der Schulung von ML-Modellen mit 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" )Laden von Testdaten als Spark-Dataframe: Um Batchvorhersagen mit dem im vorherigen Schritt trainierten ML-Modell zu generieren, benötigen Sie Testdaten in Form eines Spark-Dataframe. Ersetzen Sie im folgenden Code den Wert für die
test-Variable durch Ihre eigenen Daten.# You can substitute "test" below with your own data test = spark.createDataFrame(data.frame.drop(['target'], axis=1))Erstellen eines
MLFlowTransformer-Objekts zum Laden des ML-Modells für Rückschlüsse. Führen Sie die folgenden Aktionen aus, um ein Objekt zum Generieren vonMLFlowTransformerBatchvorhersagen zu erstellen:- Geben Sie die Spalten des
testDataFrames an, die Sie als Eingaben für das Modell benötigen (in diesem Fall alle). - Wählen Sie einen Namen für die neue Ausgabespalte aus (in diesem Fall
predictions). - Geben Sie den richtigen Modellnamen und die Modellversion für die Generierung dieser Vorhersagen an.
Wenn Sie Ihr eigenes ML-Modell verwenden, ersetzen Sie die Werte für die Eingabespalten, den Namen der Ausgabespalte, den Modellnamen und die Modellversion.
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 )- Geben Sie die Spalten des
Generieren von Vorhersagen mithilfe der PREDICT-Funktion: Zum Aufrufen der PREDICT-Funktion können Sie die Transformer-API, die Spark SQL-API oder eine benutzerdefinierte PySpark-Funktion (User-defined Function, UDF) verwenden. In den folgenden Abschnitten wird gezeigt, wie mithilfe der verschiedenen Methoden zum Aufrufen der PREDICT-Funktion Batchvorhersagen mit den in den vorherigen Schritten definierten Testdaten und dem ML-Modell generiert werden.
PREDICT mit der Transformer-API
Dieser Code ruft die PREDICT-Funktion mit der Transformer-API auf. Wenn Sie Ihr eigenes ML-Modell verwenden, ersetzen Sie die Werte für das Modell und die Testdaten.
# You can substitute "model" and "test" below with values
# for your own model and test data
model.transform(test).show()
PREDICT mit der Spark-SQL-API
Dieser Code ruft die VORHERSAGE-Funktion mithilfe der Spark SQL-API auf. Wenn Sie Ihr eigenes ML-Modell verwenden, ersetzen Sie die Werte für model_name, model_version und features durch den Modellnamen, die Modellversion und die Merkmalspalten.
Hinweis
Wenn Sie die Spark SQL-API zum Generieren von Vorhersagen verwenden, müssen Sie dennoch ein MLFlowTransformer Objekt erstellen, wie in Schritt 3 gezeigt.
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 mit einer benutzerdefinierten Funktion
Dieser Code ruft die PREDICT-Funktion mithilfe eines PySpark UDF auf. Wenn Sie Ihr eigenes ML-Modell verwenden, ersetzen Sie die Werte für das Modell und die Features.
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()
Generieren von PREDICT-Code über die Elementseite eines ML-Modells
Auf der Elementseite eines beliebigen ML-Modells können Sie eine der folgenden Optionen auswählen, um die Generierung von Batchvorhersagen für eine bestimmte Modellversion mithilfe der FUNKTION PROGNOSE zu starten:
- Kopieren Sie eine Codevorlage in ein Notizbuch, und passen Sie die Parameter selbst an.
- Verwenden Sie eine geführte Benutzeroberfläche, um VORHERSAG-Code zu generieren.
Eine geführte Benutzeroberfläche verwenden
Die geführte Benutzeroberfläche führt Sie durch diese Schritte:
- Wählen Sie die Quelldaten für die Bewertung aus.
- Ordnen Sie die Daten korrekt ihren ML-Modelleingaben zu.
- Geben Sie das Ziel für die Modellausgaben an.
- Erstellen Sie ein Notizbuch, das PREDICT zum Generieren und Speichern von Vorhersageergebnissen verwendet.
Gehen Sie wie folgt vor, um die geführte Anleitung zu nutzen:
Navigieren Sie zur Elementseite für eine bestimmte ML-Modellversion.
Wählen Sie in der Dropdownliste Diese Version anwenden die Option Dieses Modell im Assistenten anwenden aus.
Im Schritt „Eingabetabelle auswählen” wird das Fenster „ML-Modellvorhersagen anwenden” geöffnet.
Wählen Sie eine Eingabetabelle aus einem Lakehouse in Ihrem aktuellen Arbeitsbereich aus.
Klicken Sie auf Weiter, um zum Schritt „Eingabespalten zuordnen“ zu wechseln.
Ordnen Sie Spaltennamen aus der Quelltabelle den Eingabefeldern des ML-Modells zu, die aus der Signatur des Modells abgerufen wurden. Sie müssen eine Eingabespalte für alle erforderlichen Felder des Modells bereitstellen. Außerdem hinaus müssen die Datentypen der Quellspalte den erwarteten Datentypen des Modells entsprechen.
Tipp
Der Assistent füllt diese Zuordnung vorab auf, wenn die Spaltennamen der Eingabetabelle mit den Spaltennamen übereinstimmen, die in der ML-Modellsignatur protokolliert wurden.
Klicken Sie auf Weiter, um zum Schritt „Ausgabetabelle erstellen“ zu wechseln.
Geben Sie einen Namen für eine neue Tabelle im ausgewählten Lakehouse Ihres aktuellen Arbeitsbereichs an. Diese Ausgabetabelle speichert die Eingabewerte Ihres ML-Modells und fügt die Vorhersagewerte an diese Tabelle an. Standardmäßig wird die Ausgabetabelle im selben Lakehouse wie die Eingabetabelle erstellt. Sie können das Ziel-Lakehouse ändern.
Wählen Sie Weiter, um zum Schritt „Zuordnung der Ausgabespalten“ zu wechseln.
Verwenden Sie die bereitgestellten Textfelder, um die Spalten in der Ausgabetabelle zu benennen, in der die Vorhersagen des ML-Modells gespeichert werden.
Klicken Sie auf Weiter, um zum Schritt „Notebook konfigurieren“ zu wechseln.
Geben Sie einen Namen für ein neues Notebook an, in dem der generierte PREDICT-Code ausgeführt wird. Der Assistent zeigt in diesem Schritt eine Vorschau des generierten Codes an. Sie können den Code in Ihre Zwischenablage kopieren und ihn bei Bedarf in ein vorhandenes Notebook einfügen.
Klicken Sie auf Weiter, um zum Schritt „Überprüfen und abschließen“ zu wechseln.
Überprüfen Sie die Details auf der Zusammenfassungsseite, und wählen Sie Notebook erstellen aus, um Ihrem Arbeitsbereich das neue Notebook mit dem generierten Code hinzuzufügen. Sie werden direkt zu diesem Notebook weitergeleitet, wo Sie den Code ausführen können, um Vorhersagen zu generieren und zu speichern.
Verwenden einer anpassbaren Codevorlage
Gehen Sie wie folgt vor, um eine Codevorlage zum Generieren von Batchvorhersagen zu verwenden:
- Navigieren Sie zur Elementseite für eine bestimmte ML-Modellversion.
- Wählen Sie in der Dropdownliste Diese Version anwenden die Option Code zum Anwenden kopieren aus. Die Auswahl kopiert eine anpassbare Codevorlage.
Sie können diese Codevorlage in ein Notebook einfügen, um Batchvorhersagen mit Ihrem ML-Modell zu generieren. Um die Codevorlage erfolgreich auszuführen, ersetzen Sie die folgenden Werte manuell:
-
<INPUT_TABLE>: Der Dateipfad für die Tabelle, die Eingaben für das ML-Modell bereitstellt. -
<INPUT_COLS>: Ein Array von Spaltennamen aus der Eingabetabelle, um sie dem ML-Modell bereitzustellen. -
<OUTPUT_COLS>: Ein Name für eine neue Spalte in der Ausgabetabelle, in der Vorhersagen gespeichert werden. -
<MODEL_NAME>: Der Name des ML-Modells, das zum Generieren von Vorhersagen verwendet werden soll. -
<MODEL_VERSION>: Die Version des ML-Modells, die zum Generieren von Vorhersagen verwendet werden soll. -
<OUTPUT_TABLE>: Der Dateipfad für die Tabelle, in der die Vorhersagen gespeichert werden.
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
)