Modell pontozása a PREDICT használatával a Microsoft Fabricben

A Microsoft Fabric lehetővé teszi a felhasználók számára a gépi tanulási modellek üzembe helyezése a PREDICT nevű skálázható függvénnyel, amely támogatja a kötegelt pontozást bármely számítási motorban. A felhasználók közvetlenül egy Microsoft Fabric-jegyzetfüzetből vagy egy adott modell elemlapjáról hozhatnak létre kötegelt előrejelzéseket.

Fontos

A Microsoft Fabric jelenleg előzetes verzióban érhető el. Ezek az információk egy előzetes termékre vonatkoznak, amely a kiadás előtt lényegesen módosulhat. A Microsoft nem vállal kifejezett vagy vélelmezett garanciát az itt megadott információkra vonatkozóan.

Ebből a cikkből megtudhatja, hogyan alkalmazhatja a PREDICT mindkét módszert, legyen szó akár saját kezűbb kódírásról, akár interaktív felhasználói felületről a kötegelt pontozás kezelésére.

Előfeltételek

  • Egy Power BI Premium-előfizetés. Ha még nincs ilyenje, olvassa el A Power BI Premium vásárlása című témakört.

  • Egy Power BI-munkaterület hozzárendelt Premium-kapacitással. Ha nincs munkaterülete, a Munkaterület létrehozása című cikk lépéseit követve hozzon létre egyet, és rendelje hozzá egy Prémium szintű kapacitáshoz.

  • Jelentkezzen be a Microsoft Fabricbe.

Korlátozások

  • A PREDICT függvény jelenleg korlátozott modell-ízek esetében támogatott, például a PyTorch, a Sklearn, a Spark, a TensorFlow, az ONNX, az XGBoost, a LightGBM, a CatBoost és a Statsmodels esetében.
  • A PREDICT megköveteli, hogy a modellek MLflow formátumban legyenek mentve az aláírásukkal.
  • A PREDICT nem támogatja a több tenzoros bemenetekkel vagy kimenetekkel rendelkező modelleket.

A PREDICT hívása jegyzetfüzetből

A PREDICT támogatja az MLflow-csomagba csomagolt modelleket a Microsoft Fabric beállításjegyzékében. Ha már betanított és regisztrált egy modellt a munkaterületen, ugorjon az alábbi 2. lépésre. Ha nem, az 1. lépés mintakódot biztosít, amely végigvezeti egy logisztikai regressziós mintamodell betanításán. Ezzel a modellel kötegelt előrejelzéseket hozhat létre az eljárás végén.

  1. Modell betanítása és regisztrálása az MLflow-val. Az alábbi mintakód az MLflow API használatával hoz létre egy gépi tanulási kísérletet, és elindít egy MLflow-futtatást egy scikit-learn logisztikai regressziós modellhez. A modellverzió ezután a Microsoft Fabric beállításjegyzékében lesz tárolva és regisztrálva. Ha többet szeretne megtudni a modellek betanításáról és a saját kísérletek nyomon követéséről, tekintse meg, hogyan taníthat be modelleket a scikit-learn használatával.

    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. Töltse be a tesztadatokat Spark DataFrame-ként. Ha kötegelt előrejelzéseket szeretne létrehozni az előző lépésben betanított modellel, spark dataframe-ként kell tesztelnie az adatokat. Az alábbi kódban szereplő test változó értékét a saját adataival helyettesítheti.

    # You can substitute "test" below with your own data
    test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
    
  3. Hozzon létre egy objektumot MLFlowTransformer a modell következtetéshez való betöltéséhez. Ha objektumot MLFlowTransformer szeretne létrehozni kötegelt előrejelzések létrehozásához, tegye a következőket:

    • adja meg, hogy a test DataFrame mely oszlopaira van szüksége modellbemenetként (ebben az esetben mindegyikben),
    • válasszon nevet az új kimeneti oszlopnak (ebben az esetben predictions), és
    • adja meg a megfelelő modellnevet és modellverziót az előrejelzések létrehozásához.

    Ha saját modellt használ, cserélje le az értékeket a bemeneti oszlopokra, a kimeneti oszlop nevére, a modell nevére és a modell verziójára.

    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. Előrejelzések létrehozása a PREDICT függvénnyel. A PREDICT függvény meghívásához használhatja a Transformer API-t, a Spark SQL API-t vagy egy Felhasználó által definiált PySpark-függvényt (UDF). A következő szakaszok bemutatják, hogyan hozhat létre kötegelt előrejelzéseket az előző lépésekben meghatározott tesztadatokkal és modellel a PREDICT meghívásának különböző módszereivel.

