Bodovanie modelu strojového učenia pomocou služby PREDICT v službe Microsoft Fabric
Microsoft Fabric umožňuje používateľom pracovať na modeloch strojového učenia pomocou škálovateľnej funkcie PREDICT. Táto funkcia podporuje dávkové bodovanie v akomkoľvek výpočtovom nástroji. Používatelia môžu vytvárať dávkové predpovede priamo z poznámkového bloku služby Microsoft Fabric alebo zo stránky položky daného modelu strojového učenia.
V tomto článku sa naučíte používať funkciu PREDICT tak, že napíšete kód sami alebo pomocou interaktívneho používateľského rozhrania, ktoré spracováva dávkové skóre za vás.
Požiadavky
Získajte predplatné na Microsoft Fabric. Alebo si zaregistrujte bezplatnú skúšobnú verziu služby Microsoft Fabric.
Prihláste sa do služby Microsoft Fabric.
Pomocou prepínača skúseností v ľavej dolnej časti domovskej stránky sa prepnete na službu Fabric.
Obmedzenia
- Funkcia PREDICT je aktuálne podporovaná pre túto obmedzenú množinu variantov modelu strojového učenia:
- CatBoost
- Keras
- LightGBM
- ONNX
- Prorok
- PyTorch
- Sklearn
- Spark
- Statsmodels (Statsmodels)
- Tok času
- XGBoost
- Funkcia PREDICT vyžaduje, aby ste ukladali modely strojového učenia vo formáte toku MLflow, pričom ich podpisy sú vyplnené.
- Funkcia PREDICT nepodporuje modely strojového učenia s viacpätovými vstupmi ani výstupmi.
Volanie funkcie PREDICT z notebooku
Funkcia PREDICT podporuje modely zabalené tokom textu v databáze Microsoft Fabric Registry. Ak už máte vo svojom pracovnom priestore trénovaný a registrovaný model strojového učenia, môžete prejsť na krok 2. Ak nie, krok 1 poskytuje vzorový kód, ktorý vás prevedie trénovaním ukážkového logistického regresného modelu. Tento model môžete použiť na generovanie predpovedí šarží na konci postupu.
Trénujte model strojového učenia a zaregistrujte ho pomocou toku MLflow. Ďalšia ukážka kódu používa rozhranie API MLflow na vytvorenie experimentu so strojovým učením a potom spustí spustenie toku MLflow pre logistický regresný model scikit-learn. Modelová verzia sa potom uloží a zaregistruje v databáze Registry služby Microsoft Fabric. Pozrite si tému Ako trénovať modely strojového učenia pomocou zdroja scikit-learn , kde nájdete ďalšie informácie o vzdelávacích modeloch a sledovaní vlastných experimentov.
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" )
Načítanie testovacích údajov ako údajového prvku Spark. Ak chcete generovať dávkové predpovede s modelom strojového učenia trénovaným v predchádzajúcom kroku, potrebujete testovacie údaje vo forme prvku Údajovýframe služby Spark. V nasledujúcom kóde nahraďte hodnotu premennej
test
vlastnými údajmi.# You can substitute "test" below with your own data test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
Vytvorte
MLFlowTransformer
objekt na načítanie modelu strojového učenia na odvodenie. Ak chcete vytvoriť objekt na generovanieMLFlowTransformer
dávkových predpovedí, musíte vykonávať tieto akcie:- určenie stĺpcov údajového
test
rámca, ktoré potrebujete ako vstupy modelu (v tomto prípade všetky) - Vyberte názov pre nový výstupný stĺpec (v tomto prípade ,
predictions
) - poskytuje správny názov modelu a verziu modelu na generovanie týchto predpovedí.
Ak používate vlastný model strojového učenia, nahraďte hodnoty vstupných stĺpcov, názov výstupného stĺpca, názov modelu a verziu modelu.
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 )
- určenie stĺpcov údajového
Generovanie predpovedí pomocou funkcie PREDICT. Ak chcete vyvolať funkciu PREDICT, použite rozhranie API Transformer, rozhranie API služby Spark SQL alebo funkciu definovanú používateľom V PySpark (UDF). V nasledujúcich častiach sa dozviete, ako generovať predpovede šarží s testovacími údajmi a modelom strojového učenia definovaným v predchádzajúcich krokoch, a to pomocou rôznych metód na vyvolanie funkcie PREDICT.
Funkcia PREDICT pomocou rozhrania API pre transformátor
Tento kód vyvolá funkciu PREDICT s rozhraním API transformátora. Ak používate vlastný model strojového učenia, nahraďte hodnoty modelu a otestujte údaje.
# You can substitute "model" and "test" below with values
# for your own model and test data
model.transform(test).show()
FUNKCIA PREDICT s rozhraním API služby Spark SQL
Tento kód vyvolá funkciu PREDICT s spark SQL API. Ak používate vlastný model strojového učenia, nahraďte hodnoty , model_name
model_version
a features
názvom modelu, verziou modelu a stĺpcami funkcií.
Poznámka
Použitie rozhrania API Spark SQL na generovanie predpovede stále vyžaduje vytvorenie MLFlowTransformer
objektu (ako je to znázornené v kroku 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()
FUNKCIA PREDICT s funkciou definovanou používateľom
Tento kód vyvolá funkciu PREDICT s jazykom PySpark UDF. Ak používate vlastný model strojového učenia, nahraďte hodnoty modelu a funkcií.
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()
Generovanie kódu PREDICT zo stránky položky modelu strojového učenia
Na stránke položky ľubovoľného modelu strojového učenia môžete vybrať jednu z týchto možností na spustenie generovania dávkovej predpovede pre konkrétnu verziu modelu s funkciou PREDICT:
- Skopírovanie šablóny kódu do poznámkového bloku a vlastné prispôsobenie parametrov
- Generovanie kódu PREDICT pomocou interaktívneho používateľského rozhrania
Používanie interaktívneho používateľského rozhrania
Interaktívne používateľské rozhranie vás prevedie týmito krokmi:
- Výber zdrojových údajov na bodovanie
- Správne priraďovanie údajov k vstupom modelu strojového učenia
- Zadanie cieľa výstupov modelu
- Vytvorenie poznámkového bloku, ktorý používa funkciu PREDICT na generovanie a ukladanie výsledkov predpovedí
Ak chcete využiť interaktívne prostredie,
Prejdite na stránku položiek danej verzie modelu strojového učenia.
V rozbaľovacom zozname Použiť túto verziu vyberte možnosť Použiť tento model v sprievodcovi.
V kroku Výber vstupnej tabuľky sa otvorí okno Použiť predpovede modelu strojového učenia.
Vyberte vstupnú tabuľku z jazera vo svojom aktuálnom pracovnom priestore.
Výberom položky Ďalej prejdite na krok "Priradiť vstupné stĺpce".
Priraďte názvy stĺpcov zo zdrojovej tabuľky do vstupných polí modelu strojového učenia, ktoré sa získavajú z podpisu modelu. Musíte zadať vstupný stĺpec pre všetky požadované polia modelu. Okrem toho musia typy údajov zdrojového stĺpca zodpovedať očakávaným typom údajov modelu.
Prepitné
Sprievodca vyžaduje toto priradenie, ak sa názvy stĺpcov vstupnej tabuľky zhodujú s názvami stĺpcov zapísaných v podpise modelu strojového učenia.
Výberom položky Ďalej prejdite na krok Vytvorenie výstupnej tabuľky.
Zadajte názov novej tabuľky vo vybratom úchyte jazera aktuálneho pracovného priestoru. Táto výstupná tabuľka ukladá vstupné hodnoty vášho modelu strojového učenia a pripojí hodnoty predpovede k danej tabuľke. Podľa predvoleného nastavenia sa výstupná tabuľka vytvorí v tom istom jazere ako vstupná tabuľka. Môžete zmeniť cieľový lakehouse.
Výberom položky Ďalej prejdite na krok "Priradiť výstupné stĺpce".
Pomocou poskytnutých textových polí pomenujte stĺpce výstupnej tabuľky, ktorá ukladá predpovede modelu strojového učenia.
Výberom položky Ďalej prejdite na krok Konfigurovať poznámkový blok.
Zadajte názov nového poznámkového bloku, na ktorom je spustený vygenerovaný kód PREDICT. Sprievodca zobrazí v tomto kroku ukážku vygenerovaného kódu. Ak chcete, môžete kód skopírovať do Schránky a prilepiť ho do existujúceho poznámkového bloku.
Výberom položky Ďalej prejdite na krok Skontrolovať a dokončiť.
Skontrolujte podrobnosti na stránke súhrnu a vyberte položku Vytvoriť poznámkový blok , aby ste do pracovného priestoru pridali nový poznámkový blok s vygenerovaným kódom. Budete presmerovaní priamo do poznámkového bloku, kde môžete spustiť kód na generovanie a ukladanie predpovedí.
Použitie prispôsobiteľnej šablóny kódu
Ak chcete použiť šablónu kódu na generovanie dávkových predpovedí:
- Prejdite na stránku položiek danej verzie modelu strojového učenia.
- Vyberte položku Kopírovať kód, ktorý sa má použiť v rozbaľovacom zozname Použiť túto verziu . Výberom môžete skopírovať prispôsobiteľnú šablónu kódu.
Túto šablónu kódu môžete prilepiť do poznámkového bloku a generovať tak dávkové predpovede s modelom strojového učenia. Ak chcete úspešne spustiť šablónu kódu, musíte nahradiť nasledujúce hodnoty manuálne:
-
<INPUT_TABLE>
: Cesta k súboru pre tabuľku, ktorá poskytuje vstupy do modelu strojového učenia -
<INPUT_COLS>
: Pole názvov stĺpcov zo vstupnej tabuľky na informačný kanál do modelu strojového učenia -
<OUTPUT_COLS>
: Názov nového stĺpca vo výstupnej tabuľke, ktorá ukladá predpovede -
<MODEL_NAME>
: Názov modelu strojového učenia, ktorý sa má použiť na generovanie predpovedí -
<MODEL_VERSION>
: Verzia modelu strojového učenia, ktorá sa má použiť na generovanie predpovedí -
<OUTPUT_TABLE>
: Cesta k súboru pre tabuľku, ktorá ukladá predpovede
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
)