Del via


Scoring af model til maskinel indlæring med PREDICT i Microsoft Fabric

Microsoft Fabric gør det muligt at operationalisere maskinlæringsmodeller ved at bruge den skalerbare PREDICT-funktion. Denne funktion understøtter batchscore i et hvilket som helst beregningsprogram. Du kan generere batch-forudsigelser direkte fra en Microsoft Fabric-notebook eller fra item-siden i en given ML-model.

I denne artikel lærer du, hvordan du anvender PREDICT ved selv at skrive kode eller ved hjælp af en guidet brugergrænsefladeoplevelse, der håndterer batchscore for dig.

Forudsætninger

  • Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Prøveversion af Microsoft Fabric.

  • Log på Microsoft Fabric.

  • Skift til Fabric ved at bruge experience-switcheren nederst til venstre på din startside.

    Skærmbillede, der viser valget af Fabric i oplevelsesskifter-menuen.

Begrænsninger

  • PREDICT-funktionen understøtter i øjeblikket kun følgende ML-modelvarianter:
    • Katboost
    • Keras
    • Lys GBM
    • ONNX
    • Profet
    • Pytorch
    • Sklearn
    • Spark
    • Statsmodeller
    • TensorFlow
    • XGBoost
  • PREDICT kræver , at du gemmer ML-modeller i MLflow-formatet, med deres signaturer udfyldt.
  • PREDICT understøtter ikke ML-modeller med multi-tensor input eller output.

Foretag et kald til PREDICT fra en notesbog

PREDICT understøtter MLflow-pakkede modeller i Microsoft Fabric-registreringsdatabasen. Hvis der findes en allerede oplært og registreret ML-model i dit arbejdsområde, kan du gå til trin 2. Hvis ikke, indeholder trin 1 eksempelkode, der guider dig gennem oplæring af en eksempel på logistisk regressionsmodel. Brug denne model til at generere batch-forudsigelser ved procedurens afslutning.

  1. Oplær en ML-model, og registrer den med MLflow. Det næste kodeeksempel bruger MLflow API'en til at skabe et maskinlæringseksperiment og starter derefter en MLflow-kørsel for en scikit-learn logistisk regressionsmodel. Modelversionen gemmes derefter og registreres i Microsoft Fabric-registreringsdatabasen. For mere information om at træne modeller og følge dine egne eksperimenter, se hvordan du træner ML-modeller med 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. Indlæs testdata som en Spark DataFrame. Hvis du vil generere batchforudsigelser med ml-modellen, der er oplært i det forrige trin, skal du bruge testdata i form af en Spark DataFrame. I følgende kode skal du erstatte den test variable værdi med dine egne data.

    # You can substitute "test" below with your own data
    test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
    
  3. Opret et MLFlowTransformer objekt til indlæsning af ML-modellen til udledning. For at oprette et MLFlowTransformer objekt til at generere batch-forudsigelser, udfør disse handlinger:

    • Angiv de test DataFrame-kolonner, du har brug for som modelinput (i dette tilfælde dem alle).
    • Vælg et navn til den nye outputkolonne (i dette tilfælde predictions).
    • Angiv det korrekte modelnavn og modelversion til generering af disse forudsigelser.

    Hvis du bruger din egen ML-model, skal du erstatte værdierne for inputkolonnerne, outputkolonnenavnet, modelnavnet og modelversionen.

    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. Generér forudsigelser ved hjælp af funktionen PREDICT. Hvis du vil aktivere funktionen PREDICT, skal du bruge Transformer-API'en, Spark SQL-API'en eller en Brugerdefineret PySpark-funktion (UDF). I følgende afsnit kan du se, hvordan du genererer batchforudsigelser med de testdata og ML-modellen, der er defineret i de forrige trin, ved hjælp af de forskellige metoder til at aktivere funktionen PREDICT.

FORUDSIG med Transformer-API'en

Denne kode aktiverer funktionen PREDICT med Transformer-API'en. Hvis du bruger din egen ML-model, skal du erstatte værdierne for modellen og teste data.

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

FORUDSIG med Spark SQL-API'en

Denne kode kalder PREDICT-funktionen ved at bruge Spark SQL API'en. Hvis du bruger din egen ML-model, så erstat værdierne for model_name, model_version, og features med dit modelnavn, modelversion og featurekolonner.

Bemærk

Når du bruger Spark SQL API til at generere forudsigelser, skal du stadig oprette et MLFlowTransformer objekt, som vist i trin 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()

PREDICT med en brugerdefineret funktion

Denne kode kalder PREDICT-funktionen ved at bruge en PySpark UDF. Hvis du bruger din egen ML-model, så udskift værdierne for modellen og funktionerne.

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

Generér PREDICT-kode fra elementsiden for en ML-model

