Del via


Model til maskinel indlæring i Microsoft Fabric

En model til maskinel indlæring er en fil, der er oplært til at genkende visse typer mønstre. Du oplærer en model over et sæt data, og du giver den en algoritme, der bruger til at ræsonnere og lære af det pågældende datasæt. Når du har oplært modellen, kan du bruge den til at begrunde data, som den aldrig har set før, og foretage forudsigelser om disse data.

I MLflow-kan en model til maskinel indlæring indeholde flere modelversioner. Her kan hver version repræsentere en model gentagelse. I denne artikel lærer du, hvordan du interagerer med ML-modeller for at spore og sammenligne modelversioner.

Opret en model til maskinel indlæring

I MLflow omfatter modeller til maskinel indlæring et standardpakkeformat. Dette format gør det muligt at bruge disse modeller i forskellige downstreamværktøjer, herunder batchafledning på Apache Spark. Formatet definerer en konvention til lagring af en model i forskellige "varianter", som forskellige downstreamværktøjer kan forstå.

Du kan oprette en model til maskinel indlæring direkte fra fabric-brugergrænsefladen. MLflow-API'en kan også oprette modellen direkte.

Hvis du vil oprette en model til maskinel indlæring fra brugergrænsefladen, kan du:

  1. Opret et nyt datavidenskabsarbejdsområde, eller vælg et eksisterende datavidenskabsarbejdsområde.
  2. Opret et nyt arbejdsområde, eller vælg et eksisterende arbejdsområde.
  3. Du kan oprette et nyt element via arbejdsområdet eller ved hjælp af Opret.
    1. Arbejdsområde:
      1. Vælg dit arbejdsområde.
      2. Vælg Nyt element.
      3. Vælg ML-model under Analysér og oplær data. Skærmbillede, der viser, hvor du kan vælge Eksperimentér i dit arbejdsområde.
    2. Knappen Opret:
      1. Vælg Opret, som findes i ... i den lodrette menu. Skærmbillede af knappen Opret.
      2. Vælg ML-model under datavidenskab. Skærmbillede, der viser, hvor du skal vælge Eksperimentér, når du har valgt Opret.
  4. Når du har oprettet modellen, kan du begynde at tilføje modelversioner for at spore kørselsdata og parametre. Registrer eller gem eksperimentkørsler i en eksisterende model.

Du kan også oprette en model til maskinel indlæring direkte fra din oprettelsesoplevelse med mlflow.register_model()-API'en. Hvis der ikke findes en registreret model til maskinel indlæring med det angivne navn, opretter API'en den automatisk.

import mlflow

model_uri = "runs:/{}/model-uri-name".format(run.info.run_id)
mv = mlflow.register_model(model_uri, "model-name")

print("Name: {}".format(mv.name))
print("Version: {}".format(mv.version))

Administrer versioner i en model til maskinel indlæring

En model til maskinel indlæring indeholder en samling modelversioner til forenklet sporing og sammenligning. I en model kan en dataforsker navigere på tværs af forskellige modelversioner for at udforske de underliggende parametre og målepunkter. Dataeksperter kan også foretage sammenligninger på tværs af modelversioner for at identificere, om nyere modeller kan give bedre resultater.

Spor modeller til maskinel indlæring

En modelversion til maskinel indlæring repræsenterer en individuel model, der er registreret til sporing.

Skærmbillede, der viser detaljeskærmen i en model.

Hver modelversion indeholder følgende oplysninger:

  • Tidspunkt for oprettelse: Dato og klokkeslæt for modeloprettelse.
  • Kørselsnavn: Id'et for de eksperimentkørsler, der bruges til at oprette denne specifikke modelversion.
  • Hyperparameters: Hyperparameters gemmes som nøgleværdipar. Både nøgler og værdier er strenge.
  • målepunkter: Kør målepunkter, der er gemt som nøgleværdipar. Værdien er numerisk.
  • modelskema/signatur: En beskrivelse af modelinput og -output.
  • Loggede filer: Logførte filer i et hvilket som helst format. Du kan f.eks. optage billeder, miljø, modeller og datafiler.
  • tags: Metadata som nøgleværdipar til kørsler.

Anvend mærker på modeller til maskinel indlæring

