Hallinnoi MLflow-malleja työtiloilla ja alustoilla

Tuotantokoneoppiminen vaatii enemmän kuin hyvän mallin kouluttamista. Tarvitset luotettavia työnkulkuja mallien siirtämiseen kehityksestä validoinnin kautta tuotantoon. Microsoft Fabric -tilojen välinen lokitus mahdollistaa kaksi keskeistä skenaariota:

  • Rakenna päästä päähän -MLOps-työnkulkuja. Kouluta ja kokeile kehitystyötilassa, validoi testityötilassa ja otat käyttöön tuotantopalvelutyötilaan käyttämällä standardeja MLflow-rajapintoja. Tämä ympäristöjen erottelu auttaa tiimejä valvomaan laatuportteja ja ylläpitämään selkeitä tarkastusjälkiä kokeilusta tuotantoon.

  • Tuo olemassa olevat koneoppimisresurssit Fabric:iin. Jos olet jo kouluttanut malleja Azure Databricksissa, Azure Machine Learning:ssä, paikallisessa ympäristössä tai muussa MLflow'ta tukevassa alustassa, voit kirjata kokeet ja mallit suoraan Fabric-työtilaan. Voit helposti yhdistää koneoppimisen artefaktit yhteen paikkaan ilman, että voit rakentaa koulutusputkia uudelleen.

Työtilan välinen lokitus toimii synapseml-mlflow-paketin kautta, joka tarjoaa Fabric-yhteensopivan MLflow-seurantalisäosan. Tunnistat kohteen työtilan, asetat seuranta-URI:n ja käytät tavallisia MLflow-komentoja.

Muistio

Työtilan välinen lokitus keskittyy koodilähtöiseen kokemukseen. Käyttöliittymän integraatio monipuolisiin työtilatilanteisiin käsitellään tulevassa julkaisussa.

Edellytykset

Fabric-muistikirjan skenaarioissa luo uusi muistikirja ja liitä järvitalo ennen kuin ajat mitään koodia.

Vinkki

Työtilojen välinen lokitus on tuettu työtiloissa, joissa on ulospäin suuntautuvan pääsyn suojaus käytössä. Työtilan välinen lokitus toiseen työtilaan vaatii hallitun yksityisen päätepisteen. Kirjautuminen samassa työtilassa ja Fabric:n ulkopuolelta toimii ilman lisäasetuksia.

Asenna MLflow-lisäosa

synapseml-mlflow-paketti mahdollistaa työtilan välisen lokituksen tarjoamalla Fabric MLflow-seurantalisäosan. Valitse asennuskomento ympäristösi mukaan.

Tärkeää

MLflow 3 ei ole tällä hetkellä tuettu. Sinun täytyy kiinnittää mlflow-skinny versio 2.22.2 tai sitä vanhempi.

Fabric-muistikirjalle käytä tätä komentoa asentaaksesi paketti online-muistikirjan riippuvuuksilla:

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

Asennuksen jälkeen käynnistä ydin uudelleen ennen jäljellä olevan koodin suorittamista.

Lokitaan MLflow-objektit toiseen Fabric-työtilaan

Tässä tilanteessa ajat muistikirjan yhdessä Fabric-työtilassa (lähde) ja kirjaat kokeet ja mallit toiseen Fabric-työtilaan (target).

Aseta kohdetyötila

Osoita kohdetyötilaasi asettamalla ympäristömuuttuja MLFLOW_TRACKING_URI :

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

Lokikokeet ja mallit

Luo koe ja kirjaa suoritus parametreilla, mittareilla ja mallilla:

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
    )

Suorituksen päätyttyä koe ja rekisteröity malli ilmestyvät kohdetyötilaan.

Siirrä MLflow-objekteja Fabric-työtilojen välillä

Tässä tilanteessa ensin lokitaan objektit lähdetyötilaan, sitten ladataan artefaktit ja kirjataan ne uudelleen kohdetyötilaan. Tämä menetelmä on hyödyllinen, kun sinun täytyy edistää koulutettua mallia kehitystyötilasta tuotantotyötilaan.

Vaihe 1: Lokia objektit lähdetyötilassa

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

Vaihe 2: Lataa artefakteja lähdejuoksulta

import mlflow.artifacts

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

Vaihe 3: Kirjaa artefaktit uudelleen kohdetyötilaan

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
    )

Lokitaan MLflow-objektit Fabric:n ulkopuolelta

