MLflow 3 Fabric Data Sciencessa

Microsoft Fabric tukee MLflow'ta aina versioon 3.1 asti, joka on avoimen lähdekoodin koneoppimisen seuranta-alusta. Tämän tuen avulla voit käyttää seuraavia ominaisuuksia koneoppimisen ja generatiivisen tekoälyn työkuormien seuraamiseen ja tarkastamiseen Fabric:ssa:

  • LoggedModel, joka esiteltiin MLflow 3:ssa, on ensiluokkainen entiteetti, joka yhdistää jokaisen mallin sen lähdesuoritukseen, koodiin, konfiguraatioon, parametreihin, mittareihin ja aineistoihin.
  • Jäljitykset , jotka tallentavat kehotteet, vastaukset, työkalukutsut, viiveet ja tokenien käytön suurista kielimalleista (LLM) ja generatiivisista tekoälysovelluksista.

Tässä artikkelissa selitetään, mitä muutoksia MLflow 3:ssa tapahtuu, miten Fabric:n uusia ominaisuuksia käytetään ja miten siirtyä MLflow 2.x:stä.

Animoitu GIF MLflow 3 -kokeesta vuodelta Fabric, jossa näytetään Runs, Models and Traces -välilehdet Tallenna kirjattu malli ja Vertaile logged models -kortteja.

Edellytykset

  • Hanki Microsoft Fabric -tilaus. Voit myös rekisteröityä microsoft fabric -kokeiluversion maksuttomaan .

  • Kirjaudu sisään Microsoft Fabric .

  • Vaihda Fabric-tilaan käyttämällä etusivun vasemmassa alakulmassa olevaa kokemuskytkintä.

    Kuvakaappaus, joka näyttää kankaan valinnan kokemusvaihtovalikossa.

  • Työtila, joka on päivitetty uusimpaan koneoppimisen seurantakokemukseen. Tarkistaaksesi kelpoisuuden ja päivityksen, katso Päivitä koneoppimisen seurantajärjestelmäsi.

  • mlflow versio 3.0 tai uudempi. Fabric-muistikirjat toimitetaan oletuksena MLflow 2.x:n kanssa, joten sinun täytyy päivittää MLflow 3:een ajamalla seuraava komento muistikirjassasi:

    %pip install "synapseml-mlflow[online-notebook]>=2.0.3" "mlflow-skinny==3.1.0" "opentelemetry-api<=1.40.0"
    

    Sama komento asentaa myös päivitetyn synapseml-mlflow -paketin työtila- ja ulkopuolisiin Fabric-tilanteisiin.

Mitä muutoksia MLflow 3:ssa tapahtuu

Alue MLflow 2.x MLflow 3
Malliloki-API log_model(model, artifact_path="model") log_model(model, name="my_model", params={...}) (perintö artifact_path toimii edelleen)
Mallin esitys Esine, joka on kiinnitetty juoksuun Ensimmäisen luokan LoggedModel-entiteetti , joka on linkitetty suoritukseen
Experiment UI Yksittäisen kokeen näkymä Koneoppimiskokeet vs tekoälykokeet, lisäksi Lokimallit -osio ja Jäljet-välilehti
Generatiivinen tekoälyn havaittavuus Ei saatavissa Jäljet kehotteista, vastauksista, työkalukutsuista, viiveestä ja tokeneista

MLflow 3 on taaksepäin yhteensopiva MLflow 2.x -työnkulkujen kanssa. Olemassa olevat kokeet, suoritukset ja muistikirjat, jotka käyttävät mlflow>=2 niitä, jatkavat toimintaansa ilman muutoksia.

Valitse kokeen tyyppi

Kun luot kokeen, nauha sisältää kokeen tyyppisen kytkimen:

  • ML-kokeilu — klassinen seurantapinta ajoille, parametreille, mittareille ja LoggedModeleille. Käytä tätä tyyppiä perinteisissä koneoppimistyönkulkuissa.
  • Tekoälykokeilu — jäljityspainotteinen pinta, joka on viritetty generatiivisille tekoälykuormille. Traces-välilehti on etualalla, ja run-yksityiskohtanäkymä korostaa kehotuksia, työkalukutsuja ja tokenien käyttöä.

Ennen MLflow 3:ta luodut olemassa olevat kokeet käyttävät oletuksena ML-koetyyppiä . Voit vaihtaa tyyppejä nauhasta milloin tahansa.

Kuvakaappaus kokeen nauhan pudotusvalikosta, jolla voi vaihtaa koneoppimiskokeen ja tekoälykokeiden välillä.

Aloita muistikirjan mallipohjasta

Kaksi muistikirjapohjaa tulee julkaisun mukana, jotta saat toimimaan yhdellä klikkauksella. Kun avaat kokeen, jossa ei vielä ole suorituksia, tyhjä kokeen sivu paljastaa kaksi aloituskorttia:

  • Uusi mallipohja — kokonaisvaltainen ElasticNet-esimerkki, joka esittelee uuden LoggedModel-rajapinnan, mukaan lukien params=, get_logged_model(), ja mittarit, jotka liittyvät sekä LoggedModeliin että tietoaineistoon.
  • New trace template — kattaa @mlflow.trace sisustajat, OpenAI:n autologingin Fabric tunnuksilla, LangChain-agentit sekä OpenAI Agents SDK:n.