MLflow-mærkning for modelversioner giver brugerne mulighed for at vedhæfte brugerdefinerede metadata til bestemte versioner af en registreret model i MLflow Model Registry. Disse mærker, der er gemt som nøgleværdipar, hjælper med at organisere, spore og skelne mellem modelversioner, hvilket gør det nemmere at administrere modellivscyklusser. Mærker kan bruges til at angive modellens formål, udrulningsmiljø eller andre relevante oplysninger, hvilket faciliterer mere effektiv modelstyring og beslutningstagning i teams.

Denne kode viser, hvordan du oplærer en RandomForestRegressor-model ved hjælp af Scikit-learn, logfører modellen og parametrene med MLflow og derefter registrerer modellen i MLflow Model Registry med brugerdefinerede mærker. Disse mærker indeholder nyttige metadata, f.eks. projektnavn, afdeling, team og projektkvartal, hvilket gør det nemmere at administrere og spore modelversionen.

import mlflow.sklearn
from mlflow.models import infer_signature
from sklearn.datasets import make_regression
from sklearn.ensemble import RandomForestRegressor

# Generate synthetic regression data
X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)

# Model parameters
params = {"n_estimators": 3, "random_state": 42}

# Model tags for MLflow
model_tags = {
    "project_name": "grocery-forecasting",
    "store_dept": "produce",
    "team": "stores-ml",
    "project_quarter": "Q3-2023"
}

# Log MLflow entities
with mlflow.start_run() as run:
    # Train the model
    model = RandomForestRegressor(**params).fit(X, y)
    
    # Infer the model signature
    signature = infer_signature(X, model.predict(X))
    
    # Log parameters and the model
    mlflow.log_params(params)
    mlflow.sklearn.log_model(model, artifact_path="sklearn-model", signature=signature)

# Register the model with tags
model_uri = f"runs:/{run.info.run_id}/sklearn-model"
model_version = mlflow.register_model(model_uri, "RandomForestRegressionModel", tags=model_tags)

# Output model registration details
print(f"Model Name: {model_version.name}")
print(f"Model Version: {model_version.version}")

Når du har anvendt mærkerne, kan du få dem vist direkte på siden med oplysninger om modelversionen. Derudover kan mærker til enhver tid tilføjes, opdateres eller fjernes fra denne side.

Skærmbillede, der viser mærker, der er anvendt på en kørsel på detaljesiden.

Sammenlign og filtrer modeller til maskinel indlæring

Hvis du vil sammenligne og evaluere kvaliteten af modeller til maskinel indlæring, kan du sammenligne parametre, målepunkter og metadata mellem valgte versioner.

Sammenlign modeller til maskinel indlæring visuelt

Du kan visuelt sammenligne kørsler i en eksisterende model. Sammenligning af visualiseringer gør det nemt at navigere mellem og sortere på tværs af flere versioner.

Skærmbillede, der viser en liste over kørsler til sammenligning.

Hvis du vil sammenligne kørsler, kan du:

  1. Vælg en eksisterende model til maskinel indlæring, der indeholder flere versioner.
  2. Vælg fanen Vis, og naviger derefter til modelliste visning. Du kan også vælge indstillingen for at vis modelliste direkte fra detaljevisningen.
  3. Du kan tilpasse kolonnerne i tabellen. Udvid ruden Tilpas kolonner. Herfra kan du vælge de egenskaber, målepunkter, mærker og hyperparametre, du vil se.
  4. Endelig kan du vælge flere versioner for at sammenligne deres resultater i ruden til sammenligning af målepunkter. I denne rude kan du tilpasse diagrammerne med ændringer af diagramtitlen, visualiseringstypen, X-aksen, Y-aksen og meget mere.

Sammenlign modeller til maskinel indlæring ved hjælp af MLflow-API'en

Datateknikere kan også bruge MLflow til at søge efter flere modeller, der er gemt i arbejdsområdet. Besøg dokumentationen til MLflow for at udforske andre MLflow-API'er til modelinteraktion.

from pprint import pprint

client = MlflowClient()
for rm in client.list_registered_models():
    pprint(dict(rm), indent=4)

Anvend modeller til maskinel indlæring

Når du har oplært en model på et datasæt, kan du anvende denne model på data, som den aldrig har set for at generere forudsigelser. Vi kalder denne model use-teknik scoring eller udlede. Du kan få flere oplysninger om Microsoft Fabric-modelscore i næste afsnit.