Śledzenie i obserwowanie eksperymentów

AI Runtime integruje się z MLflow, oferując narzędzia do śledzenia eksperymentów, obserwowalności i debugowania. MLflow zapewnia jedno miejsce dla parametrów, metryk, metryk systemu GPU, logów i artefaktów przebiegu, niezależnie od tego, czy tworzysz w notatniku, przesyłasz obciążenie za pomocą interfejsu wiersza poleceń databricks air, czy planujesz zadanie.

Co oferuje MLflow

Eksperyment MLflow grupuje powiązane uruchomienia treningowe, a każdy z nich dostarcza trwały zapis konfiguracji treningowej i wyników.

  • Metryki i parametry: Zapisz stratę treningową, metryki oceny, tempo uczenia się i hiperparametry, a następnie porównaj je w różnych przebiegach.
  • Metryki systemowe: Zobacz wykorzystanie GPU, CPU i pamięci dla zarządzanych uruchomień na karcie Metryki systemowe.
  • Widok dziennika: Zobacz dane wyjściowe sterownika dla obciążenia powiązanego z zadaniem na zakładce Logi uruchomienia. Zobacz Zobacz logi w zakładce MLflow Logs.
  • Artefakty i modele: Przechowuj pliki modeli, konfiguracje i inne wyjścia wraz z uruchomieniem. Użyj woluminu katalogu Unity dla dużych lub trwałych artefaktów.
  • Udostępnianie i współpraca: Udziel dostępu do eksperymentu, aby inni użytkownicy przestrzeni roboczej mogli oglądać i porównywać jego przebiegi. Zobacz Organizowanie przebiegów trenowania przy użyciu eksperymentów MLflow.
  • Integracje frameworków: Korzystaj z integracji MLflow z Hugging Face Transformers, PyTorch Lightning i innymi wspieranymi bibliotekami.

Dla obciążeń opartych na zadaniach, takich jak obciążenia przesyłane za pomocą databricks air run, uruchomienie zadania Azure Databricks uzupełnia MLflow poprzez rejestrowanie statusu wykonywania, zasobów obliczeniowych, prób i danych wyjściowych sterownika.

Jak powstają uruchomienia MLflow

To, jak uruchamiasz lub dołączasz do uruchomienia MLflow, zależy od tego, jak uruchamiasz zadanie:

Jak uruchamiasz obciążenie Jak zaczyna się uruchomienie MLflow Jak wybrać ten eksperyment
Databricks CLI (databricks air run) Każda próba automatycznie generuje uruchomienie. Ustaw experiment_name w pliku YAML obciążenia.
Notebook z Databricks AI Runtime SDK (.distributed()) Każde wywołanie automatycznie tworzy uruchomienie. Wywołaj mlflow.set_experiment() przed .distributed(), lub ustaw MLFLOW_EXPERIMENT_NAME.
Kod uruchamiany bezpośrednio w dołączonym notebooku Żaden run nie jest tworzony automatycznie. Używanie mlflow.start_run() lub autologowanie. Wywołaj mlflow.set_experiment() w notesie.
Zaplanowano ai_runtime_task Zadanie automatycznie tworzy uruchomienie. Ustaw experiment w konfiguracji zadania. Zobacz zadanie AI Runtime.

Po uruchomieniu lub dołączeniu do właściwego uruchomienia Twojego kodu użyj MLflow tracking API do zapisywania niestandardowych danych treningowych. W przypadku wspieranych frameworków można używać autologowania zamiast dodawania pojedynczych wywołań logowania. O wzorcach uczenia głębokiego zobacz przepływ pracy deep learning w MLflow 3.

Stosuj następujące praktyki podczas konfiguracji śledzenia MLflow:

  • Ustaw step na sensowną wartość, taką jak globalna partia lub epoka. Loguj w odstępach czasu zamiast przy każdej partii. MLflow ogranicza liczbę kroków metrycznych na uruchomienie. Zobacz Limity zasobów.
  • Do treningu rozproszonego rejestruj metrykę tylko od rangi 0, tak aby każda wartość była rejestrowana raz.
  • Dla workflow notatników używaj absolutnych ścieżek eksperymentów, takich jak /Users/<username>/my-experiment lub /Workspace/Shared/<team>/my-experiment. Umieść eksperymenty, które chcesz udostępnić, w folderze współdzielonym w przestrzeni roboczej.
  • Przechowywaj duże, trwałe punkty kontrolne w woluminie Unity Catalog. Wzorce checkpointingu znajdziesz w artykule Improve training performance and resiliency on AI Runtime.

Note

Użyj MLflow 3.7 lub nowszej wersji w przykładach na tej stronie.

Monitoruj obciążenia CLI Databricks

Gdy przesyłasz obciążenie z databricks air run, AI Runtime tworzy uruchomienie zadania Azure Databricks dla szczegółów wykonania oraz uruchomienie MLflow dla danych eksperymentalnych. Oryginalne zgłoszenie i jego powtórki dzielą jedno wykonanie zadania, podczas gdy każda próba tworzy osobne uruchomienie MLflow w tym samym eksperymencie, aby można było porównać próby.

Metryki systemowe GPU, CPU i pamięci są automatycznie rejestrowane dla każdego zarządzanego uruchomienia i pojawiają się na karcie MLflow System metrics.

Zakładka metryk systemowych w uruchomieniu MLflow pokazująca metryki GPU, CPU i pamięci.

Skonfiguruj i rejestruj uruchomienie w logach

Użyj pliku YAML obciążenia, aby wybrać eksperyment i opcjonalnie skonfigurować nazwę uruchomienia oraz lokalizację artefaktu. Poniższy przykład pokazuje potrzebne pola MLflow:

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

