Śledzenie przebiegów trenowania uczenia maszynowego i uczenia głębokiego

Składnik śledzenia MLflow umożliwia rejestrowanie właściwości źródła, parametrów, metryk, tagów i artefaktów związanych z trenowaniem modelu uczenia maszynowego lub uczenia głębokiego. Aby rozpocząć pracę z platformą MLflow, wypróbuj jeden z samouczków szybkiego startu MLflow.

Śledzenie MLflow przy użyciu eksperymentów i przebiegów

Śledzenie MLflow opiera się na dwóch pojęciach, eksperymentach i przebiegach:

Uwaga

Od 27 marca 2024 r. platforma MLflow nakłada limit przydziału na liczbę całkowitych parametrów, tagów i kroków metryk dla wszystkich istniejących i nowych przebiegów oraz liczbę łącznych przebiegów dla wszystkich istniejących i nowych eksperymentów, zobacz Limity zasobów. W przypadku trafienia przebiegów na limit przydziału eksperymentu usługa Databricks zaleca usunięcie przebiegów, które nie są już potrzebne przy użyciu interfejsu API uruchamiania usuwania w języku Python. Jeśli osiągniesz inne limity przydziału, usługa Databricks zaleca dostosowanie strategii rejestrowania, aby utrzymać limit. Jeśli potrzebujesz zwiększenia tego limitu, skontaktuj się z zespołem ds. kont usługi Databricks z krótkim wyjaśnieniem przypadku użycia, dlaczego sugerowane metody ograniczania ryzyka nie działają, a także nowy limit, którego żądasz.

Parametry , metryki, tagi i artefakty z przebiegu modelu są dzienniki interfejsu API śledzenia MLflow. Interfejs API śledzenia komunikuje się z serwerem śledzenia MLflow. W przypadku korzystania z usługi Databricks serwer śledzenia hostowany w usłudze Databricks rejestruje dane. Hostowany serwer śledzenia MLflow ma interfejsy API python, Java i R.

Uwaga

Środowisko MLflow jest instalowane w klastrach uczenia maszynowego środowiska Databricks Runtime. Aby użyć biblioteki MLflow w klastrze środowiska Databricks Runtime, należy zainstalować bibliotekę mlflow . Aby uzyskać instrukcje dotyczące instalowania biblioteki w klastrze, zobacz Instalowanie biblioteki w klastrze. Określone pakiety do zainstalowania dla platformy MLflow to:

  • W polu Python wybierz pozycję Źródło biblioteki PyPI i wprowadź mlflow ciąg w polu Pakiet .
  • W polu R wybierz pozycję Źródło biblioteki CRAN i wprowadź mlflow wartość w polu Pakiet .
  • W przypadku języka Scala zainstaluj następujące dwa pakiety:
    • Wybierz pozycję Źródło biblioteki Maven i wprowadź ciąg org.mlflow:mlflow-client:1.11.0 w polu Współrzędne .
    • Wybierz pozycję Źródło biblioteki PyPI i wprowadź mlflow ciąg w polu Pakiet .

Gdzie są rejestrowane przebiegi MLflow

Wszystkie przebiegi platformy MLflow są rejestrowane w aktywnym eksperymencie, który można ustawić przy użyciu dowolnego z następujących sposobów:

Jeśli nie ustawiono aktywnego eksperymentu, przebiegi są rejestrowane w eksperymencie notesu.

