Zarządzanie kodem trenowania za pomocą przebiegów MLflow

W tym artykule opisano przebiegi platformy MLflow służące do zarządzania trenowaniem uczenia maszynowego. Zawiera również wskazówki dotyczące zarządzania przebiegami i porównywania ich między eksperymentami.

Uruchomienie platformy MLflow odpowiada pojedynczemu wykonaniu kodu modelu. Każdy przebieg rejestruje następujące informacje:

  • Źródło: nazwa notesu, który uruchomił przebieg lub nazwę projektu i punkt wejścia dla przebiegu.
    • Wersja: skrót zatwierdzenia git, jeśli notes jest przechowywany w folderze Git usługi Databricks lub uruchamiany z projektu MLflow. W przeciwnym razie poprawka notesu.
    • Godzina rozpoczęcia i zakończenia: godzina rozpoczęcia i zakończenia przebiegu.
    • Parametry: Parametry modelu zapisane jako pary klucz-wartość. Zarówno klucze, jak i wartości są ciągami.
    • Metryki: Metryki oceny modelu zapisane jako pary klucz-wartość. Wartość jest liczbowa. Każda metryka może być aktualizowana w trakcie przebiegu (na przykład w celu śledzenia zbieżności funkcji utraty modelu) oraz rekordów MLflow i umożliwia wizualizowanie historii metryki.
    • Tagi: uruchom metadane zapisane jako pary klucz-wartość. Tagi można aktualizować podczas i po zakończeniu przebiegu. Zarówno klucze, jak i wartości są ciągami.
    • Artefakty: pliki wyjściowe w dowolnym formacie. Można na przykład rejestrować obrazy, modele (na przykład model scikit-learn) i pliki danych (na przykład plik Parquet) jako artefakt.

Wszystkie przebiegi platformy MLflow są rejestrowane w aktywnym eksperymencie. Jeśli eksperyment nie został jawnie ustawiony jako aktywny eksperyment, przebiegi są rejestrowane w eksperymencie notesu.

Wyświetlanie przebiegów

Możesz uzyskać dostęp do przebiegu ze strony eksperymentu nadrzędnego lub bezpośrednio z notesu, który utworzył przebieg.

Na stronie eksperymentu w tabeli uruchomień kliknij godzinę rozpoczęcia przebiegu.

W notesie kliknij Łącze zewnętrzne obok daty i godziny przebiegu na pasku bocznym Przebiegi eksperymentów.

Ekran uruchamiania przedstawia parametry używane do uruchomienia, metryki wynikające z przebiegu oraz wszelkie tagi lub notatki. Aby wyświetlić notatki, parametry, metryki lub tagi dla tego przebiegu, kliknij Strzałka skierowana w prawo po lewej stronie etykiety.

Uzyskujesz również dostęp do artefaktów zapisanych z przebiegu na tym ekranie.

Wyświetl przebieg

Fragmenty kodu do przewidywania

Jeśli rejestrujesz model z przebiegu, model zostanie wyświetlony w sekcji Artifacts (Artefakty ) tej strony. Aby wyświetlić fragmenty kodu ilustrujące sposób ładowania i używania modelu do przewidywania w ramkach danych Platformy Spark i biblioteki pandas, kliknij nazwę modelu.

przewidywanie fragmentów kodu

Wyświetlanie notesu lub projektu Git używanego na potrzeby przebiegu

Aby wyświetlić wersję notesu , która utworzyła przebieg:

  • Na stronie eksperymentu kliknij link w kolumnie Źródło .
  • Na stronie uruchamiania kliknij link obok pozycji Źródło.
  • W notesie na pasku bocznym Przebiegi eksperymentów kliknij ikonę Ikona wersji notesu Notes w polu dla tego przebiegu eksperymentu.

Wersja notesu skojarzonego z uruchomieniem jest wyświetlana w oknie głównym z paskiem wyróżnienia przedstawiającym datę i godzinę uruchomienia.

Jeśli przebieg został uruchomiony zdalnie z projektu Git, kliknij link w polu Zatwierdzenie git, aby otworzyć określoną wersję projektu używanego w przebiegu. Link w polu Źródło otwiera gałąź główną projektu Git używanego w przebiegu.