PREDICT a Transformer API-val

Az alábbi kód meghívja a PREDICT függvényt a Transformer API-val. Ha saját modellt használ, helyettesítse be a modell értékeit, és tesztelje az adatokat.

# You can substitute "model" and "test" below with values  
# for your own model and test data 
model.transform(test).show()

PREDICT a Spark SQL API-val

Az alábbi kód meghívja a PREDICT függvényt a Spark SQL API-val. Ha saját modellt használ, cserélje le a , model_versionés features értékeket model_namea modell nevére, a modell verziójára és a funkcióoszlopokra.

Megjegyzés

Ahhoz, hogy a Spark SQL API-val előrejelzéseket generáljon, még mindig létre kell hoznia egy MLFlowTransformer objektumot (a 3. lépésben leírtak szerint).

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()

ELŐREJELZÉS felhasználó által definiált függvénnyel

Az alábbi kód meghívja a PREDICT függvényt egy PySpark UDF-sel. Ha saját modellt használ, helyettesítse be a modell és a funkciók értékeit.

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-kód létrehozása egy modell elemlapjáról

Bármelyik modell elemoldalán az alábbi lehetőségek közül választhat, hogy elkezdjen kötegelt előrejelzéseket generálni egy adott modellverzióhoz a PREDICT használatával.

  • Interaktív felhasználói felület használata PREDICT-kód létrehozásához
  • Kódsablon másolása jegyzetfüzetbe, és a paraméterek testreszabása saját maga

Interaktív felhasználói felület használata

Az irányított felhasználói felület végigvezeti a forrásadatok pontozáshoz való kiválasztásának lépésein, az adatok helyes leképezéséhez a modell bemeneteihez, megadhatja a modell kimeneteinek célját, és létrehozhat egy jegyzetfüzetet, amely a PREDICT használatával hoz létre és tárol előrejelzési eredményeket.

