Gépi tanulási modellek pontozása a PREDICT funkcionalitással a Microsoft Fabricben.

Microsoft Fabric lehetővé teszi machine learning modellek üzembe helyezése a méretezhető PREDICT függvénnyel. Ez a függvény támogatja a kötegelt pontozást bármely számítási motorban. Kötegelt előrejelzéseket közvetlenül egy Microsoft Fabric jegyzetfüzetből vagy egy adott ML-modell elemlapjáról hozhat létre.

Ebben a cikkben megtudhatja, hogyan alkalmazhatja a PREDICT-t úgy, hogy saját maga ír kódot, vagy egy irányított felhasználói felület használatával, amely kezeli a kötegelt pontozást.

Előfeltételek

Korlátozások

  • A PREDICT függvény jelenleg csak a következő ML-modell-ízeket támogatja:
    • CatBoost
    • Keras
    • LightGBM
    • ONNX
    • Próféta
    • PyTorch
    • Sklearn
    • Spark
    • Statsmodels
    • TensorFlow
    • XGBoost
  • A PREDICT megköveteli , hogy az ML-modelleket MLflow formátumban mentse az aláírásukkal együtt.
  • A PREDICT nem támogatja a több tenzoros bemenetekkel vagy kimenetekkel rendelkező ML-modelleket.

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

A PREDICT támogatja az MLflow-csomagban lévő modelleket a Microsoft Fabric beállításjegyzékben. Ha már betanított és regisztrált ml-modell található a munkaterületen, ugorjon a 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. Gépi tanulási modell betanítása és regisztrálása az MLflow-jal. A következő kódminta az MLflow API használatával hoz létre egy machine learning kísérletet, majd elindít egy MLflow-futtatást egy scikit-learn logisztikai regressziós modellhez. A modellverzió ezután a Microsoft Fabric beállításjegyzékben lesz tárolva és regisztrálva. A betanítási modellekről és a saját kísérletek nyomon követéséről további információt az ML-modellek scikit-learn használatával történő betanításával kapcsolatban talál.

    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 az előző lépésben betanított ML-modellel köteg-előrejelzéseket szeretne létrehozni, akkor Spark DataFrame formájában kell tesztelni az adatokat. Az alábbi kódban cserélje le a változó értékét a test saját adataira.

    # You can substitute "test" below with your own data
    test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
    
  3. Hozzon létre egy MLFlowTransformer objektumot az ML-modell betöltésére a következtetéshez. Kötegelt előrejelzések létrehozásához hozzon létre objektumot MLFlowTransformer az alábbi műveletek végrehajtásával:

    • Adja meg a test modellbemenetként szükséges DataFrame-oszlopokat (ebben az esetben az összeset).
    • Válasszon nevet az új kimeneti oszlopnak (ebben az esetben predictions).
    • Adja meg az előrejelzések létrehozásához megfelelő modellnevet és modellverziót.

    Ha saját ml-modellt használ, cserélje le a bemeneti oszlopok, a kimeneti oszlop neve, a modell neve és a modellverzió értékeit.

    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ény használatával. A PREDICT függvény meghívásához használja a Transformer API-t, a Spark SQL API-t vagy egy PySpark felhasználó által definiált 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 definiált tesztadatokkal és ml-modellel a PREDICT függvény meghívásához használt különböző metódusokkal.

PREDICT a(z) Transformer API-val

Ez a kód meghívja a PREDICT függvényt a Transformer API-val. Ha saját ml-modellt használ, cserélje le 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 használatával

Ez a kód meghívja a PREDICT függvényt a Spark SQL API használatával. Ha saját gépi tanulási modellt használ, cserélje le a `model_name`, `model_version`, és `features` értékeket a modell nevére, a modell verziójára és a jellemzőoszlopokra.

Megjegyzés

Ha a Spark SQL API-t használja az előrejelzések létrehozásához, akkor is létre kell hoznia egy MLFlowTransformer objektumot a 3. lépésben látható módon.

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 egy felhasználó által meghatározott függvénnyel

Ez a kód egy PySpark UDF használatával hívja meg a PREDICT függvényt. Ha saját ml-modellt használ, cserélje le 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 ML-modell elemlapjáról

Bármely ML-modell elemlapján az alábbi lehetőségek közül választhat, hogy elindítsa a kötegelt előrejelzés létrehozását egy adott modellverzióhoz a PREDICT függvény használatával:

  • Másolja a kódsablont egy jegyzetfüzetbe, és saját maga szabja testre a paramétereket.
  • A PREDICT-kód létrehozásához használjon interaktív felhasználói felületet.