Dodawanie tagu do przebiegu

Tagi to pary klucz-wartość, które można utworzyć i użyć później do wyszukiwania przebiegów.

  1. Na stronie uruchamiania kliknijIkona tagu, jeśli nie jest jeszcze otwarty. Zostanie wyświetlona tabela tagów.

    tabela tagów

  2. Kliknij pola Nazwa i Wartość, a następnie wpisz klucz i wartość tagu.

  3. Kliknij przycisk Dodaj.

    dodawanie tagu

Edytowanie lub usuwanie tagu dla przebiegu

Aby edytować lub usunąć istniejący tag, użyj ikon w kolumnie Akcje .

akcje tagu

Odtworzenie środowiska oprogramowania przebiegu

Możesz odtworzyć dokładne środowisko oprogramowania dla przebiegu, klikając pozycję Odtwórz przebieg. Zostanie wyświetlone następujące okno dialogowe:

Odtwórz okno dialogowe uruchamiania

Przy użyciu ustawień domyślnych po kliknięciu przycisku Potwierdź:

  • Notes jest klonowany do lokalizacji wyświetlanej w oknie dialogowym.
  • Jeśli oryginalny klaster nadal istnieje, sklonowany notes jest dołączony do oryginalnego klastra i jest uruchamiany.
  • Jeśli oryginalny klaster już nie istnieje, zostanie utworzony i uruchomiony nowy klaster z tą samą konfiguracją, w tym wszystkie zainstalowane biblioteki. Notes jest dołączony do nowego klastra.

Możesz wybrać inną lokalizację sklonowanego notesu i sprawdzić konfigurację klastra i zainstalowane biblioteki:

  • Aby wybrać inny folder do zapisania sklonowanego notesu, kliknij pozycję Edytuj folder.
  • Aby wyświetlić specyfikację klastra, kliknij pozycję Wyświetl specyfikację. Aby sklonować tylko notes, a nie klaster, usuń zaznaczenie tej opcji.
  • Aby wyświetlić biblioteki zainstalowane w oryginalnym klastrze, kliknij pozycję Wyświetl biblioteki. Jeśli nie chcesz instalować tych samych bibliotek co w oryginalnym klastrze, usuń zaznaczenie tej opcji.

Zarządzanie przebiegami

Zmień nazwę przebiegu

Aby zmienić nazwę przebiegu, kliknij ikona trzech przycisków w prawym górnym rogu strony uruchamiania i wybierz pozycję Zmień nazwę.

Uruchomienia filtrów

Możesz wyszukać przebiegi na podstawie parametrów lub wartości metryk. Możesz również wyszukać uruchomienia według tagu.

  • Aby wyszukać uruchomienia zgodne z wyrażeniem zawierającym wartości parametrów i metryk, wprowadź zapytanie w polu wyszukiwania i kliknij przycisk Wyszukaj. Oto kilka przykładów składni zapytań:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • Aby wyszukać uruchomienia według tagu, wprowadź tagi w formacie: tags.<key>="<value>". Wartości ciągu muszą być ujęte w cudzysłowy, jak pokazano.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    Zarówno klucze, jak i wartości mogą zawierać spacje. Jeśli klucz zawiera spacje, należy go ująć w backticks, jak pokazano poniżej.

    tags.`my custom tag` = "my value"
    

Można również filtrować przebiegi na podstawie ich stanu (aktywne lub usunięte) i na podstawie tego, czy wersja modelu jest skojarzona z przebiegiem. W tym celu należy odpowiednio dokonać wyboru z menu rozwijanych Stan i Godzina utworzenia .

Uruchomienia filtrów

Przebiegi pobierania

  1. Wybierz co najmniej jeden przebieg.

  2. Kliknij pozycję Pobierz plik CSV. Plik CSV zawierający następujące pola do pobrania:

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

Usuwanie przebiegów