Aby zarejestrować wyniki eksperymentu na zdalnym serwerze śledzenia MLflow w obszarze roboczym innym niż ten, w którym uruchamiasz eksperyment, ustaw identyfikator URI śledzenia, aby odwoływać się do zdalnego obszaru roboczego za mlflow.set_tracking_uri()pomocą polecenia , i ustawić ścieżkę do eksperymentu w zdalnym obszarze roboczym przy użyciu polecenia mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Jeśli eksperymenty są uruchamiane lokalnie i chcesz rejestrować wyniki eksperymentów na serwerze śledzenia MLflow usługi Databricks, podaj wystąpienie obszaru roboczego usługi Databricks (DATABRICKS_HOST) i osobisty token dostępu usługi Databricks (DATABRICKS_TOKEN). Następnie możesz ustawić identyfikator URI śledzenia, aby odwoływać się do obszaru roboczego za mlflow.set_tracking_uri()pomocą polecenia , i ustawić ścieżkę do eksperymentu przy użyciu polecenia mlflow.set_experiment(). Aby uzyskać szczegółowe informacje na temat tego, gdzie można znaleźć wartości zmiennych DATABRICKS_HOST środowiskowych iDATABRICKS_TOKEN, zobacz Perform Azure Databricks personal access token authentication (Wykonywanie uwierzytelniania osobistego tokenu dostępu w usłudze Azure Databricks).

W poniższym przykładzie kodu pokazano ustawienie następujących wartości:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

Przykładowy notes rejestrowania

W tym notesie pokazano, jak rejestrować przebiegi do eksperymentu notesu i eksperymentu obszaru roboczego. W eksperymencie notesu można rejestrować tylko przebiegi MLflow zainicjowane w notesie. Środowisko MLflow uruchamiane z dowolnego notesu lub z interfejsów API może być rejestrowane w eksperymencie obszaru roboczego. Aby uzyskać informacje na temat wyświetlania zarejestrowanych przebiegów, zobacz Wyświetlanie eksperymentu notesu i Wyświetlanie eksperymentu obszaru roboczego.

Dziennik MLflow uruchamia notes

Pobierz notes

Możesz użyć języka MLflow Python, Java lub Scala oraz interfejsów API języka R do uruchamiania przebiegów i rejestrowania danych przebiegu. Aby uzyskać szczegółowe informacje, zobacz przykładowe notesy MLflow.

Uzyskiwanie dostępu do serwera śledzenia MLflow spoza usługi Azure Databricks

Możesz również zapisywać i odczytywać z serwera śledzenia spoza usługi Azure Databricks, na przykład przy użyciu interfejsu wiersza polecenia platformy MLflow. Zobacz Uzyskiwanie dostępu do serwera śledzenia MLflow spoza usługi Azure Databricks.

Programowe analizowanie przebiegów platformy MLflow

Dostęp do danych uruchamiania platformy MLflow można uzyskać programowo przy użyciu następujących dwóch interfejsów API ramki danych:

W tym przykładzie pokazano, jak używać klienta języka Python MLflow do tworzenia pulpitu nawigacyjnego, który wizualizuje zmiany w metrykach oceny w czasie, śledzi liczbę przebiegów uruchomionych przez określonego użytkownika i mierzy łączną liczbę przebiegów dla wszystkich użytkowników:

Dlaczego metryki i dane wyjściowe trenowania modelu mogą się różnić

Wiele algorytmów używanych w usłudze ML ma losowy element, taki jak próbkowanie lub losowe warunki początkowe w obrębie samego algorytmu. Podczas trenowania modelu przy użyciu jednego z tych algorytmów wyniki mogą nie być takie same w przypadku każdego przebiegu, nawet jeśli uruchomisz przebieg z tymi samymi warunkami. Wiele bibliotek oferuje mechanizm rozmieszczania w celu naprawienia początkowych warunków dla tych elementów stochastycznych. Jednak mogą istnieć inne źródła odmian, które nie są kontrolowane przez nasiona. Niektóre algorytmy są wrażliwe na kolejność danych, a rozproszone algorytmy uczenia maszynowego mogą również mieć wpływ na sposób partycjonowania danych. Ogólnie rzecz biorąc, ta odmiana nie jest znacząca i nie jest ważna w procesie tworzenia modelu.

Aby kontrolować zmiany spowodowane różnicami w kolejności i partycjonowaniu, użyj funkcji PySpark ponownej partycjonowania i sortowaniaWithinPartitions.

Przykłady śledzenia MLflow

W poniższych notesach pokazano, jak wytrenować kilka typów modeli i śledzić dane treningowe w usłudze MLflow oraz jak przechowywać dane śledzenia w usłudze Delta Lake.