Śledzenie i obserwowanie eksperymentów

Ważna

Ta funkcja jest dostępna w publicznej wersji testowej.

Środowisko AI Runtime integruje się natywnie z platformą MLflow na potrzeby śledzenia eksperymentów i zawiera wbudowane okienko zasobów procesora GPU na potrzeby monitorowania wykorzystania, pamięci i temperatury. Użyj biblioteki MLflow do rejestrowania metryk i uruchomień, wyświetlania wyników trenowania w notatniku i interfejsie użytkownika MLflow, zapisywania punktów kontrolnych modelu w woluminach katalogu Unity Catalog oraz śledzenia stanu GPU podczas działania kodu.

Integracja platformy MLflow

Środowisko AI Runtime integruje się natywnie z rozwiązaniem MLflow na potrzeby śledzenia eksperymentów, rejestrowania modeli i wizualizacji metryk.

Zalecenia dotyczące konfiguracji:

  • Uaktualnij bibliotekę MLflow do wersji 3.7 lub nowszej i postępuj zgodnie z wzorcami przepływu pracy uczenia głębokiego.

  • Włącz automatyczne rejestrowanie dla rozwiązania PyTorch Lightning:

    import mlflow
    mlflow.pytorch.autolog()
    
  • Dostosuj nazwę przebiegu MLflow, zamykając kod treningowy modelu w obszarze interfejsu API mlflow.start_run(). Daje to kontrolę nad nazwą uruchomienia i pozwala na restart z poprzedniego uruchomienia. Nazwę uruchomienia można dostosować przy użyciu parametru run_name w mlflow.start_run(run_name="your-custom-name") lub w bibliotekach innych firm, które obsługują MLflow (na przykład Hugging Face Transformers). W przeciwnym razie domyślna nazwa przebiegu to jobTaskRun-xxxxx.

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • Podczas korzystania z bezserwerowego interfejsu API GPU każde wywołanie .distributed() automatycznie tworzy uruchomienie eksperymentu MLflow. Jeśli wywołanie nastąpi w trakcie aktywnego uruchomienia MLflow, zamiast tego zostanie utworzone zagnieżdżone uruchomienie podrzędne pod aktywnym uruchomieniem nadrzędnym.

    import mlflow
    
    with mlflow.start_run() as outer_run:
        ...
        run_train.distributed()  # creates a nested child run under outer_run
    
  • Aby dostosować eksperyment używany przez .distributed()program , wywołaj metodę mlflow.set_experiment() przed wywołaniem .distributed()metody lub ustaw zmienną MLFLOW_EXPERIMENT_NAME środowiskową. Domyślna nazwa eksperymentu to /Users/{WORKSPACE_USER}/{notebook-name}. Zawsze używaj ścieżek bezwzględnych.

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

    Alternatively:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • Aby wznowić poprzednie uruchomienie MLflow, użyj polecenia mlflow.start_run(run_id="<previous-run-id>").

  • Aby wznowić poprzednie uruchomienie MLflow za pomocą .distributed(), ustaw MLFLOW_RUN_ID przed jego wywołaniem:

    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()
    
  • Ustaw parametr step w MLFlowLogger na odpowiednie numery partii. MLflow ma limit 10 milionów kroków metryk, więc rejestrowanie każdej partii w dużych przebiegach treningowych może osiągnąć ten limit. Zobacz Limity zasobów.

Wyświetlanie dzienników

  • Dane wyjściowe notesu: standardowe dane wyjściowe i błędy z kodu szkoleniowego są wyświetlane w danych wyjściowych komórki notesu.
  • Dzienniki platformy MLflow: interfejs użytkownika eksperymentu MLflow wyświetla metryki trenowania, parametry i artefakty.

Modelowanie punktów kontrolnych

Do rozproszonego treningu zapisuj stan modelu i optymalizatora do woluminów katalogu Unity, korzystając z Torch Distributed Checkpoint (DCP) API z serverless_gpu.data.UCVolumeWriter backendami i serverless_gpu.data.UCVolumeReader pamięcią masową. Zapisz asynchronicznie, aby trening trwał podczas przesyłania punktu kontrolnego, i to na tyle często, by ograniczyć utratę pracy po przerwie. Ponieważ punkt kontrolny modelu nie rejestruje pozycji potoku danych, również należy ustawić punkt kontrolny potoku danych, aby wznowienie działania kontynuowało na poprawnych danych.

Pełny wzór checkpointingu znajdziesz w artykule Poprawa wydajności treningu i odporności na AI Runtime.

Monitorowanie zasobów procesora GPU

Użyj okienka Zasobów procesora GPU , aby monitorować kondycję i wykorzystanie procesora GPU, gdy kod jest uruchamiany w środowisku uruchomieniowym sztucznej inteligencji. Panel obsługuje zarówno obciążenia robocze z jednym węzłem, jak i z wieloma węzłami.

Aby otworzyć okienko, połącz notes ze środowiskiem uruchomieniowym sztucznej inteligencji, a następnie kliknij ikonę Chip.Zasoby procesora GPU w okienku po prawej stronie.

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

W okienku są wyświetlane następujące metryki dla każdego procesora GPU:

  • Procent wykorzystania procesora GPU
  • Użycie pamięci procesora GPU
  • Temperatura

Panel odświeża metryki co 10 sekund i przechowuje historię z ostatnich 2 godzin. Kliknij ikonę Odśwież.Odśwież , aby natychmiast pobrać najnowsze wartości. Po 5 minutach bezczynności okienko zostanie wstrzymane; otwórz je ponownie, aby wznowić monitorowanie.

Współpraca między użytkownikami

  • Aby zapewnić wszystkim użytkownikom dostęp do kodu udostępnionego (na przykład modułów pomocnika lub plików YAML środowiska), zapisz je w /Workspace/Shared zamiast w folderach specyficznych dla użytkownika, takich jak /Workspace/Users/<your_email>/.
  • W przypadku kodu, który jest aktywnie rozwijany, użyj folderów Git w folderach specyficznych dla użytkowników /Workspace/Users/<your_email>/ i prześlij do zdalnych repozytoriów Git. Dzięki temu wielu użytkowników może mieć klony i gałęzie specyficzne dla użytkownika, jednocześnie używając zdalnego repozytorium Git do kontroli wersji. Zobacz najlepsze rozwiązania dotyczące korzystania z usługi Git w usłudze Databricks.
  • Współpracownicy mogą udostępniać notesy i komentować je.

Limity globalne w Azure Databricks

Zobacz Limity zasobów.