Śledzenie eksperymentów i modeli uczenia maszynowego za pomocą biblioteki MLflow
Z tego artykułu dowiesz się, jak używać biblioteki MLflow do śledzenia eksperymentów i przebiegów w obszarach roboczych usługi Azure Machine Edukacja.
Śledzenie to proces zapisywania odpowiednich informacji o uruchamianych eksperymentach. Zapisane informacje (metadane) różnią się w zależności od projektu i mogą obejmować:
- Kod
- Szczegóły środowiska (takie jak wersja systemu operacyjnego, pakiety języka Python)
- Dane wejściowe
- Konfiguracje parametrów
- Modele
- Metryki oceny
- Wizualizacje ewaluacyjne (takie jak macierze pomyłek, wykresy ważności)
- Wyniki oceny (w tym niektóre przewidywania oceny)
Podczas pracy z zadaniami w usłudze Azure Machine Edukacja usługa Azure Machine Edukacja automatycznie śledzi niektóre informacje o eksperymentach, takich jak kod, środowisko i dane wejściowe i wyjściowe. Jednak w przypadku innych, takich jak modele, parametry i metryki, konstruktor modelu musi skonfigurować swoje śledzenie, ponieważ są one specyficzne dla konkretnego scenariusza.
Uwaga
Jeśli chcesz śledzić eksperymenty uruchomione w usłudze Azure Databricks, zobacz Track Azure Databricks ML experiments with MLflow and Azure Machine Edukacja (Śledzenie eksperymentów usługi Azure Databricks ML za pomocą platformy MLflow i usługi Azure Machine Edukacja). Aby dowiedzieć się więcej na temat śledzenia eksperymentów uruchomionych w usłudze Azure Synapse Analytics, zobacz Track Azure Synapse Analytics ML experiments with MLflow and Azure Machine Edukacja (Śledzenie eksperymentów usługi Azure Synapse Analytics ML przy użyciu platformy MLflow i usługi Azure Machine Edukacja).
Zalety eksperymentów śledzenia
Zdecydowanie zalecamy, aby praktycy uczenia maszynowego śledzić eksperymenty niezależnie od tego, czy trenujesz z zadaniami w usłudze Azure Machine Edukacja, czy trenować interaktywnie w notesach. Śledzenie eksperymentów umożliwia:
- Organizuj wszystkie eksperymenty uczenia maszynowego w jednym miejscu. Następnie możesz wyszukiwać i filtrować eksperymenty oraz przechodzić do szczegółów, aby wyświetlić szczegółowe informacje o eksperymentach, które przeprowadzono wcześniej.
- Porównanie eksperymentów, analizowanie wyników i debugowanie trenowania modelu z niewielką ilością dodatkowych zadań.
- Odtwórz lub ponownie uruchom eksperymenty, aby zweryfikować wyniki.
- Zwiększ współpracę, ponieważ możesz zobaczyć, co robią inni koledzy z zespołu, udostępniać wyniki eksperymentów i uzyskiwać dostęp do danych eksperymentu programowo.
Dlaczego warto używać biblioteki MLflow do śledzenia eksperymentów?
Obszary robocze usługi Azure Machine Edukacja są zgodne z platformą MLflow, co oznacza, że możesz używać biblioteki MLflow do śledzenia przebiegów, metryk, parametrów i artefaktów w obszarach roboczych usługi Azure Machine Edukacja. Główną zaletą korzystania z biblioteki MLflow do śledzenia jest to, że nie trzeba zmieniać procedur szkoleniowych, aby pracować z usługą Azure Machine Edukacja ani wprowadzać żadnej składni specyficznej dla chmury.
Aby uzyskać więcej informacji na temat wszystkich obsługiwanych funkcji MLflow i Azure Machine Edukacja, zobacz MLflow i Azure Machine Edukacja.
Ograniczenia
Niektóre metody dostępne w interfejsie API platformy MLflow mogą nie być dostępne po nawiązaniu połączenia z usługą Azure Machine Edukacja. Aby uzyskać szczegółowe informacje na temat obsługiwanych i nieobsługiwanych operacji, zobacz Macierz obsługi dla przebiegów zapytań i eksperymentów.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Edukacja.
Zainstaluj pakiet
mlflow
zestawu MLflow SDK i wtyczkę usługi Azure Machine Edukacja dla platformy MLflowazureml-mlflow
.pip install mlflow azureml-mlflow
Napiwek
Możesz użyć
mlflow-skinny
pakietu, który jest lekkim pakietem MLflow bez magazynu SQL, serwera, interfejsu użytkownika lub zależności nauki o danych.mlflow-skinny
jest zalecany dla użytkowników, którzy potrzebują głównie możliwości śledzenia i rejestrowania MLflow bez importowania pełnego zestawu funkcji, w tym wdrożeń.Obszar roboczy usługi Azure Machine Learning. Możesz go utworzyć, wykonując czynności opisane w samouczku Tworzenie zasobów uczenia maszynowego.
Jeśli wykonujesz zdalne śledzenie (czyli śledzenie eksperymentów uruchomionych poza usługą Azure Machine Edukacja), skonfiguruj rozwiązanie MLflow, aby wskazywało identyfikator URI śledzenia obszaru roboczego usługi Azure Machine Edukacja. Aby uzyskać więcej informacji na temat łączenia platformy MLflow z obszarem roboczym, zobacz Configure MLflow for Azure Machine Edukacja (Konfigurowanie platformy MLflow dla usługi Azure Machine Edukacja).
Konfigurowanie eksperymentu
Platforma MLflow organizuje informacje w eksperymentach i przebiegach (uruchomienia są nazywane zadaniami w usłudze Azure Machine Edukacja). Domyślnie przebiegi są rejestrowane w eksperymencie o nazwie Default , który jest automatycznie tworzony. Możesz skonfigurować eksperyment, w którym odbywa się śledzenie.
W przypadku interaktywnego szkolenia, takiego jak w notesie Jupyter, użyj polecenia mlflow.set_experiment()
MLflow . Na przykład poniższy fragment kodu konfiguruje eksperyment:
experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)
Konfigurowanie przebiegu
Usługa Azure Machine Edukacja śledzi dowolne zadanie szkoleniowe w tym, co MLflow wywołuje przebieg. Użyj przebiegów, aby przechwycić wszystkie wykonywane przez zadanie przetwarzanie.
Gdy pracujesz interaktywnie, platforma MLflow zacznie śledzić procedurę trenowania natychmiast po próbie zarejestrowania informacji wymagających aktywnego uruchomienia. Na przykład śledzenie MLflow rozpoczyna się po zarejestrowaniu metryki, parametru lub rozpoczęcia cyklu trenowania, a funkcja automatycznego rejestrowania usługi Mlflow jest włączona. Jednak zwykle pomocne jest jawne uruchomienie przebiegu, szczególnie jeśli chcesz przechwycić całkowity czas eksperymentu w polu Czas trwania . Aby jawnie uruchomić przebieg, użyj polecenia mlflow.start_run()
.
Bez względu na to, czy uruchamiasz przebieg ręcznie, czy nie, w końcu musisz zatrzymać przebieg, aby usługa MLflow wiedziała, że przebieg eksperymentu jest wykonywany i może oznaczać stan przebiegu jako Ukończono. Aby zatrzymać przebieg, użyj polecenia mlflow.end_run()
.
Zdecydowanie zalecamy ręczne uruchamianie przebiegów, aby nie zapominać o ich zakończeniu podczas pracy w notesach.
Aby uruchomić przebieg ręcznie i zakończyć go po zakończeniu pracy w notesie:
mlflow.start_run() # Your code mlflow.end_run()
Zazwyczaj warto użyć paradygmatu menedżera kontekstu, aby ułatwić zapamiętanie zakończenia przebiegu:
with mlflow.start_run() as run: # Your code
Po uruchomieniu nowego przebiegu
mlflow.start_run()
za pomocą polecenia może być przydatne określenie parametrurun_name
, który później przekłada się na nazwę przebiegu w interfejsie użytkownika usługi Azure Machine Edukacja i ułatwia zidentyfikowanie przebiegu szybciej:with mlflow.start_run(run_name="hello-world-example") as run: # Your code
Włączanie automatycznego rejestrowania MLflow
Metryki, parametry i pliki można rejestrować ręcznie za pomocą biblioteki MLflow . Można jednak również polegać na funkcji automatycznego rejestrowania MLflow. Każda platforma uczenia maszynowego obsługiwana przez platformę MLflow decyduje o tym, co ma być śledzone automatycznie.
Aby włączyć automatyczne rejestrowanie, wstaw następujący kod przed kodem treningowym:
mlflow.autolog()
Wyświetlanie metryk i artefaktów w obszarze roboczym
Metryki i artefakty z rejestrowania MLflow są śledzone w obszarze roboczym. Możesz je wyświetlać i uzyskiwać do nich dostęp w studio w dowolnym momencie lub uzyskać do nich dostęp programowo za pośrednictwem zestawu MLflow SDK.
Aby wyświetlić metryki i artefakty w studio:
Przejdź do usługi Azure Machine Edukacja Studio.
Przejdź do obszaru roboczego.
Znajdź eksperyment według nazwy w obszarze roboczym.
Wybierz zarejestrowane metryki, aby renderować wykresy po prawej stronie. Wykresy można dostosować, stosując wygładzenie, zmianę koloru lub kreślenie wielu metryk na jednym grafie. Możesz również zmienić rozmiar i zmienić układ zgodnie z życzeniem.
Po utworzeniu żądanego widoku zapisz go do użytku w przyszłości i udostępnij go kolegom z zespołu, korzystając z linku bezpośredniego.
Aby uzyskać dostęp do metryk, parametrów i artefaktów lub wykonywać zapytania programowo za pomocą zestawu MLflow SDK, użyj mlflow.get_run().
import mlflow
run = mlflow.get_run("<RUN_ID>")
metrics = run.data.metrics
params = run.data.params
tags = run.data.tags
print(metrics, params, tags)
Napiwek
W przypadku metryk poprzedni przykładowy kod zwróci tylko ostatnią wartość danej metryki. Jeśli chcesz pobrać wszystkie wartości danej metryki, użyj mlflow.get_metric_history
metody . Aby uzyskać więcej informacji na temat pobierania wartości metryki, zobacz Pobieranie parametrów i metryk z przebiegu.
Aby pobrać zarejestrowane artefakty, takie jak pliki i modele, użyj mlflow.artifacts.download_artifacts().
mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")
Aby uzyskać więcej informacji na temat pobierania lub porównywania informacji z eksperymentów i przebiegów w usłudze Azure Machine Edukacja, korzystając z biblioteki MLflow, zobacz Zapytania i porównanie eksperymentów i przebiegów za pomocą biblioteki MLflow.