Uruchomienia można usunąć przy użyciu interfejsu użytkownika usługi Databricks Machine Edukacja, wykonując następujące czynności:

  1. W eksperymencie wybierz co najmniej jeden przebieg, klikając pole wyboru po lewej stronie przebiegu.
  2. Kliknij Usuń.
  3. Jeśli przebieg jest przebiegiem nadrzędnym, zdecyduj, czy chcesz również usunąć przebiegi elementów potomnych. Ta opcja jest domyślnie wybrana.
  4. Kliknij przycisk Usuń , aby potwierdzić. Usunięte przebiegi są zapisywane przez 30 dni. Aby wyświetlić usunięte przebiegi, wybierz pozycję Usunięto w polu Stan.

Operacje usuwania zbiorczego są uruchamiane na podstawie czasu tworzenia

Za pomocą języka Python można zbiorczo usuwać przebiegi eksperymentu utworzonego przed znacznikiem czasu lub w system UNIX. Za pomocą środowiska Databricks Runtime 14.1 lub nowszego można wywołać mlflow.delete_runs interfejs API, aby usunąć przebiegi i zwrócić liczbę usuniętych przebiegów.

Poniżej przedstawiono mlflow.delete_runs parametry:

  • experiment_id: identyfikator eksperymentu zawierającego przebiegi do usunięcia.
  • max_timestamp_millis: maksymalny znacznik czasu tworzenia w milisekundach od czasu system UNIX epoki usuwania przebiegów. Usuwane są tylko uruchomienia utworzone przed znacznikami czasu lub w tym momencie.
  • max_runs:Opcjonalne. Dodatnia liczba całkowita wskazująca maksymalną liczbę przebiegów do usunięcia. Maksymalna dozwolona wartość dla max_runs to 10000. Jeśli nie zostanie określony, max_runs wartość domyślna to 10000.
import mlflow

# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
  experiment_id=<experiment_id>,
  max_timestamp_millis=<max_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
  experiment_id="4183847697906956",
  max_timestamp_millis=1711990504000,
  max_runs=10
)

Za pomocą środowiska Databricks Runtime 13.3 LTS lub starszego można uruchomić następujący kod klienta w notesie usługi Azure Databricks.

from typing import Optional

def delete_runs(experiment_id: str,
                max_timestamp_millis: int,
                max_runs: Optional[int] = None) -> int:
    """
    Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
    Deletes at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to delete.
    :param max_timestamp_millis: The maximum creation timestamp in milliseconds
                                 since the UNIX epoch for deleting runs. Only runs
                                 created prior to or at this timestamp are deleted.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to delete. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs deleted.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request

    json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_deleted"]

Zapoznaj się z dokumentacją interfejsu API eksperymentów usługi Azure Databricks, aby uzyskać informacje o parametrach i specyfikacji wartości zwracanych na potrzeby usuwania przebiegów na podstawie czasu tworzenia.

Przebiegi przywracania

Poprzednio usunięte przebiegi można przywrócić przy użyciu interfejsu użytkownika usługi Databricks Machine Edukacja.

  1. Na stronie Eksperyment wybierz pozycję Usunięto w polu Stan, aby wyświetlić usunięte uruchomienia.
  2. Zaznacz co najmniej jeden przebieg, klikając pole wyboru po lewej stronie przebiegu.
  3. Kliknij przycisk Przywróć.
  4. Kliknij przycisk Przywróć , aby potwierdzić. Aby wyświetlić przywrócone przebiegi, wybierz pozycję Aktywne w polu Stan.

Operacje przywracania zbiorczego są uruchamiane na podstawie czasu usunięcia

Możesz również użyć języka Python, aby zbiorczo przywrócić przebiegi eksperymentu, który został usunięty przy lub po system UNIX znaczniku czasu. Za pomocą środowiska Databricks Runtime 14.1 lub nowszego można wywołać mlflow.restore_runs interfejs API w celu przywrócenia przebiegów i zwrócenia liczby przywróconych przebiegów.

Poniżej przedstawiono mlflow.restore_runs parametry:

  • experiment_id: identyfikator eksperymentu zawierającego przebiegi do przywrócenia.
  • min_timestamp_millis: minimalny znacznik czasu usuwania w milisekundach od system UNIX epoki przywracania przebiegów. Przywracana jest tylko sygnatura czasowa usunięta lub po tej sygnaturze czasowej.
  • max_runs:Opcjonalne. Dodatnia liczba całkowita wskazująca maksymalną liczbę przebiegów do przywrócenia. Maksymalna dozwolona wartość dla max_runs to 10000. Jeśli nie zostanie określony, max_runs wartość domyślna to 10000.
import mlflow

# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
  experiment_id=<experiment_id>,
  min_timestamp_millis=<min_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
  experiment_id="4183847697906956",
  min_timestamp_millis=1711990504000,
  max_runs=10
)

Za pomocą środowiska Databricks Runtime 13.3 LTS lub starszego można uruchomić następujący kod klienta w notesie usługi Azure Databricks.

from typing import Optional

def restore_runs(experiment_id: str,
                 min_timestamp_millis: int,
                 max_runs: Optional[int] = None) -> int:
    """
    Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
    Restores at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to restore.
    :param min_timestamp_millis: The minimum deletion timestamp in milliseconds
                                 since the UNIX epoch for restoring runs. Only runs
                                 deleted at or after this timestamp are restored.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to restore. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs restored.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request
    json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_restored"]

