Wyszukiwanie przebiegów w MLflow

Wyszukiwanie Przebiegow W Mlflow



Aby śledzić i zarządzać eksperymentami uczenia maszynowego, MLflow oferuje rozbudowaną platformę. Możliwość wyszukiwania przebiegów jest jedną z kluczowych funkcji MLflow. Dzięki temu możliwa jest identyfikacja opracowanych eksperymentów i uporządkowanie ich w sposób ułatwiający odnalezienie informacji w razie potrzeby. Możemy wyszukiwać przebiegi za pomocą interfejsu API wyszukiwania MLflow, korzystając z wielu różnych kryteriów, które mogą obejmować:
  • Identyfikator lub nazwa eksperymentu
  • Uruchom identyfikator
  • Parametry i wartości
  • Metryki i wartości
  • Tagi
  • Inne atrybuty powiązane z przebiegami

Uruchomienia można filtrować według statusu, czasu rozpoczęcia, zakończenia i czasu trwania za pomocą interfejsu API wyszukiwania MLflow. Ułatwia to filtrowanie wielu uruchomień i znajdowanie tych, które interesują użytkowników.

Funkcja wyszukiwania MLflow

Użyj funkcji mlflow.search_runs(), aby uzyskać dostęp do interfejsu API wyszukiwania MLflow. Ta funkcja akceptuje różne argumenty, takie jak następujące:







  • Identyfikator lub nazwa eksperymentu
  • Filtruj ciąg lub tekst
  • Maksymalna liczba zwróconych uruchomień jest określona przez argument max_results

Uproszczony wariant klauzuli WHERE SQL (Structured Query Language) to ciąg filtrujący lub tekst. Można go wykorzystać do wskazania kryteriów, według których chcemy sortować przebiegi.



Składnia funkcji MLflow Search_Runs().

W poniższym przykładzie rzeczywisty identyfikator lub nazwę eksperymentu, w którym chcemy przeszukać, należy zastąpić „id_eksperymentu lub nazwa_eksperymentu”. Zmienna search_criteria umożliwia wprowadzenie dowolnych kryteriów wyszukiwania. Kryteria te mogą być określone za pomocą metryk, tagów, parametrów lub dodatkowych cech. Podstawowa składnia funkcji search_runs() jest następująca:



# Zaimportuj API wyszukiwania mlflow, aby użyć funkcji search_runs

import mlprzepływ

# Podaj identyfikator lub nazwę eksperymentu (jest to opcjonalne; )

id_wyd = „Identyfikator lub NAZWA eksperymentu”

# Zdefiniuj kryteria wyszukiwania przebiegów

szukana fraza = „metrics.accuracy > 0,8 ORAZ params.learning_rate = '0,01' ORAZ params.efficiency_rate > '80''

# Przeprowadź wyszukiwanie

biegnie = mlprzepływ. search_runs ( identyfikatory_eksperymentu = id_wyd , ciąg_filtru = szukana fraza )

# Wyświetl wyniki

wydrukować ( „Wyniki wyszukiwania:” )

wydrukować ( biegnie )

Przeprowadź wyszukiwanie, korzystając z wielu kryteriów

1. Wyszukaj według wartości metryki

Przebiegi można filtrować według wartości poszczególnych metryk przy użyciu pola metryk w interfejsie API wyszukiwania MLflow. W polu metryk pojawi się zbiór nazw metryk oddzielonych przecinkami. Na przykład następujący ciąg filtru lokalizuje wszystkie przebiegi z wartością dokładności większą niż 0,9:





metryka. dokładność > 0,9

Pełna lista metryk dostępnych do wykorzystania w polu metryki jest podana w następujący sposób:

  • dokładność
  • auc
  • f1
  • precyzja
  • przypomnienie sobie czegoś
  • mapa
  • logloss
  • błąd_klasyfikacji
  • multi_class_logloss

Dodatkowo użytkownicy mogą filtrować przebiegi według zakresu wartości metryki, korzystając z pola metryki. Na przykład następny ciąg filtru lokalizuje wszystkie przebiegi, których miara dokładności mieści się w przedziale od 0,4 do 0,8:



metryka. dokładność MIĘDZY 0,4 I 0,8

W polu metryki operatory AND i OR łączą metryki, aby znaleźć przebiegi z dokładnością metryki i wartościami f1 powyżej 0,3 i 0,8:

metryka. dokładność > 0,3 ORAZ metryki. f1 > 0,8

2. Wyszukaj według wartości parametru

Skorzystaj z pola params w interfejsie API wyszukiwania MLflow, aby przeprowadzić wyszukiwanie według wartości parametru. Nazwy i wartości parametrów są wyświetlane w polu parametrów za pomocą przecinków. W tym przykładzie wspomniany ciąg filtrów lokalizuje wszystkie przebiegi z parametrem num_boost_round, które mają wartość 100:

parametry. num_boost_round = „100”

Kilka innych przykładów ciągów wyszukiwania dla wartości parametrów:

  • params.num_boost_round = 900
  • params.learning_rate MIĘDZY 0,001 A 0,01
  • params.num_boost_round=’70’ ORAZ params.learning_rate=’0.01′

3. Szukaj według tagów

Oto przykład wyszukiwania z wykorzystaniem tagów:

kryteria wyszukiwania = 'tags.mlflow.source.type = 'słownik''

Przykład wartości macierzy i parametrów do wykonania funkcji Mlflow.search_runs().

Przeanalizujmy przykład konfiguracji eksperymentu MLflow, rejestrowania przebiegów, a następnie użycia funkcji mlflow.search_runs() do zainicjowania wyszukiwania. Aby w pełni zrozumieć kod, wykonaj następujące kroki:

Krok 1: Utwórz eksperyment MLflow

Zaczynamy od skonfigurowania eksperymentu MLflow. Pobiera istniejący eksperyment, jeśli eksperyment już istnieje. Jeśli nie, tworzy nowy.

Wyjaśnienie kodu:

Biblioteka MLflow jest importowana w pierwszym wierszu kodu, a nazwa_eksperymentu jest ustawiana w następnym wierszu na „Mój pierwszy eksperyment MLflow”. Kiedy nazwa_eksperymentu zostanie przekazana do funkcji „mlflow.get_experiment_by_name”, funkcja ta zwróci „Brak”, jeśli eksperyment nie istnieje, a w przeciwnym razie obiekt eksperymentu.

Sprawdź, czy w instrukcji warunkowej istnieje eksperyment. Jeśli eksperyment już istnieje, ustaw identyfikator eksperymentu. W przeciwnym razie użyj „mlflow.create_experiment”, aby utworzyć nowy eksperyment. Funkcja ta zwraca identyfikator eksperymentu. Po zakończeniu eksperymentu wyświetl identyfikator eksperymentu na ekranie konsoli lub terminala. Skopiuj poniższy kod do notatnika i zapisz plik pod żądaną nazwą i rozszerzeniem „.py”:

# importuj bibliotekę mlflow

import mlprzepływ

# Utwórz lub pobierz eksperyment

nazwa_eks = „Mój pierwszy eksperyment MLflow”

# Pobierz eksperyment według nazwy za pomocą funkcji mlflow get_experiment_by_name

do potęgi = mlprzepływ. get_experiment_by_name ( nazwa_eks )

# Sprawdź, czy eksperyment już nie istnieje

Jeśli do potęgi Jest Nic :

# Utwórz nowy eksperyment i przekaż nazwę eksperymentu do funkcji mlflow.create_experiment

id_wyd = mlprzepływ. utwórz_eksperyment ( nazwa_eks )

# Wyświetl komunikat o powodzeniu na ekranie

wydrukować ( „Eksperyment nie istnieje. Eksperyment utworzono pomyślnie!” )

w przeciwnym razie :

# Pobierz identyfikator_eksperymentu istniejącego eksperymentu

id_wyd = do potęgi. identyfikator_eksperymentu

wydrukować ( „Eksperyment już istnieje!” )