Fra item-siden i enhver ML-model kan du vælge en af disse muligheder for at starte batch-forudsigelsesgenerering for en specifik modelversion ved at bruge PREDICT-funktionen:

  • Kopier en kodeskabelon ind i en notesbog, og tilpas parametrene selv.
  • Brug en guidet UI-oplevelse til at generere PREDICT-kode.

Brug en guidet brugergrænsefladeoplevelse

Den guidede brugergrænsefladeoplevelse fører dig gennem disse trin:

  1. Vælg kildedataene til scoring.
  2. Kortlæg dataene korrekt til dine ML-modelinput.
  3. Angiv destinationen for dine modeloutput.
  4. Opret en notesbog, der bruger PREDICT til at generere og gemme forudsigelsesresultater.

Hvis du vil bruge den guidede oplevelse,

  1. Gå til elementsiden for en given ML-modelversion.

  2. På rullelisten Anvend denne version skal du vælge Anvend denne model i guiden.

    Skærmbillede, der viser den prompt, der anvender en ML-model fra elementsiden.

    På trinnet "Vælg inputtabel" åbnes vinduet "Anvend ML-modelforudsigelser".

  3. Vælg en inputtabel fra et lakehouse i dit aktuelle arbejdsområde.

    Skærmbillede, der viser valg af en inputtabel til ml-modelforudsigelser.

  4. Vælg Næste for at gå til trinnet "Tilknyt inputkolonner".

  5. Knyt kolonnenavne fra kildetabellen til ML-modellens inputfelter, som hentes fra modellens signatur. Du skal angive en inputkolonne for alle de påkrævede felter i modellen. Desuden skal datakilderne for kildekolonnen stemme overens med modellens forventede datatyper.

    Tip

    Guiden udfylder denne tilknytning på forhånd, hvis navnene på kolonnerne i inputtabellen stemmer overens med de kolonnenavne, der er logført i ML-modelsignaturen.

    Skærmbillede, der viser det trin, der knytter inputkolonner til ML-modelforudsigelser.

  6. Vælg Næste for at gå til trinnet "Opret outputtabel".

  7. Angiv et navn til en ny tabel i det valgte lakehouse i dit aktuelle arbejdsområde. I denne outputtabel gemmes inputværdierne for din ML-model, og forudsigelsesværdierne føjes til den pågældende tabel. Outputtabellen oprettes som standard i samme lakehouse som inputtabellen. Du kan ændre destination lakehouse.

    Skærmbillede, der viser det trin, der opretter en outputtabel til ML-modelforudsigelser.

  8. Vælg Næste for at gå til trinnet "Tilknyt outputkolonner".

  9. Brug de angivne tekstfelter til at navngive kolonnerne i outputtabellen, der gemmer forudsigelserne for ML-modellen.

    Skærmbillede, der viser det trin, der knytter outputkolonnerne til ML-modelforudsigelser.

  10. Vælg Næste for at gå til trinnet "Konfigurer notesbog".

  11. Angiv et navn til en ny notesbog, der kører den genererede PREDICT-kode. Guiden viser et eksempel på den genererede kode på dette trin. Hvis du vil, kan du kopiere koden til udklipsholderen og indsætte den i en eksisterende notesbog.

    Skærmbillede, der viser det trin, der konfigurerer en notesbog til ml-modelforudsigelser.

  12. Vælg Næste for at gå til trinnet "Gennemse og afslut".

  13. Gennemse oplysningerne på oversigtssiden, og vælg Opret notesbog for at føje den nye notesbog med den genererede kode til dit arbejdsområde. Du føres direkte til notesbogen, hvor du kan køre koden for at generere og gemme forudsigelser.

    Skærmbillede, der viser gennemgangs- og afslutningstrinnet for ml-modelforudsigelser.

Brug en kodeskabelon, der kan tilpasses

Sådan bruges en kodeskabelon til generering af batchforudsigelser:

  1. Gå til elementsiden for en given ML-modelversion.
  2. Vælg Kopiér kode, der skal anvendesrullelisten Anvend denne version . Valget kopierer en tilpasselig kodeskabelon.

Du kan indsætte denne kodeskabelon i en notesbog for at generere batchforudsigelser med din ML-model. For at køre kodeskabelonen korrekt, udskift manuelt følgende værdier:

  • <INPUT_TABLE>: Filstien for tabellen, der leverer input til ML-modellen.
  • <INPUT_COLS>: Et array af kolonnenavne fra inputtabellen til ML-modellen.
  • <OUTPUT_COLS>: Et navn på en ny kolonne i outputtabellen, der gemmer forudsigelser.
  • <MODEL_NAME>: Navnet på den ML-model, der bruges til at generere forudsigelser.
  • <MODEL_VERSION>: Den version af ML-modellen, der bruges til at generere forudsigelser.
  • <OUTPUT_TABLE>: Filstien for tabellen, der gemmer forudsigelserne.

Skærmbillede, der viser kopikodeskabelonen for ML-modelforudsigelser.

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
)