Machine learning modelové skórovanie s PREDICT v Microsoft Fabric

Microsoft Fabric vám umožňuje prevádzkovať modely machine learning pomocou škálovateľnej funkcie PREDICT. Táto funkcia podporuje dávkové bodovanie v akomkoľvek výpočtovom nástroji. Môžete generovať dávkové predikcie priamo z Microsoft Fabric notebooku alebo z položky daného ML modelu.

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

Obmedzenia

  • Funkcia PREDICT momentálne podporuje iba nasledujúce varianty modelov ML:
    • CatBoost
    • Keras
    • LightGBM
    • ONNX
    • Prorok
    • PyTorch
    • Sklearn
    • Spark
    • Statsmodels (Statsmodels)
    • Tok času
    • XGBoost
  • PREDICT vyžaduje , aby ste ukladali ML modely vo formáte MLflow, pričom ich podpisy sú vyplnené.
  • PREDICT nepodporuje ML modely s viactenzorovými vstupmi alebo výstupmi.

Volanie funkcie PREDICT z notebooku

PREDICT podporuje modely zabalené v MLflow v registri Microsoft Fabric. 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. Použite tento model na generovanie dávkových predpovedí na konci postupu.

  1. Trénujte model strojového učenia a zaregistrujte ho pomocou toku MLflow. Ďalšia ukážka kódu využíva MLflow API na vytvorenie experimentu machine learning a potom spustí MLflow beh pre logistický regresný model scikit-learn. Modelová verzia sa potom uloží a zaregistruje v registri Microsoft Fabric. Pre viac informácií o trénovaní modelov a sledovaní vlastných experimentov si pozrite návod, ako trénovať ML modely pomocou 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"
        ) 
    
  2. 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))
    
  3. Vytvorte MLFlowTransformer objekt na načítanie modelu strojového učenia na odvodenie. Na vytvorenie objektu MLFlowTransformer na generovanie dávkových predikcií vykonajte tieto akcie:

    • Špecifikuj stĺpce test DataFrame, ktoré potrebuješ ako vstupy do modelu (v tomto prípade všetky).
    • Vyberte názov pre nový výstupný stĺpec (v tomto prípade predictions).
    • Uveďte správny názov modelu a verziu modelu pre 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
    )
    
  4. 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 volá funkciu PREDICT pomocou Spark SQL API. Ak používate svoj vlastný ML model, nahraďte hodnoty , model_namemodel_version, a features názvom modelu, verziou modelu a stĺpcami funkcií.

Poznámka

Keď používate Spark SQL API na generovanie predikcií, stále musíte vytvoriť MLFlowTransformer objekt, ako je ukázané 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 volá funkciu PREDICT pomocou PySpark UDF. Ak používate svoj vlastný ML model, 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

Zo stránky položiek ktoréhokoľvek ML modelu si môžete vybrať jednu z týchto možností na spustenie dávkovej generovania predikcií pre konkrétnu verziu modelu pomocou funkcie PREDICT:

  • Skopíruj šablónu kódu do zápisníka a prispôsobuj si parametre sám.
  • Použite vedený používateľský zážitok na generovanie PREDICT kódu.

Používanie interaktívneho používateľského rozhrania

Interaktívne používateľské rozhranie vás prevedie týmito krokmi:

  1. Vyberte zdrojové údaje na hodnotenie.
  2. Správne mapujte dáta na vstupy vášho ML modelu.
  3. Špecifikujte cieľ pre výstupy vášho modelu.
  4. Vytvorte si zápisník, ktorý používa PREDICT na generovanie a ukladanie výsledkov predikcií.

Ak chcete využiť interaktívne prostredie,

  1. Prejdite na stránku položiek danej verzie modelu strojového učenia.

  2. V rozbaľovacom zozname Použiť túto verziu vyberte možnosť Použiť tento model v sprievodcovi.

    Snímka obrazovky zobrazujúca výzvu, ktorá používa model strojového učenia zo stránky s položkami.

    V kroku Výber vstupnej tabuľky sa otvorí okno Použiť predpovede modelu strojového učenia.

  3. Vyberte vstupnú tabuľku z jazera vo svojom aktuálnom pracovnom priestore.

    Snímka obrazovky, ktorá zobrazuje výber vstupnej tabuľky pre predpovede modelu strojového učenia.

  4. Výberom položky Ďalej prejdite na krok "Priradiť vstupné stĺpce".

  5. 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.

    Snímka obrazovky znázorňujúca krok, ktorý mapuje vstupné stĺpce pre predpovede modelu strojového učenia.

  6. Výberom položky Ďalej prejdite na krok Vytvorenie výstupnej tabuľky.

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

    Snímka obrazovky znázorňujúca krok, ktorý vytvára výstupnú tabuľku pre predpovede modelu strojového učenia.

  8. Výberom položky Ďalej prejdite na krok "Priradiť výstupné stĺpce".

  9. Pomocou poskytnutých textových polí pomenujte stĺpce výstupnej tabuľky, ktorá ukladá predpovede modelu strojového učenia.

    Snímka obrazovky znázorňujúca krok, ktorý mapuje výstupné stĺpce pre predpovede modelu strojového učenia.

  10. Výberom položky Ďalej prejdite na krok Konfigurovať poznámkový blok.

  11. 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.

    Snímka obrazovky zobrazujúca krok, ktorým sa konfiguruje poznámkový blok pre predpovede modelov strojového učenia.

  12. Výberom položky Ďalej prejdite na krok Skontrolovať a dokončiť.

  13. 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í.

    Snímka obrazovky znázorňujúca krok revízie a dokončenia pre predpovede modelu strojového učenia.

Použitie prispôsobiteľnej šablóny kódu

Ak chcete použiť šablónu kódu na generovanie dávkových predpovedí:

  1. Prejdite na stránku položiek danej verzie modelu strojového učenia.
  2. Vyberte položku Kopírovať kód, ktorý sa má použiť v rozbaľovacom zozname Použiť túto verziu . Výber kopíruje 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. Na úspešné spustenie šablóny kódu manuálne nahraďte nasledujúce hodnoty:

  • <INPUT_TABLE>: Cesta k súboru pre tabuľku, ktorá poskytuje vstupy do ML modelu.
  • <INPUT_COLS>: Pole názvov stĺpcov zo vstupnej tabuľky, ktoré sa posiela do ML modelu.
  • <OUTPUT_COLS>: Názov pre nový stĺpec vo výstupnej tabuľke, ktorý uchováva predpovede.
  • <MODEL_NAME>: Názov ML modelu na generovanie predpovedí.
  • <MODEL_VERSION>: Verzia ML modelu na generovanie predpovedí.
  • <OUTPUT_TABLE>: Cesta k súboru tabuľky, ktorá uchováva predpovede.

Snímka obrazovky znázorňujúca šablónu kopírovaného kódu pre predpovede modelu strojového učenia.

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
)