Dela via


Spårning och observerbarhet för experiment

Viktigt!

AI Runtime för aktiviteter med en nod finns i offentlig förhandsversion. Det distribuerade tränings-API:et för multi-GPU-arbetsbelastningar finns kvar i Beta.

Den här artikeln beskriver hur du använder MLflow, övervakar GPU-hälsa, visar loggar och hanterar modellkontrollpunkter på AI Runtime.

MLflow-integrering

AI Runtime integreras internt med MLflow för experimentspårning, modellloggning och måttvisualisering.

Installationsrekommendationer:

  • Uppgradera MLflow till version 3.7 eller senare och följ arbetsflödesmönstren för djupinlärning.

  • Aktivera automatisk loggning för PyTorch Lightning:

    import mlflow
    mlflow.pytorch.autolog()
    
  • Anpassa MLflow-körningsnamnet genom att kapsla in din modellträningskod inom API-omfånget mlflow.start_run() . Detta ger dig kontroll över körningsnamnet och gör att du kan starta om från en tidigare körning. Du kan anpassa körningsnamnet med hjälp av parametern run_name i mlflow.start_run(run_name="your-custom-name") eller i bibliotek från tredje part som stöder MLflow (till exempel Hugging Face Transformers). Annars är standardkörningsnamnet jobTaskRun-xxxxx.

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • Det serverlösa GPU-API:et startar automatiskt ett MLflow-experiment med standardnamnet /Users/{WORKSPACE_USER}/{get_notebook_name()}. Användare kan skriva över den med miljövariabeln MLFLOW_EXPERIMENT_NAME. Använd alltid absoluta sökvägar för MLFLOW_EXPERIMENT_NAME miljövariabeln:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • Återuppta föregående träning genom att ange MLFLOW_RUN_ID från den tidigare körningen:

    mlflow.start_run(run_id="<previous-run-id>")
    
  • Ange parametern step i MLFlowLogger till rimliga batchnummer. MLflow har en begränsning på 10 miljoner steg – att logga varje enskild batch under stora träningspass kan nå denna gräns. Se Resursbegränsningar.

Visa loggar

  • Notebook-utdata – Standardutdata och fel från träningskoden visas i notebook-cellens utdata.
  • Drivrutinsloggar – Tillgänglig via beräkningspanelen för felsökning av startproblem, miljökonfigurationsproblem och körningsfel.
  • MLflow-loggar – Träningsmått, parametrar och artefakter kan visas i MLflow-experimentets användargränssnitt.

Kontrollpunkter för modell

Spara modellkontrollpunkter i Unity Catalog-volymer, som ger samma styrning som andra Unity Catalog-objekt. Använd följande sökvägsformat för att referera till filer i volymer från en Databricks-notebook-fil:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Spara kontrollpunkter på volymer på samma sätt som du sparar dem i lokal lagring.

Exemplet nedan visar hur du skriver en PyTorch-kontrollpunkt till Unity Catalog-volymer:

import torch

checkpoint = {
    "epoch": epoch,  # last finished epoch
    "model_state_dict": model.state_dict(),  # weights & buffers
    "optimizer_state_dict": optimizer.state_dict(),  # optimizer state
    "loss": loss,  # optional current loss
    "metrics": {"val_acc": val_acc},  # optional metrics
    # Add scheduler state, RNG state, and other metadata as needed.
}
checkpoint_path = "/Volumes/my_catalog/my_schema/model/checkpoints/ckpt-0001.pt"
torch.save(checkpoint, checkpoint_path)

Den här metoden fungerar även för distribuerade kontrollpunkter. Exemplet nedan visar kontrollpunkter för distribuerade modeller med TORCH Distributed Checkpoint API:

import torch.distributed.checkpoint as dcp

def save_checkpoint(self, checkpoint_path):
    state_dict = self.get_state_dict(model, optimizer)
    dcp.save(state_dict, checkpoint_id=checkpoint_path)

trainer.save_checkpoint("/Volumes/my_catalog/my_schema/model/checkpoints")

Samarbete mellan flera användare

  • För att säkerställa att alla användare kan komma åt delad kod (till exempel hjälpmoduler eller YAML-miljöfiler) lagrar du dem i /Workspace/Shared stället för användarspecifika mappar som /Workspace/Users/<your_email>/.
  • För kod som är i aktiv utveckling använder du Git-mappar i användarspecifika mappar /Workspace/Users/<your_email>/ och push-överför till fjärranslutna Git-lagringsplatser. Detta gör att flera användare kan ha en användarspecifik klon och gren, samtidigt som de använder en fjärransluten Git-lagringsplats för versionskontroll. Se metodtips för att använda Git på Databricks.
  • Medarbetare kan dela och kommentera anteckningsböcker.

Globala gränser i Databricks

Se Resursbegränsningar.