Udostępnij za pośrednictwem


Śledzenie opracowywania modeli przy użyciu biblioteki MLflow

Śledzenie MLflow umożliwia rejestrowanie notesów i zestawów danych szkoleniowych, parametrów, metryk, tagów i artefaktów związanych z trenowaniem modelu uczenia maszynowego lub uczenia głębokiego. Przykładowy notes umożliwiający rozpoczęcie pracy z platformą MLflow można znaleźć w artykule Tutorial: end-to-end ML models on Azure Databricks (Samouczek: kompleksowe modele uczenia maszynowego w usłudze Azure Databricks).

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

Proces tworzenia modelu jest iteracyjny i może być wyzwaniem, aby na bieżąco śledzić swoją pracę podczas opracowywania i optymalizacji modelu. W usłudze Azure Databricks możesz użyć śledzenia platformy MLflow, aby ułatwić śledzenie procesu opracowywania modelu, w tym ustawień parametrów lub kombinacji, które próbowano i jak wpływały na wydajność modelu.

Śledzenie MLflow wykorzystuje eksperymenty oraz uruchomienia do rejestrowania i monitorowania rozwoju modeli uczenia maszynowego i głębokiego uczenia. Uruchomienie to pojedyncze wykonanie kodu modelu. Podczas przebiegu MLflow można rejestrować parametry i wyniki modelu. Eksperyment jest zbiorem powiązanych uruchomień. W eksperymencie można porównać i filtrować przebiegi, aby zrozumieć, jak działa model i jak jego wydajność zależy od ustawień parametrów, danych wejściowych itd.

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.

Interfejs API śledzenia MLflow

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.

Środowisko MLflow jest wstępnie zainstalowane w klastrach uczenia maszynowego usługi 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.

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 środowiskowych iDATABRICKS_HOST, zobacz DATABRICKS_TOKEN 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")

dzienniki są uruchamiane w eksperymencie

Platforma MLflow może automatycznie rejestrować kod trenowania napisany w wielu strukturach uczenia maszynowego i uczenia głębokiego. Jest to najprostszy sposób rozpoczęcia korzystania ze śledzenia MLflow. Zobacz przykład w notesie .

Aby uzyskać większą kontrolę nad tym, które parametry i metryki są rejestrowane, lub rejestrować dodatkowe artefakty, takie jak pliki CSV lub wykresy, użyj interfejsu API rejestrowania MLflow. Zobacz przykładowy notes .

Użyj autologowania do śledzenia procesu tworzenia modeli

W tym przykładowym notesie pokazano, jak używać automatycznego rejestrowania z scikit-learn. Aby uzyskać informacje na temat automatycznego rejestrowania z innymi bibliotekami języka Python, zobacz dokumentacji automatycznego rejestrowania platformy MLflow.

Automatyczne rejestrowanie MLflow — notatnik Python

Pobierz notes

Śledzenie tworzenia modeli za pomocą interfejsu API rejestrowania

W tym przykładowym notesie pokazano, jak używać interfejsu API rejestrowania języka Python . Platforma MLflow ma również interfejsy API REST, R i Java .

Notes rejestrowania MLflow API w Pythonie

Pobierz notes

Rejestrowanie przebiegów w eksperymencie obszaru roboczego

Domyślnie podczas trenowania modelu w notatniku usługi Databricks przebiegi są rejestrowane w eksperymencie notatnika. 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 zarejestrować przebiegi w eksperymencie obszaru roboczego, użyj kodu podobnego do poniższego w wywołaniu notatnika lub interfejsu API.

experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)

Aby uzyskać instrukcje dotyczące tworzenia eksperymentu obszaru roboczego, zobacz Tworzenie eksperymentu obszaru roboczego. Aby uzyskać informacje na temat wyświetlania zarejestrowanych przebiegów, zobacz Wyświetlanie eksperymentu notesu i Wyświetlanie eksperymentu obszaru roboczego.

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 śledzić tworzenie modeli przy użyciu biblioteki MLflow.