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.

Auf dieser Seite wird beschrieben, wie Sie MLflow verwenden, Protokolle anzeigen, Modellprüfpunkte verwalten und GPU-Ressourcen auf AI-Runtime überwachen.

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.
  • MLflow-Protokolle – Die Benutzeroberfläche des MLflow-Experiments zeigt Schulungsmetriken, Parameter und Artefakte an.

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")

Überwachen von GPU-Ressourcen

Verwenden Sie den GPU-Ressourcenbereich , um die GPU-Integrität und -Auslastung zu überwachen, während Ihr Code auf AI-Runtime ausgeführt wird. Der Bereich unterstützt Workloads mit einem einzelnen Knoten sowie mit mehreren Knoten.

Um den Seitenbereich zu öffnen, verbinden Sie Ihr Notebook mit der AI Runtime und klicken Sie dann im rechten Seitenbereich auf Chip-Symbol.GPU-Ressourcen

Bereich

Im Bereich werden die folgenden Metriken für jede GPU angezeigt:

  • Prozentuale GPU-Auslastung
  • GPU-Speicherauslastung
  • Temperatur

Der Bereich ruft die Metriken alle 10 Sekunden ab und speichert bis zu 2 Stunden Verlauf. Klicken Sie auf das Symbol Aktualisieren Sie , um die neuesten Werte sofort abzurufen. Nach 5 Minuten Inaktivität wird der Bereich pausiert; öffnen Sie ihn erneut, um die Überwachung fortzusetzen.

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 Azure Databricks

Sie Ressourceneinschränkungen.