Spårning och observerbarhet för experiment

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

AI Runtime integreras med MLflow för att erbjuda experimentspårning och observerbarhet. MLflow erbjuder en enda plats för parametrarna för en körning, mätvärden, GPU-systemmetrik, loggar och artefakter, oavsett om du utvecklar i en anteckningsbok, skickar ett arbetsjobb med databricks air CLI eller schemalägger ett jobb.

Vad MLflow erbjuder

Ett MLflow-experiment grupperar relaterade träningskörningar, och varje körning ger en bestående registrering av träningskonfigurationen och resultaten.

  • Mätvärden och parametrarna: Registrera träningsförluster, utvärderingsmått, inlärningshastigheter och hyperparametrar, och jämför dem sedan över körningar.
  • Systemmetrik: Visa GPU-, CPU- och minnesanvändning för hanterade körningar under fliken Systemmetrik.
  • Loggar: Visa utdata från drivrutinen för en arbetsbelastning som stöds av ett jobb under fliken Loggar.
  • Artefakter och modeller: Lagra modellfiler, konfigurationer och andra utdata med körningen. Använd en Unity Catalog-volym för stora eller hållbara artefakter.
  • Delning och samarbete: Ge tillgång till ett experiment så att andra användare av arbetsytan kan se och jämföra dess körningar. Se Ordna träningskörningar med MLflow-experiment.
  • Ramverksintegrationer: Använd MLflow-integrationer med Hugging Face Transformers, PyTorch Lightning och andra stödda bibliotek.

För jobbunderstödda arbetsbelastningar, till exempel arbetsbelastningar som skickas in med databricks air run, kompletterar Azure Databricks-jobbkörningen MLflow genom att registrera exekveringsstatus, beräkningsresurser, försök och utdata från drivrutinen.

Hur MLflow-körningar skapas

Hur du startar eller ansluter dig till en MLflow-run beror på hur du startar arbetsbelastningen:

Hur du kör arbetsbelastningen Hur MLflow-körningen startar Hur man väljer experimentet
Databricks CLI (databricks air run) Varje försök skapar automatiskt en körning. Ställ in experiment_name i workload-YAML-filen.
Notebook med Databricks AI Runtime SDK (.distributed()) Varje anrop skapar automatiskt en run. Ring mlflow.set_experiment() före .distributed(), eller ställ MLFLOW_EXPERIMENT_NAMEin .
Kod körs direkt i en ansluten anteckningsbok Ingen körning skapas automatiskt. Använd mlflow.start_run() eller autologging. Ring mlflow.set_experiment() på den bärbara datorn.
Schemalagt ai_runtime_task Uppgiften skapar automatiskt en run. Ställ experiment in i uppgiftskonfigurationen. Se AI Runtime-uppgiften.

När din kod startar eller ansluter till rätt körning, använd MLflow-spårnings-API:et för att registrera anpassad träningsdata. För stödda ramverk kan du använda autologging istället för att lägga till individuella loggningsanrop. För djupinlärningsmönster, se MLflow 3 djupinlärningsarbetsflöde.

Använd följande metoder när du konfigurerar MLflow-spårning:

  • Sätt step till ett meningsfullt värde, såsom den globala batchen eller epoken. Logga med jämna mellanrum istället för varje batch. MLflow begränsar antalet mätvärdessteg per körning. Se Resursbegränsningar.
  • För distribuerad träning, logga en metrik från rank 0 endast så att varje värde registreras en gång.
  • För notebook-arbetsflöden, använd absoluta experimentvägar, såsom /Users/<username>/my-experiment eller /Workspace/Shared/<team>/my-experiment. Lägg experiment som du vill dela i en delad arbetsytemapp.
  • Lagra stora, hållbara checkpoints i en Unity Catalog-volym. För checkpointmönster, se Förbättra träningsprestanda och resiliens på AI Runtime.

Note

Använd MLflow 3.7 och uppåt för exemplen på denna sida.

Spåra Databricks CLI-arbetsbelastningar

När du skickar in en arbetsbelastning med databricks air run, skapar AI Runtime en Azure Databricks-jobbkörning för exekveringsdetaljer och en MLflow-körning för experimentdata. Den ursprungliga inskickningen och dess omförsök delar en jobbkörning, medan varje försök skapar en separat MLflow-körning i samma experiment så att du kan jämföra försöken.

GPU-, CPU- och minnessystemmetriker fångas automatiskt för varje hanterad körning och visas på fliken System metrics i MLflow.

Fliken Systemmetrik i en MLflow-körning som visar GPU-, CPU- och minnesmetrik.

Konfigurera och skriv loggar till körningen

Använd workload-YAML-filen för att välja experimentet och eventuellt konfigurera körnamnet och artefaktplatsen. Följande exempel visar endast MLflow-fälten:

experiment_name: my-training
mlflow_run_name: baseline-lr3e5
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training

