Del via


Administrer MLflow-modeller på tværs af arbejdsområder og platforme

Produktionsmaskinlæring kræver mere end blot at træne en god model — du har brug for pålidelige arbejdsgange for at flytte modeller fra udvikling gennem validering til produktion. Cross-workspace logging i Microsoft Fabric muliggør to nøglescenarier:

  • Byg end-to-end MLOps-workflows. Træn og eksperimentér i et udviklingsarbejdsområde, valider i et testarbejdsområde, og udrul til et produktionsbetjenende arbejdsområde — alt sammen ved brug af standard MLflow API'er. Denne adskillelse af miljøer hjælper teams med at håndhæve kvalitetsgates og opretholde klare auditspor fra eksperimentering til produktion.

  • Bring eksisterende ML-aktiver ind i Fabric. Hvis du allerede har trænede modeller i Azure Databricks, Azure Machine Learning, et lokalt miljø eller en anden platform, der understøtter MLflow, kan du logge disse eksperimenter og modeller direkte ind i et Fabric-arbejdsområde. Det gør det nemt at samle dine ML-artefakter ét sted uden at genopbygge dine træningspipelines.

Cross-workspace logging fungerer gennem pakken synapseml-mlflow, som leverer et Fabric-kompatibelt MLflow-tracking-plugin. Du autentificerer dig med dit målarbejdsområde, sætter tracking-URI'en og bruger standard MLflow-kommandoer — den samme kode, du allerede kender.

Bemærkning

Cross-workspace logging fokuserer på kode-først-oplevelsen. UI-integration til tværarbejdspladsscenarier vil blive adresseret i en fremtidig version.

Forudsætninger

Tips

Cross-workspace logging understøttes i arbejdsområder med udgående adgangsbeskyttelse aktiveret. Cross-workspace logging til et andet arbejdsområde kræver et administreret privat endpoint. Logging inden for samme arbejdsområde og fra ekstern Fabric fungerer uden yderligere konfiguration.

Installer MLflow-plugin'et

synapseml-mlflow-pakken muliggør tværgående arbejdsområde-logning ved at levere Fabric MLflow-tracking-plugin. Vælg installationskommandoen baseret på dit miljø:

Vigtigt!

MLflow 3 understøttes endnu ikke. Du skal fastgøre mlflow-skinny til version 2.22.2 eller tidligere.

Brug denne kommando i en Fabric-notebook for at installere pakken med online notebook-afhængigheder.

%pip install -U "synapseml-mlflow[online-notebook]" "mlflow-skinny<=2.22.2"

Efter installationen genstarter du kernen, før du kører den resterende kode.

Log MLflow-objekter til et andet Fabric-arbejdsområde

I dette scenarie kører du en notesbog i ét Fabric-arbejdsområde (kilde) og logger eksperimenter og modeller til et andet Fabric-arbejdsområde (mål).

Indstil målarbejdsområdet

Sæt miljøvariablen MLFLOW_TRACKING_URI til at pege på dit målarbejdsområde:

import os

target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri

Log-eksperimenter og modeller

Opret et eksperiment og log et run med parametre, metrikker og en model:

import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

# Create or set the experiment in the target workspace
EXP_NAME = "my-cross-workspace-experiment"
MODEL_NAME = "my-cross-workspace-model"
mlflow.set_experiment(EXP_NAME)

with mlflow.start_run() as run:
    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)

    score = lr.score(X, y)
    signature = infer_signature(X, y)

    mlflow.log_params({
        "objective": "classification",
        "learning_rate": 0.05,
    })
    mlflow.log_metric("score", score)

    mlflow.sklearn.log_model(lr, "model", signature=signature)

    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        MODEL_NAME
    )

Efter kørslen er afsluttet, vises eksperimentet og den registrerede model i det målrettede arbejdsområde.

Flyt MLflow-objekter mellem Fabric-arbejdsområder

I dette scenarie logger du først objekter i kildearbejdsområdet, downloader derefter artefakterne og logger dem igen til målarbejdsområdet. Dette er nyttigt, når du skal forfremme en trænet model fra et udviklingsarbejdsområde til et produktionsarbejdsområde.

Trin 1: Log objekter i kildearbejdsområdet

import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

# Log to the current (source) workspace
EXP_NAME = "source-experiment"
mlflow.set_experiment(EXP_NAME)

with mlflow.start_run() as run:
    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)

    signature = infer_signature(X, y)
    mlflow.sklearn.log_model(lr, "model", signature=signature)

    source_run_id = run.info.run_id

Trin 2: Download artefakter fra kilde-run'en

import mlflow.artifacts

# Download the model artifacts locally
local_artifact_path = mlflow.artifacts.download_artifacts(
    run_id=source_run_id,
    artifact_path="model"
)

Trin 3: Gen-log artefakter til målarbejdsområdet

import os

target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri

TARGET_EXP_NAME = "promoted-experiment"
TARGET_MODEL_NAME = "promoted-model"
mlflow.set_experiment(TARGET_EXP_NAME)

with mlflow.start_run() as run:
    mlflow.log_artifacts(local_artifact_path, "model")
    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        TARGET_MODEL_NAME
    )

