Søking kjører i MLflow

Soking Kjorer I Mlflow



For å spore og administrere maskinlæringseksperimentene tilbyr MLflow en omfattende plattform. Å ha muligheten til å søke løp er en av MLflows nøkkelfunksjoner. Dette gjør det mulig å identifisere de utviklede eksperimentene og organisere dem på en måte som gjør det enkelt å finne informasjonen når det er nødvendig. Vi kan søke kjører ved å bruke MLflow søke-API ved å bruke en rekke forskjellige kriterier som kan omfatte følgende:
  • Eksperiment-ID eller navn
  • Kjør ID
  • Parametre og verdier
  • Beregninger og verdier
  • Tagger
  • Andre attributter som er knyttet til kjøringene

Kjøringer kan filtreres etter status, starttid, sluttid og varighet ved bruk av MLflow søke-API. Det gjør det lettere å filtrere gjennom mange kjøringer og finne spesifikke kjøringer som brukerne er interessert i.

MLflow søkefunksjon

Bruk funksjonen mlflow.search_runs() for å få tilgang til MLflow søke-API. Denne funksjonen godtar en rekke argumenter som følgende:







  • Eksperiment-ID-en eller navnet
  • Filterstreng eller tekst
  • Maksimalt antall kjøringer som skal returneres, er spesifisert av argumentet max_results

En forenklet variant av SQL (Structured Query Language) WHERE-leddet er filterstrengen eller teksten. Den kan brukes til å angi kriteriene som vi ønsker å sortere kjøringene etter.



Syntaks for MLflow Search_Runs()-funksjonen

Den faktiske IDen eller navnet på eksperimentet som vi ønsker å søke i, må erstattes med «eksperiment_id eller eksperiment_navn» i følgende eksempel. Search_criteria-variabelen gjør det mulig å legge inn søkekriteriene som ønsket. Disse kriteriene kan bestemmes av beregninger, tagger, parametere eller tilleggsegenskaper. Search_runs()-funksjonens grunnleggende syntaks er som følger:



# Importer mlflow search API for å bruke search_runs funksjonen

import mlflow

# Oppgi en eksperiment-ID eller et navn (det er valgfritt; )

exp_id = «Eksperiment-ID eller NAVN»

# Definer søkekriteriene for kjøringer

søkestreng = 'metrics.accuracy > 0.8 OG params.learning_rate = '0.01' OG params.efficiency_rate > '80''

# Utfør søket

løper = mlflow. search_runs ( eksperiment-ID-er = exp_id , filter_string = søkestreng )

# Vis resultatene

skrive ut ( 'Søkeresultater:' )

skrive ut ( løper )

Kjør et søk ved å bruke en rekke kriterier

1. Søk etter metrisk verdi

Kjøringer kan filtreres etter verdiene til bestemte beregninger ved å bruke metrikkfeltet i MLflow-søke-API. En samling av metriske navn atskilt med komma vises i metrikkfeltet. Følgende filterstreng finner for eksempel alle kjøringer med en nøyaktighetsverdi som er større enn 0,9:





beregninger. nøyaktighet > 0,9

Den komplette listen over beregninger som er tilgjengelige for bruk i metrikkfeltet, er gitt som følger:

  • nøyaktighet
  • auc
  • f1
  • presisjon
  • minnes
  • kart
  • loggtap
  • classification_error
  • multi_class_logloss

I tillegg kan brukerne filtrere kjøringene etter en metrikks verdiområde ved å bruke metrikkfeltet. Den neste filterstrengen finner for eksempel alle kjøringer som har et nøyaktighetsmål med en verdi mellom 0,4 og 0,8:



beregninger. nøyaktighet MELLOM 0,4 OG 0,8

I metrikkfeltet kombinerer AND- og OR-operatorene metrikkene for å finne kjøringene med metrikknøyaktighet og f1-verdier over 0,3 og 0,8:

beregninger. nøyaktighet > 0,3 OG beregninger. f1 > 0,8

2. Søk etter parameterverdi

Benytt deg av params-feltet i MLflow Search API for å utføre et søk etter en parameterverdi. Parameternavnene og -verdiene er oppført i parameterfeltet med komma. I dette eksemplet finner den nevnte filterstrengen alle kjøringer med parameteren num_boost_round som har verdien 100:

params. num_boost_round = '100'

Noen flere eksempler på søkestrenger for parameterverdier:

  • params.num_boost_round = 900
  • params.learning_rate MELLOM 0,001 OG 0,01
  • params.num_boost_round=’70’ OG params.learning_rate=’0.01′

3. Søk etter koder

Her er et eksempel på et søk som bruker tagger:

søkekriterier = 'tags.mlflow.source.type = 'ordbok''

Eksempel på matrikk- og parameterverdier for å utføre funksjonen Mlflow.search_runs()

La oss gå gjennom et eksempel på å sette opp et MLflow-eksperiment, logge kjøringer og deretter bruke mlflow.search_runs() for å starte et søk. Følg disse trinnene for å forstå koden fullstendig:

Trinn 1: Lag et MLflow-eksperiment