Irányított felhasználói felület használata

Az irányított felhasználói felület végigvezeti az alábbi lépéseken:

  1. Válassza ki a pontozás forrásadatait.
  2. Képezze le az adatokat az ML modell bemeneteire.
  3. Adja meg a modellkimenetek célhelyét.
  4. Hozzon létre egy jegyzetfüzetet, amely a PREDICT használatával hoz létre és tárol előrejelzési eredményeket.

Az irányított élmény használatához

  1. Keresse meg az adott ML-modellverzió elemoldalát.

  2. A Verzió alkalmazása legördülő menüben válassza a Modell alkalmazása varázslóban lehetőséget.

    Képernyőkép mutatja a promptot, amely az ML-modellt az elemoldaláról alkalmazza.

    A "Bemeneti tábla kiválasztása" lépésben megnyílik az "ML-modell előrejelzéseinek alkalmazása" ablak.

  3. Válasszon ki egy bemeneti táblát az aktuális munkaterület egyik tóépületéből.

    Képernyőkép az ml-modell előrejelzéseit megjelenítő beviteli táblázat kiválasztásáról.

  4. A Tovább gombra kattintva lépjen a "Bemeneti oszlopok leképezése" lépésre.

  5. Az oszlopnevek leképezése a forrástáblából az ML-modell bemeneti mezőibe, amelyeket a rendszer a modell aláírásából von le. Meg kell adnia egy bemeneti oszlopot a modell összes szükséges mezőjéhez. Emellett a forrásoszlop adattípusainak meg kell egyeznie a modell várt adattípusával.

    Tipp

    A varázsló előre feltölti ezt a leképezést, ha a bemeneti táblaoszlopok neve megegyezik az ML-modell aláírásában naplózott oszlopnevekkel.

    Képernyőkép az ml-modell előrejelzéseinek bemeneti oszlopait leképező lépésről.

  6. Válassza a Tovább lehetőséget a "Kimeneti tábla létrehozása" lépéshez.

  7. Adjon nevet egy új táblának az aktuális munkaterület kijelölt tóházában. Ez a kimeneti tábla tárolja az ML-modell bemeneti értékeit, és hozzáfűzi az előrejelzési értékeket a táblához. Alapértelmezés szerint a kimeneti tábla ugyanabban a tóházban jön létre, mint a bemeneti tábla. Módosíthatja a céltóházat.

    Képernyőkép az ml-modell előrejelzéseihez kimeneti táblát létrehozó lépésről.

  8. A Tovább gombra kattintva lépjen a "Kimeneti oszlopok leképezése" lépésre.

  9. A megadott szövegmezőkkel nevezze el az ml-modell előrejelzéseit tároló kimeneti tábla oszlopait.

    Képernyőkép az ML-modell előrejelzéseinek kimeneti oszlopait leképező lépésről.

  10. Válassza a Tovább lehetőséget a "Jegyzetfüzet konfigurálása" lépéshez.

  11. Adja meg a létrehozott PREDICT-kódot futtató új jegyzetfüzet nevét. A varázsló ekkor megjeleníti a létrehozott kód előnézetét. Ha szeretné, átmásolhatja a kódot a vágólapra, és beillesztheti egy meglévő jegyzetfüzetbe.

    Képernyőkép az ml-modell előrejelzéseit konfiguráló jegyzetfüzetet konfiguráló lépésről.

  12. Válassza a Tovább lehetőséget 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, ha 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 az ML-modell előrejelzéseinek áttekintési és befejezési lépésről.

Testre szabható kódsablon használata

Kódsablon használata tételes előrejelzések generálásához:

  1. Nyissa meg az adott ML-modellverzió elemoldalát.
  2. Válassza a Verzió alkalmazása legördülő listából a Használandó kód másolása lehetőséget. A kijelölés egy testreszabható kódsablont másol.

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

  • <INPUT_TABLE>: A táblázat fájlútvonala, amely bemeneteket biztosít az ML-modellhez.
  • <INPUT_COLS>: Oszlopnevek tömbje a bemeneti táblából az ML-modellbe való betöltéshez.
  • <OUTPUT_COLS>: Az előrejelzéseket tároló kimeneti tábla új oszlopának neve.
  • <MODEL_NAME>: Az előrejelzés létrehozásához használandó ml-modell neve.
  • <MODEL_VERSION>: Az ml-modell előrejelzés létrehozásához használt verziója.
  • <OUTPUT_TABLE>: Az előrejelzéseket tároló tábla fájlútvonala.

Képernyőkép az ML-modell előrejelzéseinek másolási kódsablonról.

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
)