Az irányított felület használatához

  1. Nyissa meg az adott modellverzió elemoldalát.

  2. Válassza a Modell alkalmazása varázslóban lehetőséget a Modell alkalmazása legördülő listából.

    Képernyőkép a modell elemoldaláról való alkalmazásának kéréséről.

    A kijelölés megnyitja a "Modell-előrejelzések alkalmazása" ablakot a "Bemeneti tábla kiválasztása" lépésben.

  3. Válasszon ki egy bemeneti táblát az aktuális munkaterület egyik lakehouse-jából.

    Képernyőkép a modell-előrejelzések beviteli táblázatának kiválasztására szolgáló lépésről.

  4. Válassza a Tovább gombot a "Bemeneti oszlopok leképezése" lépéshez.

  5. Képezze le az oszlopneveket a forrástáblából a modell bemeneti mezőire, amelyeket a modell aláírásából vett le. Meg kell adnia egy bemeneti oszlopot a modell összes kötelező mezőjéhez. Emellett a forrásoszlopok adattípusainak meg kell egyeznie a modell várt adattípusával.

    Tipp

    A varázsló előre kitölti ezt a leképezést, ha a bemeneti tábla oszlopainak nevei megegyeznek a modellaajánlóban naplózott oszlopnevekkel.

    Képernyőkép a modell-előrejelzések bemeneti oszlopainak leképezésére szolgáló lépésről.

  6. Válassza a Tovább gombot a "Kimeneti tábla létrehozása" lépéshez.

  7. Adjon nevet egy új táblának az aktuális munkaterület kiválasztott Lakehouse-jában. Ez a kimeneti tábla a modell bemeneti értékeit a hozzáfűzött előrejelzési értékekkel együtt tárolja. Alapértelmezés szerint a kimeneti tábla ugyanabban a Lakehouse-ban lesz létrehozva, mint a bemeneti tábla, de a cél Lakehouse módosításának lehetősége is elérhető.

    Képernyőkép a modell-előrejelzések kimeneti táblázatának létrehozására szolgáló lépésről.

  8. Válassza a Tovább gombot a "Kimeneti oszlopok leképezése" lépéshez.

  9. A megadott szövegmező(k) használatával nevezze el a modell előrejelzéseit tároló kimeneti táblában lévő oszlop(ok) nevét.

    Képernyőkép a modell-előrejelzések kimeneti oszlopainak leképezésére szolgáló lépésről.

  10. Válassza a Tovább gombot a "Jegyzetfüzet konfigurálása" lépéshez.

  11. Adjon nevet egy új jegyzetfüzetnek, amely a létrehozott PREDICT-kódot fogja futtatni. A varázsló ekkor megjeleníti a létrehozott kód előnézetét. A kódot átmásolhatja a vágólapra, és tetszés szerint beillesztheti egy meglévő jegyzetfüzetbe.

    Képernyőkép a jegyzetfüzet modell-előrejelzésekhez való konfigurálásának lépéséről.

  12. Válassza a Tovább gombot a "Véleményezés és befejezés" lépéshez.

  13. Tekintse át a részleteket az összefoglaló oldalon, és válassza a Jegyzetfüzet létrehozása lehetőséget, hogy hozzáadja az új jegyzetfüzetet a létrehozott kóddal a munkaterülethez. A rendszer közvetlenül a jegyzetfüzetbe viszi, ahol futtathatja a kódot az előrejelzések létrehozásához és tárolásához.

    Képernyőkép a modell-előrejelzések áttekintési és befejezési lépéséről.

Testre szabható kódsablon használata

Kódsablon használata kötegelt előrejelzések létrehozásához:

  1. Nyissa meg az adott modellverzió elemoldalát.
  2. A Modell alkalmazása legördülő menüben válassza a Kód másolása elemet az alkalmazáshoz. A kijelöléssel átmásolhat egy testre szabható kódsablont.

Ezt a kódsablont beillesztheti egy jegyzetfüzetbe, hogy kötegelt előrejelzéseket hozzon létre a modellel. A kódsablon sikeres futtatásához manuálisan kell lecserélnie a következő értékeket:

  • <INPUT_TABLE>: A modell bemeneteit biztosító tábla fájlelérési útja
  • <INPUT_COLS>: Oszlopnevek tömbje a bemeneti táblából a modellbe való betöltéshez
  • <OUTPUT_COLS>: Egy új oszlop neve a kimeneti táblában, amely előrejelzéseket fog tárolni
  • <MODEL_NAME>: Az előrejelzések létrehozásához használni kívánt modell neve
  • <MODEL_VERSION>: Az előrejelzések létrehozásához használni kívánt modell verziója
  • <OUTPUT_TABLE>: Az előrejelzéseket tároló tábla fájlelérési útja

Képernyőkép a modell-előrejelzések copy-code sablonról.

import mlflow 
from synapse.ml.predict import MLFlowTransformer 
 
df = spark.read.format("delta").load( 
    <INPUT_TABLE> 
) 
 
model = MLFlowTransformer( 
    inputCols=<INPUT_COLS>, 
    outputCol=<OUTPUT_COLS>, 
    modelName=<MODEL_NAME>, 
    modelVersion=<MODEL_VERSION> 
) 
df = model.transform(df) 
 
df.write.format('delta').mode("overwrite").save( 
    <OUTPUT_TABLE> 
)  

Következő lépések