Vi starter med å sette opp et MLflow-eksperiment. Den henter det eksisterende eksperimentet hvis eksperimentet allerede eksisterer. Hvis ikke, opprettes en ny.

Kodeforklaring:

MLflow-biblioteket importeres i den første linjen i koden, og eksperimentnavnet settes til 'Mitt første MLflow-eksperiment' på neste linje. Når eksperimentnavnet sendes til «mlflow.get_experiment_by_name»-funksjonen, returnerer denne funksjonen «Ingen» hvis eksperimentet ikke eksisterer og et objekt for eksperimentet ellers.

Se etter eksistensen av eksperimentet i den betingede erklæringen. Hvis eksperimentet allerede eksisterer, angi experiment_id. Ellers bruker du 'mlflow.create_experiment' for å lage et nytt eksperiment. Eksperiment-ID-en returneres av denne funksjonen. Vis eksperiment-ID-en på konsollen eller terminalskjermen på slutten av eksperimentet. Kopier følgende kode i notisblokken og lagre filen med ønsket navn og med filtypen '.py':

# importer mlflow-bibliotek

import mlflow

# Opprett eller hent eksperimentet

exp_name = 'Mitt første MLflow-eksperiment'

# Hent eksperimentet etter navn ved å bruke mlflow-funksjonen get_experiment_by_name

exp = mlflow. get_experiment_by_name ( exp_name )

# Sjekk om eksperimentet ikke allerede eksisterer

hvis exp er Ingen :

# Opprett nytt eksperiment og send eksperimentnavnet til funksjonen mlflow.create_experiment

exp_id = mlflow. opprette_eksperiment ( exp_name )

# Vis suksessmeldingen på skjermen

skrive ut ( 'Eksperimentet eksisterer ikke. Eksperimentet ble opprettet!' )

ellers :

# Hent experiment_id for det eksisterende eksperimentet

exp_id = exp. eksperiment-ID

skrive ut ( 'Eksperimentet eksisterer allerede!' )

# Vis eksperiment-ID

skrive ut ( 'Eksperiment-ID:' , exp_id )

Start nå programmet i ledeteksten eller terminalvinduet ved å bruke Python-kompilatoren og skriv inn 'Python' og deretter filnavnet som i dette tilfellet er 'MyFirstMlflowExperiment.py'. Når eksperimentet kjøres første gang, eksisterer det ikke ennå. Dermed oppretter MLFlow en og skriver ut eksperiment-ID-en på konsollskjermen:

Kjør koden på nytt for å bekrefte at den ikke oppretter nye eksperimenter og for å vise ID-en til de som allerede eksisterer. Følgende skjermbilde viser at eksperimentet allerede eksisterer:

Trinn 2: Logg kjøringene med beregninger og parametere

La oss nå prøve å logge noen kjøringer med beregningene og parameterne for det nettopp etablerte eksperimentet. I et virkelighetsscenario utvikler vi maskinlæringsmodellene og registrerer relevant informasjon, for eksempel beregninger og parametere, på slutten av hver kjøring. Her brukes nøyaktighet som matrikkverdi, og den er i dette tilfellet 0,95. Parameterverdiene for læring og effektivitetsrate er henholdsvis 0,01 og 90. Her er koden:

# Start en MLflow-kjøring for å logge beregninger og parametere

med mlflow. start_run ( eksperiment-ID = exp_id ) :

# Maskinlæringskoden din her (dette er bare et simulert eksempel)

modell_nøyaktighet = 0,95

machine_learning_rate = 0,01

effektivitetsrate = 90

# Loggberegninger og parametere

mlflow. log_metrisk ( 'nøyaktighet' , modell_nøyaktighet )

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

mlflow. log_param ( 'effektivitetsrate' , effektivitetsrate )

Resultatet, når den nevnte koden utføres, vises her. Resultatet er det samme som før:

Trinn 3: Utfør et søk med Mlflow.search_runs()

Til slutt kjører vi et søk på kjøringene som er logget med noen få parametere og viser resultatene på terminalskjermen:

# Definer søkekriteriene for kjøringer

definer_søkekriterier = 'metrics.accuracy > 0.8 OG params.learning_rate = '0.01' OG params.efficiency_rate = '90''

# Utfør søket

løper = mlflow. search_runs ( eksperiment-ID-er = exp_id , filter_string = definer_søkekriterier )

# Vis resultatene

skrive ut ( 'Søkeresultater:' )

skrive ut ( løper )

En advarsel som gjelder Git-verktøyet er produsert av search_runs-funksjonens utførelse:


Legg til litt kode øverst i Python-filen for å deaktivere denne advarselen. Her er den korte delen av koden:

import mlflow

import du

du . omtrent [ 'GIT_PYTHON_REFRESH' ] = 'stille'

'mlflow.search_runs'-funksjonen er vellykket utført når disse kodelinjene er lagt til:

Konklusjon

'mlflow.search_runs'-funksjonen lar brukerne raskt utforske og evaluere maskinlæringseksperimentene, analysere mange kjøringer og finne de optimale hyperparametervariasjonene eller modellene som resulterer i de ønskede resultatene. Det er et effektivt verktøy for å overvåke, planlegge og analysere arbeidsflyten for maskinlæring.