Valitse kortti avataksesi esikonfiguroidun muistikirjan, jossa on oikeat MLflow-lisäosan versiot ja tunnistautuminen.

Kuvakaappaus tyhjästä kokeen sivusta, jossa on Uusi mallipohja ja Uusi jäljen mallipohjan aloituskortit korostettuina.

Loga malli LoggedModelilla

MLflow 3:ssa jokainen kutsu luo log_model()LoggedModel-yksikön , joka on linkitetty lähdesuoritukseen, sen parametreihin, mittareihin ja tietoaineistoihin, joilla se on koulutettu. Seuraava esimerkki kouluttaa ElasticNet-mallin Iris-aineistolla, kirjaa sen LoggedModelina ja linkittää arviointimittarit takaisin kyseiseen LoggedModeliin ja aineistoon:

import pandas as pd
from sklearn.linear_model import ElasticNet
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

import mlflow
import mlflow.sklearn
from mlflow.entities import Dataset

mlflow.set_experiment("mlflow3-logged-model-demo")

def compute_metrics(actual, predicted):
    rmse = mean_squared_error(actual, predicted)
    mae = mean_absolute_error(actual, predicted)
    r2 = r2_score(actual, predicted)
    return rmse, mae, r2

iris = load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df["quality"] = (iris.target == 2).astype(int)
train_df, test_df = train_test_split(iris_df, test_size=0.2, random_state=42)

with mlflow.start_run() as training_run:
    # Wrap the training data as an MLflow Dataset so metrics can be linked to it.
    train_dataset: Dataset = mlflow.data.from_pandas(train_df, name="train")
    train_x = train_dataset.df.drop(["quality"], axis=1)
    train_y = train_dataset.df[["quality"]]

    lr = ElasticNet(alpha=0.5, l1_ratio=0.5, random_state=42)
    lr.fit(train_x, train_y)

    # Log the model. `params=` attaches hyperparameters directly to the LoggedModel.
    model_info = mlflow.sklearn.log_model(
        sk_model=lr,
        name="elasticnet",
        params={"alpha": 0.5, "l1_ratio": 0.5},
        input_example=train_x,
    )

    # Retrieve the LoggedModel to inspect its identifier and parameters.
    logged_model = mlflow.get_logged_model(model_info.model_id)
    print(logged_model.model_id, logged_model.params)

    # Compute metrics and link them to both the LoggedModel and the training dataset.
    predictions = lr.predict(train_x)
    rmse, mae, r2 = compute_metrics(train_y, predictions)
    mlflow.log_metrics(
        metrics={"rmse": rmse, "r2": r2, "mae": mae},
        model_id=logged_model.model_id,
        dataset=train_dataset,
    )

Suorituksen päätyttyä malli ilmestyy LoggedModelina kahdessa paikassa:

  • Lokimallien osio kokeen sivulla.
  • Log-mallit -välilehti juoksun yksityiskohdassa.

Kuvakaappaus suoritusyksityiskohdista, jossa mallit ja jäljet -osio on korostettu, näyttäen linkitetyn LoggedModelin.

Tarkista loggedModel

Valitse listasta LoggedModel avataksesi sen yksityiskohtasivun. Yksityiskohtainen sivu näyttää:

  • Mallille tallennetut parametrit ja mittarit .
  • Lähde run-linkki , joka ohjaa mallin tuottaneelle ajolle.
  • Koulutuksen aikana käytetyt aineistot .
  • Ympäristö (Python-versio, riippuvuukset, allekirjoitus).

Kuvakaappaus kokeilusivun Models-välilehdestä, jossa on korostettu lista kirjatuista malleista.

Vertaa LoggedModelsia

Lokimallit -osiossa valitse useita LoggedModeleja vertaillaksesi niitä sisäänrakennettujen viivakaavioiden, hajontakuvien ja rinnakkaisten koordinaattien avulla. Voit myös hakea, suodattaa, lajitella ja ryhmitellä LoggedModeleja metriikan, parametrin, tagin tai metatietojen mukaan.

Kuvakaappaus Models-välilehdestä, jossa on useita kirjattuja malleja valittuna ja Metriikka-vertailupaneeli, jossa näkyy viivakaaviot RMSE:lle, bagging_fraction:lle ja bagging_freq.

Rekisteröi loggedModel

LoggedModelin ylentämiseksi Fabric ML-mallikohteeksi avaa sen yksityiskohtasivu ja valitse Register model. Voit rekisteröidä sen uutena koneoppimismallina tai uutena versiona olemassa olevasta mallista. Rekisteröinnin jälkeen LoggedModelin yksityiskohtasivulla näkyy linkki rekisteröidyn mallin tuotteeseen.

Generatiivisten tekoälyjäljien kaappaaminen