För fältkrav, standardvärden och stödda värden, se Workload YAML-referensen.

AI Runtime tillgängliggör managed run ID genom MLFLOW_RUN_ID. För att logga dina egna parametrar, mätvärden och artefakter till den körningen, öppna den igen med MLflow-spårnings-API:et:

import os

import mlflow

# Log from rank 0 only because all nodes share the same MLFLOW_RUN_ID.
if os.environ.get("RANK", "0") == "0":
    with mlflow.start_run(run_id=os.environ["MLFLOW_RUN_ID"]):
        mlflow.log_param("learning_rate", 3e-4)
        for step, loss in enumerate(training_losses):
            mlflow.log_metric("train_loss", loss, step=step)

Hitta körningar och loggar

Loggar finns tillgängliga både via Databricks CLI och MLflow-körningssidan. Använd följande kommandon för att hitta arbetsbelastningar, inspektera en arbetsbelastning och strömma eller ladda ner loggar:

databricks air list --all-status
databricks air get <job-run-id>
databricks air logs <job-run-id>
databricks air logs <job-run-id> --node 2
databricks air logs <job-run-id> --download-to ./logs/

Spåra arbetsbelastningar för notebookar

Från en anteckningsbok kan du köra kod direkt i den bifogade sessionen eller köra distribuerad träning via decoratorn @distributed från Databricks AI Runtime SDK.

Kör kod direkt i en anteckningsbok

Kod som körs direkt i en ansluten anteckningsbok skapar inte automatiskt en MLflow-körning. Välj ett experiment, starta sedan en körning eller aktivera autologgning:

import mlflow

mlflow.set_experiment("/Users/<username>/my-experiment")

with mlflow.start_run(run_name="baseline"):
    train()

För att aktivera PyTorch Lightning-autologgning, använd följande mönster:

mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
    trainer.fit(model, datamodule=datamodule)

För Hugging Face Transformers, konfigurera TrainingArguments enligt följande:

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5",
    logging_steps=50,
)

Använd Databricks AI Runtime SDK

För distribuerad träning från en anteckningsbok, använd decoratorn @distributed från Databricks AI Runtime SDK (databricks-sdk-air). SDK:n finns tillgänglig under databricks.air namnrymden i GPU-miljö version 6 och uppåt, eller som serverless_gpu i GPU-miljö version 5 och lägre.

from databricks.air import distributed

@distributed()
def train():
    # Training code
    ...

train.distributed()

Varje .distributed() anrop skapar automatiskt en MLflow-körning. Standardexperimentet är /Users/{WORKSPACE_USER}/{notebook-name}. För att välja ett annat experiment, ställ in det innan du anropar .distributed():

mlflow.set_experiment("/Users/<username>/my-experiment")
train.distributed()

När du anropar .distributed() i en aktiv körning skapar AI Runtime en nästlad barnkörning:

with mlflow.start_run() as parent_run:
    train.distributed()

För att återuppta en tidigare körning, sätt MLFLOW_RUN_ID före .distributed():

import os

os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
train.distributed()

Använd körlänken i cellutdata eller i anteckningsbokens Experiment-panel för att öppna MLflow-körningen.

Visa loggar

  • Anteckningsboksutdata: Standardutdata och fel från träningskoden visas i anteckningsboksens cellutdata.
  • MLflow-loggar: För jobbstödda notebook-arbetsbelastningar, såsom anrop av typen .distributed(remote=True), visar fliken MLflow Loggar utdata från den tillhörande jobbkörningen.

Övervaka GPU-resurser i realtid

Notebookens GPU-resurspanel visar GPU-användning i realtid, minne och temperatur för arbetsbelastningar med en och flera noder. Använd fliken MLflow System-metrics när du behöver en persistent post kopplad till en körning.

För att öppna panelen, koppla notebooken till AI Runtime och klicka sedan på Chip-ikonenGPU-resurser i den högra sidopanelen.

Fönstret GPU-resurser som visar användnings-, minnes- och temperaturmått för varje GPU.

Panelen hämtar mätvärden var tionde sekund och sparar upp till två timmars historik. Klicka på ikonen Uppdatera.Uppdatera för att hämta de senaste värdena. Efter fem minuters inaktivitet pausar rutan. Öppna den igen för att återuppta övervakningen.

Felsök åtkomst till loggar

Fliken Logs på en MLflow-körsida visar loggutdata från den tillhörande Azure Databricks-jobbkörningen. Tillgång till MLflow-experimentet innebär inte tillgång till jobbet.

Om fliken visar att du inte har tillgång till dessa loggar, be en användare med behörighet Kan hantera eller en administratör för arbetsområdet att åtminstone ge dig Kan visa för jobbet. Se Kontrollera åtkomst till ett jobb.

Globala gränser i Azure Databricks

Se Resursbegränsningar.