Udostępnij przez


Ś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 MLflow znajduje się w samouczku: kompleksowe klasyczne modele uczenia maszynowego w Azure Databricks.

Śledzenie MLflow za pomocą eksperymentów, przebiegów i modeli

Proces tworzenia modelu jest iteracyjny i śledzenie postępów w pracy podczas opracowywania i optymalizacji modelu może być trudne. W usłudze Azure Databricks możesz użyć śledzenia MLflow, które pomogą ci śledzić proces opracowywania modelu, w tym ustawienia parametrów lub kombinacje, które próbowałeś/próbowałaś oraz jak wpływały na wydajność modelu.

Śledzenie MLflow używa eksperymentów, uruchomień i modeli do rejestrowania i śledzenia tworzenia modeli uczenia maszynowego i uczenia głębokiego. Uruchomienie to pojedyncze wykonanie kodu modelu. Podczas sesji 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. Model to kolekcja artefaktów reprezentujących wytrenowany model uczenia maszynowego.

W przypadku platformy MLflow 3LoggedModels podnosi koncepcję modelu utworzonego przez przebieg, ustanawiając go jako odrębną jednostkę do śledzenia cyklu życia modelu w różnych przebiegach trenowania i oceny.

Uwaga

Począwszy od 27 marca 2024 r., MLflow wprowadza limit ilościowy na liczbę całkowitą parametrów, tagów i etapów metryk dla wszystkich istniejących i nowych przebiegów oraz całkowitą liczbę przebiegów dla wszystkich istniejących i nowych eksperymentów, zobacz Limity zasobów. Jeśli osiągniesz limit przebiegów na eksperyment, Databricks zaleca usunięcie przebiegów, które nie są już potrzebne, korzystając z API do usuwania przebiegów w języku Python. Jeśli osiągniesz inne limity kwot, Databricks zaleca dostosowanie strategii rejestrowania, aby pozostać w limicie. 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.

API do śledzenia MLflow

Interfejs API śledzenia MLflow zapisuje parametry, metryki, tagi i artefakty z uruchomienia modelu. 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. Aby użyć platformy MLflow 3 i jej najnowszych możliwości śledzenia, pamiętaj o uaktualnieniu do najnowszej wersji (zobacz Instalowanie platformy MLflow 3).

Gdzie są rejestrowane przebiegi MLflow

Usługa Databricks udostępnia hostowany serwer śledzenia MLflow, który przechowuje dane eksperymentu w obszarze roboczym bez konieczności konfigurowania. W razie potrzeby można również skonfigurować platformę MLflow do korzystania z różnych serwerów śledzenia.

Śledzenie MLflow jest kontrolowane przez dwa ustawienia:

  • Identyfikator URI śledzenia: określa, który serwer ma być używany (domyślnie bieżący obszar roboczy usługi Databricks)
  • Eksperyment: określa, który eksperyment na tym serwerze ma być zalogowany
import mlflow

# By default MLflow logs to the Databricks-hosted workspace tracking server. You can connect to a different server using the tracking URI.
mlflow.set_tracking_uri("databricks://remote-workspace-url")

# Set experiment in the tracking server
mlflow.set_experiment("/Shared/my-experiment")

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

Aby uzyskać więcej informacji na temat kontrolowania miejsca przechowywania danych MLflow, zobacz Wybieranie miejsca przechowywania danych MLflow.

Rejestrowanie przebiegów i modeli 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ład w notesie .

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.

MLflow 3

Notatnik Python dla automatycznego logowania w MLflow 3

Zdobądź notatnik

MLflow 2.x

Automatyczne rejestrowanie MLflow — notatnik Python

Zdobądź notatnik

Śledź rozwój modelu 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 .

MLflow 3

Notatnik Python z interfejsem API rejestrowania MLflow dla MLflow 3

Zdobądź notatnik

MLflow 2.x

Notes rejestrowania MLflow API w Pythonie

Zdobądź notatnik

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.

Analizowanie przebiegów MLflow w sposób programatyczny

Dostęp do danych przebiegu MLflow można uzyskać programowo, korzystając z następujących dwóch interfejsów API DataFrame:

  • Interfejs API klienta MLflow w języku Python search_runs zwraca ramkę danych w formacie pandas.
  • Źródło danych eksperymentu MLflow zwraca ramkę danych platformy Apache Spark.

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 przy każdym uruchomieniu, nawet jeśli rozpoczniesz uruchomienie 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. 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 repartycjonowania i sortWithinPartitions.

Przykłady śledzenia MLflow

W poniższych notesach pokazano, jak śledzić tworzenie modeli przy użyciu biblioteki MLflow.