Jäljet tallentavat LLM:n tai generatiivisen tekoälysovelluksen suorituksen hierarkiana. Jokainen jäljennös näyttää syötteet, tulosteet, viiveen, tokenin käytön sekä kaikki työkalu- tai funktiokutsut. Käytä AI-kokeilutyyppiä saadaksesi parhaan traces-first -kokemuksen.

Jäljitä funktio koristelijalla @mlflow.trace

Lisää @mlflow.trace mihin tahansa funktioon, joka tallentaa sen syötteet, tulokset ja keston. Käytä mlflow.update_current_trace() tunnisteiden kiinnittämiseen funktion sisältä:

import mlflow
import time

mlflow.set_experiment("mlflow3-trace-demo")

@mlflow.trace
def process_user(user_id, action):
    mlflow.update_current_trace(tags={
        "user_id": user_id,
        "action": action,
        "environment": "production",
    })
    time.sleep(1)
    return f"Processed action {action} for user {user_id}"

with mlflow.start_run(run_name="function_call"):
    process_user(user_id=123, action="login")

Kun koristellut funktiot kutsuvat toisiaan, MLflow sisäkkäisee sulatust automaattisesti, jotta voit visualisoida koko kutsupuun jäljityksen yksityiskohtien sivulla.

Autolog OpenAI-chatin täydennykset

Ota käyttöön OpenAI:n autologgaus, jotta jokainen puhelu OpenAI-asiakkaalle jäljitetään automaattisesti ilman koristelijoita. Seuraava esimerkki käyttää AzureOpenAI Fabric-hallituilla tunnuksilla:

import mlflow
from openai import AzureOpenAI
from synapse.ml.fabric.credentials import get_openai_httpx_sync_client

mlflow.openai.autolog()

client = AzureOpenAI(
    api_version="2025-04-01-preview",
    http_client=get_openai_httpx_sync_client(),
)

with mlflow.start_run(run_name="simple_openai_chat") as run:
    response = client.chat.completions.create(
        model="gpt-4.1",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "What are the main components of MLflow?"},
        ],
        temperature=0.7,
    )
    print(response.choices[0].message.content)
    print(f"Trace ID: {mlflow.get_last_active_trace_id()}")

Agenttikehyksissä MLflow tarjoaa myös autologingin LangChainille (mlflow.langchain.autolog()) ja OpenAI Agents SDK:lle. Uusi jäljitysmalli sisältää täydellisiä, ajettavia esimerkkejä molemmista, mukaan lukien monivuoroiset työkalukutsukeskustelut.

Näkymäjäljet

Jälkien katsomiseen:

  1. Avaa koe, joka sisältää generatiivisia tekoälyajoja.
  2. Valitse Traces-välilehti .
  3. Valitse jäljitys avataksesi Trace-yksityiskohta-kuvan .

Kuvakaappaus avoimesta jäljityksestä, jossa näkyy suoritustiedot, ominaisuudet ja jäljitystiedot syötteineen ja lähtöineen.

Jäljen yksityiskohtainen näkymä näyttää:

  • Span-puu, jossa on pyynnön hierarkkinen erittely.
  • Syötteet, ulostulot ja attribuutit jokaiselle särmälle.
  • Prompt/vastaus-parit LLM-spaneille (järjestelmä, käyttäjä, avustaja).
  • Viive, tokenin käyttö ja mallin metatiedot (nimi, versio, parametrit).
  • Työkalu- ja funktiokutsut niiden syötteineen, tulosteineen ja dokumenttitunnisteineen.
  • Jäljitykset epäonnistuivat poikkeustyypillä, viestillä ja pinon jäljityksellä.

Jäljityslista näyttää jäljen ID:n, syötteen, ulostulon, keston, aloitusajan ja tilan (Suoritettu, epäonnistunut tai käynnissä). Voit suodattaa jäljityksiä käyttäjän, tilan tai aloitusajan mukaan.

Kuvakaappaus avatusta jäljityslistasta, jossa näkyy jäljen ID, syöte, tulostus, kesto, aloitusaika ja tila.

Ajon tuottamat jäljet näkyvät myös juoksun yksityiskohtasivulla Traces-välilehdellä.

Siirry MLflow 2.x:stä

Voit ottaa MLflow 3:n käyttöön asteittain:

  • Olemassa olevat muistikirjat toimivat edelleen muuttumattomina. Legacy-parametri artifact_path toimii log_model() edelleen ja tuottaa LoggedModelin.
  • Uusien muistikirjojen tulisi käyttää name tätä parametria selkeyden vuoksi.
  • Työtilan väliset skenaariot käyttävät päivitettyä synapseml-mlflow pakettia. Sinun ei enää tarvitse pintoida mlflow-skinny versioon 2.22.2. Asennusvaiheista löytyy kohdasta Hallinnoi MLflow-malleja eri työtiloilla ja alustoilla.

Mitä ei vielä tueta

Generatiivinen tekoälyn arviointi (mlflow.genai.evaluate()) ei ole vielä käytössä Fabric. Julkaisu on suunniteltu tulevaksi.