Zapoznaj się z dokumentacją interfejsu API eksperymentów usługi Azure Databricks, aby uzyskać parametry i specyfikacje wartości zwracanej na potrzeby przywracania przebiegów na podstawie czasu usunięcia.

Porównywanie przebiegów

Możesz porównać przebiegi z jednego eksperymentu lub z wielu eksperymentów. Na stronie Porównywanie przebiegów znajdują się informacje na temat wybranych przebiegów w formatach graficznych i tabelarycznych. Można również tworzyć wizualizacje wyników przebiegu i tabele informacji o przebiegu, parametrach przebiegu i metrykach.

Aby utworzyć wizualizację:

  1. Wybierz typ wykresu (wykres współrzędnych równoległych, wykres punktowy lub wykres konturowy).
    1. W przypadku wykresu współrzędnych równoległych wybierz parametry i metryki do wykreślenia. W tym miejscu można zidentyfikować relacje między wybranymi parametrami i metrykami, co ułatwia lepsze zdefiniowanie przestrzeni dostrajania hiperparametrów dla modeli.

      porównanie wizualizacji stron przebiegów

    2. W przypadku wykresu punktowego lub wykresu konturowego wybierz parametr lub metrykę do wyświetlenia na każdej osi.

W tabelach Parametry i metryki są wyświetlane parametry przebiegu i metryki ze wszystkich wybranych przebiegów. Kolumny w tych tabelach są identyfikowane przez tabelę Szczegóły uruchamiania bezpośrednio powyżej. Dla uproszczenia można ukryć parametry i metryki, które są identyczne we wszystkich wybranych przebiegach, przełączając Pokaż przycisk Tylko różnicepolecenie .

porównanie tabel stron przebiegów

Porównanie przebiegów z jednego eksperymentu

  1. Na stronie eksperymentu wybierz co najmniej dwa uruchomienia, klikając pole wyboru po lewej stronie przebiegu lub zaznaczając pole wyboru w górnej części kolumny.
  2. Kliknij pozycję Porównaj. Zostanie wyświetlony ekran Porównanie <N> przebiegów.

Porównanie przebiegów z wielu eksperymentów

  1. Na stronie Eksperymenty wybierz eksperymenty, które chcesz porównać, klikając pole po lewej stronie nazwy eksperymentu.
  2. Kliknij pozycję Porównaj (n) (n to liczba wybranych eksperymentów). Zostanie wyświetlony ekran przedstawiający wszystkie przebiegi z wybranych eksperymentów.
  3. Zaznacz co najmniej dwa uruchomienia, klikając pole wyboru po lewej stronie przebiegu lub zaznacz wszystkie uruchomienia, zaznaczając pole w górnej części kolumny.
  4. Kliknij pozycję Porównaj. Zostanie wyświetlony ekran Porównanie <N> przebiegów.

Kopiowanie przebiegów między obszarami roboczymi

Aby zaimportować lub wyeksportować przebiegi platformy MLflow do lub z obszaru roboczego usługi Databricks, możesz użyć projektu open source opartego na społeczności MLflow Export-Import.