Søgning kører i MLflow

Sogning Korer I Mlflow



For at spore og administrere maskinlæringseksperimenterne tilbyder MLflow en omfattende platform. At have muligheden for at søge kørsler er en af ​​MLflows nøglefunktioner. Dette gør det muligt at identificere de udviklede eksperimenter og organisere dem på en måde, der gør det nemt at lokalisere informationen, når det er nødvendigt. Vi kan søge kørsler ved hjælp af MLflow søge-API ved hjælp af en række forskellige kriterier, som kan omfatte følgende:
  • Eksperiment-id eller navn
  • Kør ID
  • Parametre og værdier
  • Metrik og værdier
  • Tags
  • Andre attributter, der er knyttet til kørslerne

Kørsler kan filtreres efter status, starttidspunkt, sluttidspunkt og varighed ved brug af MLflow søge-API. Det gør det nemmere at filtrere gennem mange kørsler og finde specifikke kørsler, som brugerne er interesserede i.

MLflow søgefunktion

Brug funktionen mlflow.search_runs() til at få adgang til MLflow-søge-API'en. Denne funktion accepterer en række argumenter som følgende:







  • Eksperimentets ID eller navn
  • Filtrer streng eller tekst
  • Det maksimale antal kørsler, der skal returneres, er angivet af argumentet max_results

En forenklet variant af SQL (Structured Query Language) WHERE-sætningen er filterstrengen eller teksten. Den kan bruges til at angive de kriterier, som vi ønsker at sortere kørslerne efter.



Syntaks for MLflow Search_Runs()-funktionen

Det faktiske id eller navn på det eksperiment, som vi ønsker at søge i, skal erstattes af 'eksperiment_id eller eksperiment_navn' i det følgende eksempel. Search_criteria-variablen gør det muligt at indtaste søgekriterierne som ønsket. Disse kriterier kan bestemmes af metrics, tags, parametre eller yderligere karakteristika. Search_runs()-funktionens grundlæggende syntaks er som følger:



# Importer mlflow søge-API'et for at bruge funktionen search_runs

importere mlflow

# Angiv et eksperiment-id eller navn (det er valgfrit; )

exp_id = 'Eksperiment-id eller NAVN'

# Definer søgekriterierne for kørsler

søgestreng = 'metrics.accuracy > 0,8 OG params.learning_rate = '0,01' OG params.efficiency_rate > '80''

# Udfør søgningen