Log MLflow-objekter fra ekstern Fabric

Du kan logge MLflow-eksperimenter og modeller til et Fabric-arbejdsområde fra ethvert miljø, hvor du bygger dine modeller, herunder:

  • Lokale maskiner — VS Code, Jupyter-notebooks eller ethvert lokalt Python-miljø.
  • Azure Databricks — Databricks, notebooks og jobs.
  • Azure Machine Learning — Azure ML-beregningsinstanser og pipelines.
  • Enhver anden platform — Ethvert miljø, der understøtter Python og MLflow.

Trin 1: Installer pakken

Installer synapseml-mlflow pakken i dit miljø:

pip install -U "synapseml-mlflow" "mlflow-skinny<=2.22.2"

Trin 2: Autentificer med Fabric

Vælg en autentificeringsmetode baseret på dit miljø:

Brug denne metode til lokale udviklingsmiljøer med browseradgang, såsom VS Code eller Jupyter.

from fabric.analytics.environment.credentials import SetFabricAnalyticsDefaultTokenCredentialsGlobally
from azure.identity import DefaultAzureCredential

SetFabricAnalyticsDefaultTokenCredentialsGlobally(
    credential=DefaultAzureCredential(exclude_interactive_browser_credential=False)
)

Trin 3: Sæt målarbejdsområde og log MLflow-objekter

Efter autentificering sætter du tracking URI'en til at pege på dit mål-Fabric-arbejdsområde og logger eksperimenter og modeller ved hjælp af standard MLflow API'er:

import os
import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri

EXP_NAME = "external-experiment"
MODEL_NAME = "external-model"
mlflow.set_experiment(EXP_NAME)

with mlflow.start_run() as run:
    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)

    signature = infer_signature(X, y)
    mlflow.log_metric("score", lr.score(X, y))
    mlflow.sklearn.log_model(lr, "model", signature=signature)

    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        MODEL_NAME
    )

Brug kryds-arbejdsområde-logging med beskyttelse mod udgående adgang

Hvis dit arbejdsområde har udgående adgangsbeskyttelse aktiveret, kræver krydsarbejdsområde-logging et tværarbejdsområde-administreret privat endpoint fra kildearbejdsområdet til målarbejdsområdet. Logging inden for samme arbejdsområde og logging fra ekstern Fabric (lokale maskiner, Azure Databricks, Azure Machine Learning) fungerer uden yderligere konfiguration.

For detaljer om understøttede scenarier og nødvendig konfiguration, se Workspace outbound access protection for Data Science.

Installer pakken i et arbejdsområde med OAP

Standardkommandoen %pip install kræver udgående internetadgang, som er blokeret i OAP-aktiverede arbejdsområder. For at installere synapseml-mlflow pakken, download den først fra et ikke-OAP-miljø, og upload den derefter til lakehouse.

Trin 1: Download pakken Download synapseml-mlflow-pakken fra en maskine med internetadgang.

pip download synapseml-mlflow[online-notebook]

Trin 2: Upload de downloadede filer Upload de downloadede filer til lakehouse i dit OAP-aktiverede arbejdsområde. Upload alle .whl filer til Filer-sektionen i søhuset (for eksempel, ). /lakehouse/default/Files

Trin 3: Installer fra lakehouse-stien i din Fabric notesbog

%pip install --no-index --find-links=/lakehouse/default/Files "synapseml-mlflow[online-notebook]>2.0.0" "mlflow-skinny<=2.22.2" --pre

Trin 4: Sæt tracking-URI'en til at bruge det administrerede private endpoint

Hvis dit nuværende arbejdsområde har OAP aktiveret, skal du konfigurere et tværarbejdsområde-administreret privat endpoint fra kildearbejdsområdet til målarbejdsområdet og dirigere tracking URI gennem det private endpoint.

import os
from fabric.analytics.environment.context import FabricContext, InternalContext

context = FabricContext(workspace_id=target_workspace_id, internal_context=InternalContext(is_wspl_enabled=True))
print(context.pbi_shared_host)
# You need to set up and use this private endpoint if your current workspace has OAP enabled

os.environ["MLFLOW_TRACKING_URI"] = f"sds://{context.pbi_shared_host}/v1/workspaces/{target_workspace_id}/mlflow"

Kendte begrænsninger

  • SKRIVE-tilladelse kræves. Du skal have SKRIVE-tilladelse på det målrettede arbejdsområde.
  • Cross-workspace lineage understøttes ikke. Du kan ikke se relationer mellem notesbøger, eksperimenter og modeller, når disse objekter logges fra forskellige arbejdsområder.
  • Kildenotesbogen er ikke synlig i målarbejdsområdet. Kildenotesbogen vises ikke i målarbejdsområdet. På artefaktdetaljer og listesider er linket til kildenotesbogen tomt.
  • Item snapshots understøttes ikke. ML-eksperimenter eller modeller, der er logget til et andet arbejdsområde, vises ikke i det kildekørte notebook-item snapshot.
  • Store sprogmodeller understøttes ikke. Cross-workspace logging understøtter ikke store sprogmodeller (LLM'er).