Zdieľať cez


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.

    Snímka obrazovky ponuky prepínača prostredí zobrazujúca, kde vybrať možnosť Dátová veda.

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.

  1. 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"
        ) 
    
  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. Ak chcete vytvoriť objekt na generovanie MLFlowTransformer 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
    )
    
  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 vyvolá funkciu PREDICT s spark SQL API. Ak používate vlastný model strojového učenia, nahraďte hodnoty , model_namemodel_versiona 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,

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

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
)