Freigeben über


Verfolgen und Beobachtbarkeit von Experimenten

Von Bedeutung

DIE KI-Runtime für Einzelknotenaufgaben befindet sich in der öffentlichen Vorschau. Die verteilte Schulungs-API für Multi-GPU-Workloads verbleibt in der Betaversion.

In diesem Artikel wird beschrieben, wie Sie MLflow verwenden, GPU-Integrität überwachen, Protokolle anzeigen und Modellprüfpunkte auf AI-Runtime verwalten.

MLflow-Integration

AI-Runtime integriert sich nativ in MLflow für die Experimentnachverfolgung, Modellprotokollierung und Metrikvisualisierung.

Setupempfehlungen:

  • Aktualisieren Sie MLflow auf Version 3.7 oder höher, und folgen Sie den Deep Learning-Workflowmustern.

  • Autologging für PyTorch Lightning aktivieren:

    import mlflow
    mlflow.pytorch.autolog()
    
  • Passen Sie Ihren MLflow-Laufnamen an, indem Sie den Modellschulungscode innerhalb des mlflow.start_run() API-Bereichs einschließen. Dadurch können Sie den Namen der Ausführung steuern und einen Neustart aus einer vorherigen Ausführung ausführen. Sie können den Ausführungsnamen mithilfe des run_name Parameters in mlflow.start_run(run_name="your-custom-name") oder in Drittanbieterbibliotheken anpassen, die MLflow unterstützen (z. B. Hugging Face Transformers). Andernfalls lautet jobTaskRun-xxxxxder Standardlaufname .

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • Die Serverless GPU-API startet automatisch ein MLflow-Experiment mit Standardnamen /Users/{WORKSPACE_USER}/{get_notebook_name()}. Benutzer können sie mit der Umgebungsvariable MLFLOW_EXPERIMENT_NAMEüberschreiben. Verwenden Sie immer absolute Pfade für die MLFLOW_EXPERIMENT_NAME Umgebungsvariable:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • Setzen Sie das vorherige Training fort, indem Sie die MLFLOW_RUN_ID aus dem vorherigen Lauf festlegen.

    mlflow.start_run(run_id="<previous-run-id>")
    
  • Legen Sie den Parameter step in MLFlowLogger auf angemessene Batchnummern fest. MLflow hat eine Grenze von 10 Millionen Metrikschritten – das Protokollieren jedes einzelnen Batches bei großen Schulungsläufen kann diesen Grenzwert erreichen. Sie Ressourceneinschränkungen.

Anzeigen von Protokollen

  • Notebook-Ausgabe — Standardausgabe und Fehler von dem Schulungscode werden in der Ausgabe der Notizbuchzelle angezeigt.
  • Treiberprotokolle – Zugriff über den Computebereich zum Debuggen von Startproblemen, Umgebungseinrichtungsproblemen und Laufzeitfehlern.
  • MLflow-Protokolle – Schulungsmetriken, Parameter und Artefakte können auf der Benutzeroberfläche des MLflow-Experiments angezeigt werden.

Modellprüfpunkterstellung

Speichern Sie Modellprüfpunkte in Unity-Katalogvolumes, die dieselbe Governance wie andere Unity Catalog-Objekte bereitstellen. Verwenden Sie das folgende Pfadformat, um auf Dateien in Volumes aus einem Databricks-Notizbuch zu verweisen:

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

Speichern Sie Prüfpunkte auf Volumes auf die gleiche Weise, wie Sie sie im lokalen Speicher speichern.

Das folgende Beispiel zeigt, wie Sie einen PyTorch-Prüfpunkt in Unity-Katalogvolumes schreiben:

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)

Dieser Ansatz funktioniert auch für verteilte Prüfpunkte. Das folgende Beispiel zeigt verteilte Modellprüfpunkte mit der 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")

Zusammenarbeit mit mehreren Benutzern

  • Um sicherzustellen, dass alle Benutzer auf freigegebenen Code zugreifen können (z. B. Hilfsmodule oder Umgebungs-YAML-Dateien), speichern Sie sie in /Workspace/Shared anstelle von benutzerspezifischen Ordnern wie /Workspace/Users/<your_email>/.
  • Verwenden Sie für Code, der sich in der aktiven Entwicklung befindet, Git-Ordner in benutzerspezifischen Ordnern /Workspace/Users/<your_email>/ und pushen Sie zu Remote-Git-Repos. Auf diese Weise können mehrere Benutzer über einen benutzerspezifischen Klon und eine Verzweigung verfügen, während weiterhin ein Git-Remote-Repository für die Versionssteuerung verwendet wird. Schauen Sie sich bewährte Methoden für die Verwendung von Git auf Databricks an.
  • Mitarbeiter können Notizbücher freigeben und kommentieren .

Globale Grenzwerte in Databricks

Sie Ressourceneinschränkungen.