- 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,82. 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-bibliotekimport 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 parameteremed 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øringerdefiner_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 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.