# Wyświetl identyfikator eksperymentu

wydrukować ( „Identyfikator eksperymentu:” , id_wyd )

Teraz uruchom program w wierszu poleceń lub oknie terminala za pomocą kompilatora Pythona i wpisz „Python”, a następnie nazwę pliku, która w tym przypadku to „MyFirstMlflowExperiment.py”. Kiedy eksperyment jest przeprowadzany po raz pierwszy, jeszcze go nie ma. Zatem MLFlow tworzy taki eksperyment i wypisuje identyfikator eksperymentu na ekranie konsoli:

Uruchom ponownie kod, aby sprawdzić, czy nie tworzy nowych eksperymentów i wyświetlić identyfikatory już istniejących. Poniższy zrzut ekranu pokazuje, że eksperyment już istnieje:

Krok 2: Rejestruj przebiegi za pomocą metryk i parametrów

Spróbujmy teraz zarejestrować niektóre przebiegi z metrykami i parametrami dla właśnie rozpoczętego eksperymentu. W scenariuszu ze świata rzeczywistego opracowujemy modele uczenia maszynowego i rejestrujemy odpowiednie informacje, takie jak metryki i parametry, na końcu każdego przebiegu. W tym przypadku dokładność jest używana jako wartość macierzowa i w tym przypadku wynosi ona 0,95. Wartości parametrów uczenia się i współczynnika efektywności wynoszą odpowiednio 0,01 i 90. Oto kod:

# Rozpocznij przebieg MLflow, aby rejestrować metryki i parametry

z mlprzepływ. start_uruchom ( identyfikator_eksperymentu = id_wyd ) :

# Tutaj znajdziesz kod uczenia maszynowego (to tylko symulowany przykład)

dokładność_modelu = 0,95

machine_learning_rate = 0,01

wydajność_wskaźnik = 90

# Rejestruj metryki i parametry

mlprzepływ. log_metryka ( 'dokładność' , dokładność_modelu )

mlprzepływ. parametr_logowania ( „szybkość_uczenia się” , machine_learning_rate )

mlprzepływ. parametr_logowania ( „wskaźnik_wydajności” , wydajność_wskaźnik )

Wynik wykonania powyższego kodu można zobaczyć tutaj. Wynik jest taki sam jak poprzednio:

Krok 3: Przeprowadź wyszukiwanie za pomocą Mlflow.search_runs()

Na koniec przeprowadzamy wyszukiwanie zarejestrowanych przebiegów przy użyciu kilku parametrów i wyświetlamy wyniki na ekranie terminala:

# Zdefiniuj kryteria wyszukiwania przebiegów

zdefiniuj_kryteria_wyszukiwania = 'metrics.accuracy > 0,8 ORAZ params.learning_rate = '0,01' ORAZ params.efficiency_rate = '90''

# Przeprowadź wyszukiwanie

biegnie = mlprzepływ. search_runs ( identyfikatory_eksperymentu = id_wyd , ciąg_filtru = zdefiniuj_kryteria_wyszukiwania )

# Wyświetl wyniki

wydrukować ( „Wyniki wyszukiwania:” )

wydrukować ( biegnie )

Wykonanie funkcji search_runs generuje ostrzeżenie dotyczące narzędzia Git:


Dodaj kod na górze pliku Python, aby wyłączyć to ostrzeżenie. Oto krótka część kodu:

import mlprzepływ

import Ty

Ty . około [ „GIT_PYTHON_REFRESH” ] = 'cichy'

Funkcja „mlflow.search_runs” zostanie pomyślnie wykonana po dodaniu następujących linii kodu:

Wniosek

Funkcja „mlflow.search_runs” pozwala użytkownikom szybko eksplorować i oceniać eksperymenty uczenia maszynowego, analizować wiele przebiegów i wskazywać optymalne warianty lub modele hiperparametrów, które dają pożądane wyniki. Jest to skuteczne narzędzie do nadzorowania, planowania i analizowania przepływu pracy w uczeniu maszynowym.