Ś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.

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:

  1. Przejdź do usługi Azure Machine Edukacja Studio.

  2. Przejdź do obszaru roboczego.

  3. Znajdź eksperyment według nazwy w obszarze roboczym.

  4. 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.

  5. 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.

    Zrzut ekranu przedstawiający widok metryk.

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.