Voit kirjata MLflow-kokeiluja ja malleja Fabric-työtilaan mistä tahansa ympäristöstä, jossa rakennat mallejasi, mukaan lukien:

  • Paikallisia koneita. VS Code, Jupyter-muistikirjat tai mikä tahansa paikallinen Python-ympäristö.
  • Azure Databricks. Azure Databricks notebooks ja jobs.
  • Azuren koneoppiminen. Azure Machine Learning laskee instansseja ja putkistoja.
  • Mikä tahansa muu alusta. Kaikki ympäristöt, jotka tukevat Python- ja MLflow-ohjelmia.

Vaihe 1: Asenna paketti

Asenna synapseml-mlflow paketti ympäristöösi:

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

Vaihe 2: Autentikointi Fabric -menetelmällä

Valitse todennusmenetelmä ympäristösi mukaan:

Käytä tätä menetelmää paikallisissa kehitysympäristöissä, joissa on selainkäyttö, kuten VS Code tai Jupyter.

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

SetFabricAnalyticsDefaultTokenCredentialsGlobally(
    credential=DefaultAzureCredential(exclude_interactive_browser_credential=False)
)

Vaihe 3: Aseta kohdetyötila ja kirjaa MLflow-objektit

Tunnistautumisen jälkeen aseta seuranta-URI osoittamaan kohde-Fabric-työtilaasi ja kirjaa kokeet ja mallit käyttäen standardeja MLflow-rajapintoja:

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
    )

Käytä työtilan välistä lokitusta ulospäin suuntautuvan pääsyn suojauksella

Jos työtilassasi on outbound access protection käytössä, työtilan välinen lokitus vaatii monikäyttöisen hallitun yksityisen päätepisteen lähdetyötilasta kohdetyötilaan.

Saman työtilan sisällä kirjautuminen ja ulkopuolelta Fabric-sivustolta (paikalliset koneet, Azure Databricks, Azure Machine Learning) kirjautuminen toimii ilman lisäasetuksia.

Lisätietoja tuetuista skenaarioista ja vaadituista konfiguraatioista löytyy Workspace outbound access protection for Fabric Data Science.

Asenna paketti OAP-yhteensopivaan työtilaan

Vakiokomento %pip install vaatii ulospäin suuntautuvan internet-yhteyden, joka on estetty työtiloissa, joissa ulospäin pääsyn suojaus (OAP) on käytössä. Paketin asentamiseksi synapseml-mlflow lataa se ensin ei-OAP-ympäristöstä ja lataa se sitten järventaloon.

  1. Lataa synapseml-mlflow paketti koneelta, jossa on internet-yhteys.

    pip download synapseml-mlflow[online-notebook]
    
  2. Lataa ladatut tiedostot järventaloon OAP-yhteensopivassa työtilassasi. Lataa kaikki .whl tiedostot järvenrakennuksen Tiedostot-osioon (esimerkiksi, ). /lakehouse/default/Files

  3. Asenna Lakehouse-polulta Fabric-muistikirjassasi:

    %pip install --no-index --find-links=/lakehouse/default/Files "synapseml-mlflow[online-notebook]>2.0.0" "mlflow-skinny<=2.22.2" --pre
    
  4. Aseta seuranta-URI käyttämään hallittua yksityistä päätepistettä. Jos nykyisessä työtilassasi on OAP käytössä, sinun täytyy konfiguroida monikäyttöinen hallittu yksityinen päätepiste lähdetyötilasta kohdetyötilaan. Sitten reititä seuranta-URI yksityisen päätepisteen kautta.

    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"
    

Tunnetut rajoitukset

  • Kirjoituslupa vaaditaan. Sinulla täytyy olla kirjoitusoikeus kohdetyötilaan.
  • Työtilan välinen linjaus ei ole tuettu. Et voi tarkastella vihkojen, kokeiden ja mallien välisiä suhteita, kun nämä objektit on kirjattu eri työtiloista.
  • Lähdemuistikirja ei näy kohdetyötilassa. Lähdemuistikirja ei näy kohdetyötilassa. Artefaktien yksityiskohdissa ja listasivuilla linkki lähdemuistikirjaan on tyhjä.
  • Item snapshotit eivät ole tuettuja. Koneoppimiskokeet tai mallit, jotka on kirjattu toiseen työtilaan, eivät näy lähdekoodin muistikirjan snapshotissa.
  • Suuria kielimalleja ei tueta. Työtilan välinen lokitus ei tue suuria kielimalleja (LLM).