Wymagania dotyczące pól, wartości domyślne i obsługiwane wartości można znaleźć w dokumentacji referencyjnej Workload YAML.

AI Runtime udostępnia zarządzany identyfikator uruchomienia przez MLFLOW_RUN_ID. Aby zarejestrować własne parametry, metryki i artefakty do tego uruchomienia, otwórz je ponownie za pomocą MLflow tracking API:

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)

Znajdź uruchomienia i logi

Logi są dostępne zarówno w Databricks CLI, jak i na stronie uruchomienia MLflow. Użyj następujących poleceń, aby znaleźć zadania robocze, podejrzeć zadanie robocze oraz wyświetlać strumieniowo lub pobierać logi:

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/

Śledź obciążenia notesów

Z notatnika możesz uruchamiać kod bezpośrednio w dołączonej sesji lub prowadzić trening rozproszony za pomocą dekoratora @distributed z pakietu Databricks AI Runtime SDK.

Uruchamiaj kod bezpośrednio w notatniku

Kod uruchamiany bezpośrednio w dołączonym notebooku nie tworzy automatycznie przebiegu MLflow. Wybierz eksperyment, a następnie rozpocznij uruchomienie lub włącz autologowanie:

import mlflow

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

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

Aby włączyć autologowanie PyTorch Lightning, użyj następującego wzoru:

mlflow.pytorch.autolog()

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

Dla Hugging Face Transformers skonfiguruj TrainingArguments w następujący sposób:

from transformers import TrainingArguments

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

Użyj SDK Runtime Databricks AI

Do rozproszonego treningu z notatnika użyj dekoratora @distributed z Databricks AI Runtime SDK (databricks-sdk-air). SDK jest dostępne w przestrzeni nazw databricks.air w środowisku GPU w wersji 6 i wyższej lub jako serverless_gpu w środowisku GPU w wersji 5 i niższej.

from databricks.air import distributed

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

train.distributed()

Każde .distributed() wywołanie automatycznie uruchamia MLflow. Domyślny eksperyment to /Users/{WORKSPACE_USER}/{notebook-name}. Aby wybrać inny eksperyment, ustaw go przed wywołaniem .distributed():

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

Gdy wywołujesz .distributed() wewnątrz aktywnego runu, AI Runtime tworzy zagnieżdżony podrzędny run:

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

Aby wznowić poprzedni przebieg, ustaw MLFLOW_RUN_ID przed .distributed():

import os

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

Użyj linku uruchomienia w wyjściu komórki lub panelu Experiment notebooka, aby otworzyć przebieg MLflow.

Zobacz logi

  • Wyjście z notebooku: Standardowe wyjście i błędy z kodu treningowego pojawiają się na wyjściu komórki notebooku.
  • Logi MLflow: Dla obciążeń notatników opartych na zadaniach, takich jak .distributed(remote=True) wywołania, zakładka MLflow Logs wyświetla wyniki z powiązanego wykonania zadania.

Monitoruj zasoby GPU na żywo

Panel zasobów GPU notebooka pokazuje na żywo wykorzystanie GPU, pamięć i temperaturę dla obciążeń jedno- i wielowęzłowych. Użyj zakładki MLflow Metryki systemowe, gdy potrzebujesz trwałego rekordu powiązanego z przebiegiem.

Aby otworzyć panel, podłącz notebook do AI Runtime, a następnie kliknij ikonę chipu.Zasoby GPU w prawym panelu bocznym.

Okienko zasobów procesora GPU przedstawiające metryki wykorzystania, pamięci i temperatury dla każdego procesora GPU.

Panel odświeża metryki co 10 sekund i przechowuje historię z ostatnich 2 godzin. Kliknij ikonę OdświeżOdśwież aby pobrać najnowsze wartości. Po 5 minutach bezczynności panel się zatrzymuje. Otwórz go ponownie, aby wznowić monitoring.

Zobacz logi w zakładce MLflow Logs

Zakładka Logs na stronie uruchomienia MLflow pokazuje dane wyjściowe obciążenia AI Runtime opartego na zadaniach. Aby ją otworzyć, przejdź do strony przebiegu i kliknij Logs.

W przypadku nowych przebiegów zakładka Logi zastępuje wycofane pliki logów, wcześniej przechowywane na karcie Artefakty danego przebiegu. Utworzone wcześniej przebiegi przechowują swoje pliki logów na zakładce Artefakty .

Z zakładki Logi możesz:

  • Szukaj: Pokazuj tylko linie zawierające dane hasło wyszukiwania.
  • Filtruj według węzła, poziomu dziennika i zakresu czasu: Wybierz jeden węzeł z wielowęzłowego obciążenia, pokaż tylko informacje, ostrzeżenia lub linie błędu, albo zawęź widok do określonego zakresu czasu.
  • Śledź uruchomione obciążenie robocze: Podczas działania nowe dane wyjściowe pojawiają się na bieżąco. Przewiń w górę, aby wstrzymać śledzenie.
  • Kopiuj i pobieraj: Kopiuj załadowane linie lub pobierz każdą linię, która odpowiada aktualnym filtrom.

Retencja logów

Logi są dostępne na zakładce Logi przez 60 dni.

Rozwiązywanie problemów z dostępem do logów

Zakładka Logs na stronie uruchomienia MLflow wyświetla dane wyjściowe na żywo z powiązanego uruchomienia zadania Azure Databricks. Dostęp do eksperymentu MLflow nie oznacza dostępu do zadania.

Jeśli zakładka pokazuje Nie masz dostępu do tych logów, poproś użytkownika z uprawnieniami Can Manage lub administratora przestrzeni roboczej, aby nadał Ci co najmniej Can View na zleceniu. Zobacz Kontrola dostępu do zadania.

Limity globalne w Azure Databricks

Zobacz Limity zasobów.