løber = mlflow. search_runs ( eksperiment_id'er = exp_id , filter_streng = søgestreng )

# Vis resultaterne

Print ( 'Søgeresultater:' )

Print ( løber )

Kør en søgning ved hjælp af adskillige kriterier

1. Søg efter metrisk værdi

Kørsler kan filtreres efter værdierne af bestemte metrics ved hjælp af metrics-feltet i MLflow Search API. En samling af metriske navne adskilt af kommaer vises i metric-feltet. For eksempel lokaliserer følgende filterstreng alle kørsler med en nøjagtighedsværdi på mere end 0,9:





målinger. nøjagtighed > 0,9

Den komplette liste over metrics, der er tilgængelige til brug i metrics-feltet, er angivet som følger:

  • nøjagtighed
  • auc
  • f1
  • præcision
  • minde om
  • kort
  • logtab
  • klassifikationsfejl
  • multi_class_logloss

Derudover kan brugerne filtrere kørslerne efter en metrics række af værdier ved hjælp af metrics-feltet. For eksempel lokaliserer den næste filterstreng alle kørsler, der har et nøjagtighedsmål med en værdi mellem 0,4 og 0,8:



målinger. nøjagtighed MELLEM 0,4 OG 0,8

I metrikfeltet kombinerer AND- og OR-operatorerne metrikkerne for at finde kørslerne med metrik-nøjagtighed og f1-værdier over 0,3 og 0,8:

målinger. nøjagtighed > 0,3 OG målinger. f1 > 0,8

2. Søg efter parameterværdi

Benyt params-feltet i MLflow-søge-API'en til at udføre en søgning efter en parameterværdi. Parameternavnene og -værdierne er angivet i parameterfeltet ved hjælp af kommaer. I dette eksempel lokaliserer den førnævnte filterstreng alle kørsler med parameteren num_boost_round, der har værdien 100:

params. num_boost_round = '100'

Nogle flere eksempler på søgestrenge for parameterværdier:

  • params.num_boost_round = 900
  • params.learning_rate MELLEM 0,001 OG 0,01
  • params.num_boost_round='70' OG params.learning_rate='0,01′

3. Søg efter tags

Her er et eksempel på en søgning, der anvender tags:

søgekriterier = 'tags.mlflow.source.type = 'ordbog''

Eksempel på matrik- og parameterværdier til at udføre funktionen Mlflow.search_runs()

Lad os gennemgå et eksempel på opsætning af et MLflow-eksperiment, logning af kørsler og derefter brug af mlflow.search_runs() til at starte en søgning. Følg disse trin for at forstå koden fuldstændigt:

Trin 1: Opret et MLflow-eksperiment

Vi starter med at opsætte et MLflow eksperiment. Den henter det eksisterende eksperiment, hvis eksperimentet allerede eksisterer. Hvis ikke, opretter det en ny.

Kodeforklaring:

MLflow-biblioteket importeres i den første linje i koden, og eksperimentnavnet er sat til 'Mit første MLflow-eksperiment' i den næste linje. Når eksperimentnavnet videregives til funktionen 'mlflow.get_experiment_by_name', returnerer denne funktion 'Ingen', hvis eksperimentet ikke eksisterer og i øvrigt et objekt af eksperimentet.

Tjek eksistensen af ​​eksperimentet i den betingede erklæring. Hvis eksperimentet allerede eksisterer, skal du angive experiment_id. Ellers skal du bruge 'mlflow.create_experiment' til at oprette et nyt eksperiment. Eksperiment-id'et returneres af denne funktion. Vis eksperiment-id'et på konsollen eller terminalskærmen i slutningen af ​​eksperimentet. Kopier følgende kode i notesblokken og gem filen med det ønskede navn og med filtypenavnet '.py':

# importer mlflow bibliotek

importere mlflow

# Opret eller hent eksperimentet

eksp_navn = 'Mit første MLflow-eksperiment'

# Hent eksperimentet efter navn ved hjælp af mlflow-funktionen get_experiment_by_name

eksp = mlflow. get_experiment_by_name ( eksp_navn )

# Tjek om eksperimentet ikke allerede eksisterer

hvis eksp er Ingen :

# Opret nyt eksperiment, og send eksperimentnavnet til funktionen mlflow.create_experiment

exp_id = mlflow. oprette_eksperiment ( eksp_navn )

# Vis succesmeddelelsen på skærmen

Print ( 'Eksperiment eksisterer ikke. Eksperiment oprettet med succes!' )

andet :

# Hent experiment_id for det eksisterende eksperiment

exp_id = eksp. eksperiment_id

Print ( 'Eksperimentet eksisterer allerede!' )

# Vis eksperiment-id

Print ( 'Eksperiment-id:' , exp_id )

Start nu programmet i kommandoprompten eller terminalvinduet ved hjælp af Python-kompileren og skriv 'Python' og derefter filnavnet, som i dette tilfælde er 'MyFirstMlflowExperiment.py'. Når eksperimentet køres første gang, eksisterer det endnu ikke. Således opretter MLFlow en og udskriver eksperiment-id'et på konsolskærmen:

Kør koden igen for at bekræfte, at den ikke opretter nye eksperimenter, og for at vise ID'et på dem, der allerede eksisterer. Følgende skærmbillede viser, at eksperimentet allerede eksisterer:

Trin 2: Log kørslerne med metrikker og parametre

Lad os nu forsøge at logge nogle kørsler med metrics og parametre for det netop etablerede eksperiment. I et scenarie i den virkelige verden udvikler vi maskinlæringsmodellerne og registrerer de relevante oplysninger, såsom metrikker og parametre, ved slutningen af ​​hver kørsel. Her bruges nøjagtighed som en matrikværdi, og den er i dette tilfælde 0,95. Parameterværdierne for indlæring og effektivitetsrate er henholdsvis 0,01 og 90. Her er koden:

# Start en MLflow-kørsel for at logge metrics og parametre

med mlflow. start_run ( eksperiment_id = exp_id ) :

# Din maskinlæringskode her (dette er kun et simuleret eksempel)

model_nøjagtighed = 0,95

machine_learning_rate = 0,01

effektivitetsrate = 90

# Log metrics og parametre

mlflow. log_metrisk ( 'nøjagtighed' , model_nøjagtighed )

mlflow. log_param ( 'læringsrate' , machine_learning_rate )

mlflow. log_param ( 'effektivitetsrate' , effektivitetsrate )

Resultatet, når den førnævnte kode udføres, ses her. Resultatet er det samme som før:

Trin 3: Udfør en søgning ved hjælp af Mlflow.search_runs()

Til sidst kører vi en søgning på de kørsler, der er blevet logget med nogle få parametre og viser resultaterne på terminalskærmen:

# Definer søgekriterierne for kørsler

definere_søgekriterier = 'metrics.accuracy > 0,8 OG params.learning_rate = '0,01' OG params.efficiency_rate = '90''

# Udfør søgningen

løber = mlflow. search_runs ( eksperiment_id'er = exp_id , filter_streng = definere_søgekriterier )

# Vis resultaterne

Print ( 'Søgeresultater:' )

Print ( løber )

En advarsel, der vedrører Git-værktøjet, frembringes af search_runs-funktionens udførelse:


Tilføj noget kode øverst i Python-filen for at deaktivere denne advarsel. Her er det korte afsnit af koden:

importere mlflow

importere du

du . rundt regnet [ 'GIT_PYTHON_REFRESH' ] = 'rolige'

Funktionen 'mlflow.search_runs' udføres med succes, når disse linjer kode er tilføjet:

Konklusion

Funktionen 'mlflow.search_runs' gør det muligt for brugerne hurtigt at udforske og evaluere maskinlæringseksperimenterne, analysere mange kørsler og udpege de optimale hyperparametervariationer eller -modeller, der resulterer i de ønskede resultater. Det er et effektivt værktøj til at overskue, planlægge og analysere maskinlærings-workflowet.