Căutarea rulărilor în MLflow

Cautarea Rularilor In Mlflow



Pentru a urmări și gestiona experimentele de învățare automată, MLflow oferă o platformă extinsă. Capacitatea de a căuta rulări este una dintre caracteristicile cheie ale MLflow. Acest lucru face posibilă identificarea experimentelor dezvoltate și organizarea lor într-un mod care simplifică localizarea informațiilor ori de câte ori este nevoie. Este posibil să căutăm rulări folosind API-ul de căutare MLflow folosind o serie de criterii diferite, care pot include următoarele:
  • ID-ul sau numele experimentului
  • Run ID
  • Parametri și valori
  • Metrici și valori
  • Etichete
  • Alte atribute care sunt asociate cu rulările

Execuțiile pot fi filtrate după stare, ora de începere, ora de încheiere și durată cu ajutorul API-ului de căutare MLflow. Facilitează filtrarea mai multor rulări și găsirea unor rulări specifice de care sunt interesați utilizatorii.

Funcția de căutare MLflow

Utilizați funcția mlflow.search_runs() pentru a accesa API-ul de căutare MLflow. Această funcție acceptă o varietate de argumente precum următoarele:







  • ID-ul sau numele experimentului
  • Filtrați șir sau text
  • Numărul maxim de rulări de returnat este specificat de argumentul max_results

O variantă simplificată a clauzei SQL (Structured Query Language) WHERE este șirul de filtru sau textul. Poate fi folosit pentru a indica criteriile după care dorim să sortăm rulările.



Sintaxa funcției MLflow Search_Runs()

ID-ul sau numele real al experimentului în care dorim să căutăm trebuie să fie înlocuit cu „experiment_id sau experiment_name” în exemplul următor. Variabila search_criteria permite introducerea criteriilor de căutare după cum se dorește. Aceste criterii pot fi determinate de valori, etichete, parametri sau caracteristici suplimentare. Sintaxa de bază a funcției search_runs() este următoarea:



# Importați API-ul de căutare mlflow pentru a utiliza funcția search_runs

import mlflow

# Furnizați un ID sau un nume de experiment (este opțional; )

exp_id = „ID experiment sau NAME”

# Definiți criteriile de căutare pentru rulări

șir_căutare = „metrics.accuracy > 0,8 AND params.learning_rate = „0,01” AND params.efficiency_rate > „80””

# Efectuați căutarea

aleargă = mlflow. search_runs ( experiment_ids = exp_id , șir_filtru = șir_căutare )

# Afișează rezultatele

imprimare ( 'Rezultatele cautarii:' )

imprimare ( aleargă )

Rulați o căutare folosind numeroase criterii

1. Căutați după valoarea valorii

Execuțiile pot fi filtrate după valorile anumitor valori folosind câmpul pentru valori din API-ul de căutare MLflow. În câmpul pentru valori apare o colecție de nume de valori separate prin virgule. De exemplu, următorul șir de filtru localizează toate rulările cu o valoare de precizie mai mare de 0,9:





metrici. precizie > 0,9

Lista completă a valorilor disponibile pentru utilizare în câmpul pentru valori este dată după cum urmează:

  • precizie
  • auc
  • f1
  • precizie
  • reamintire
  • Hartă
  • logloss
  • eroare_clasificare
  • multi_clasă_logloss

În plus, utilizatorii pot filtra rulările după intervalul de valori al unei valori utilizând câmpul pentru valori. De exemplu, următorul șir de filtru localizează toate rulările care au o măsură de precizie cu o valoare între 0,4 și 0,8:



metrici. precizie ÎNTRE 0,4 ȘI 0,8

În câmpul metrics, operatorii AND și OR combină valorile pentru a găsi execuțiile cu acuratețea metricilor și valori f1 peste 0,3 și 0,8:

metrici. precizie > 0,3 ȘI metrici. f1 > 0,8

2. Căutați după valoarea parametrului

Folosiți câmpul params din API-ul de căutare MLflow pentru a efectua o căutare după valoarea unui parametru. Numele și valorile parametrilor sunt listate în câmpul de parametri folosind virgule. În acest exemplu, șirul de filtru menționat mai sus localizează toate rulările cu parametrul num_boost_round care au valoarea 100:

parametrii. num_boost_round = '100'

Mai multe exemple de șiruri de căutare pentru valorile parametrilor:

  • params.num_boost_round = 900
  • params.learning_rate INTRE 0,001 SI 0,01
  • params.num_boost_round=’70’ ȘI params.learning_rate=’0,01′

3. Căutați după etichete

Iată un exemplu de căutare care utilizează etichete:

criteriu de cautare = „tags.mlflow.source.type = „dicționar””

Exemplu de valori matrice și parametri pentru a efectua funcția Mlflow.search_runs()

Să lucrăm printr-un exemplu de configurare a unui experiment MLflow, înregistrarea rulărilor și apoi utilizarea mlflow.search_runs() pentru a iniția o căutare. Pentru a înțelege complet codul, urmați acești pași:

Pasul 1: creați un experiment MLflow

Începem prin a configura un experiment MLflow. Preia experimentul existent dacă experimentul există deja. Dacă nu, se creează unul nou.

Explicația codului:

Biblioteca MLflow este importată în prima linie a codului, iar experiment_name este setat la „Primul meu experiment MLflow” în rândul următor. Când experiment_name este transmis funcției „mlflow.get_experiment_by_name”, acea funcție returnează „Niciunul” dacă experimentul nu există și un obiect al experimentului în caz contrar.

Verificați existența experimentului în declarația condiționată. Dacă experimentul există deja, setați experiment_id. În caz contrar, utilizați „mlflow.create_experiment” pentru a crea un nou experiment. ID-ul experimentului este returnat de această funcție. Afișați ID-ul experimentului pe consolă sau pe ecranul terminalului la sfârșitul experimentului. Copiați următorul cod în bloc-notes și salvați fișierul cu numele dorit și cu extensia „.py”:

# import biblioteca mlflow

import mlflow

# Creați sau preluați experimentul

exp_name = „Primul meu experiment MLflow”

# Preluați experimentul după nume folosind funcția mlflow get_experiment_by_name

exp = mlflow. obține_experimentul_după_nume ( exp_name )

# Verificați dacă experimentul nu există deja

dacă exp este Nici unul :

# Creați un nou experiment și transmiteți numele experimentului funcției mlflow.create_experiment

exp_id = mlflow. create_experiment ( exp_name )

# Afișează mesajul de succes pe ecran

imprimare ( 'Experimentul nu există. Experimentul a fost creat cu succes!' )

altfel :

# Preluați experiment_id-ul experimentului existent

exp_id = exp. experiment_id

imprimare ( „Experimentul există deja!” )

# Afișează ID-ul experimentului

imprimare ( „ID experiment:” , exp_id )

Acum, lansați programul în promptul de comandă sau în fereastra terminalului folosind compilatorul Python și tastați „Python” și apoi numele fișierului care, în acest caz, este „MyFirstMlflowExperiment.py”. Când experimentul este executat pentru prima dată, acesta nu există încă. Astfel, MLFlow creează unul și tipărește ID-ul experimentului pe ecranul consolei:

Reluați codul pentru a verifica dacă nu creează noi experimente și pentru a afișa ID-ul celor care există deja. Următoarea captură de ecran arată că experimentul există deja:

Pasul 2: Înregistrați rulările cu metrici și parametri

Să încercăm acum să înregistrăm câteva rulări cu valorile și parametrii pentru experimentul recent stabilit. Într-un scenariu real, dezvoltăm modelele de învățare automată și înregistrăm informațiile relevante, cum ar fi metrici și parametri, la sfârșitul fiecărei rulări. Aici, acuratețea este folosită ca valoare matriceală și este de 0,95 în acest caz. Valorile parametrilor pentru învățare și rata de eficiență sunt 0,01 și, respectiv, 90. Iată codul:

# Începeți o rulare MLflow pentru a înregistra valorile și parametrii

cu mlflow. start_run ( experiment_id = exp_id ) :

# Codul dvs. de învățare automată aici (acesta este doar un exemplu simulat)

acuratețea_modelului = 0,95

rata_de_învățare_mașină = 0,01

rata_eficienței = 90

# Înregistrați valorile și parametrii

mlflow. log_metric ( 'precizie' , acuratețea_modelului )

mlflow. log_param ( 'rata_de_învățare' , rata_de_învățare_mașină )

mlflow. log_param ( „rată_eficiență” , rata_eficienței )

Rezultatul, atunci când codul menționat mai sus este executat, se vede aici. Rezultatul este același ca înainte:

Pasul 3: Efectuați o căutare folosind Mlflow.search_runs()

În cele din urmă, rulăm o căutare pe run-urile care au fost înregistrate folosind câțiva parametri și arătăm rezultatele pe ecranul terminalului:

# Definiți criteriile de căutare pentru rulări

definiți_criteriile_de_căutare = „metrics.accuracy > 0,8 AND params.learning_rate = „0,01” ȘI params.efficiency_rate = „90””

# Efectuați căutarea

aleargă = mlflow. search_runs ( experiment_ids = exp_id , șir_filtru = definiți_criteriile_de_căutare )

# Afișează rezultatele

imprimare ( 'Rezultatele cautarii:' )

imprimare ( aleargă )

Un avertisment care se referă la instrumentul Git este produs de execuția funcției search_runs:


Adăugați un cod în partea de sus a fișierului Python pentru a dezactiva acest avertisment. Iată secțiunea scurtă a codului:

import mlflow

import tu

tu . aproximativ [ „GIT_PYTHON_REFRESH” ] = 'Liniște'

Funcția „mlflow.search_runs” este executată cu succes odată ce sunt adăugate aceste linii de cod:

Concluzie

Funcția „mlflow.search_runs” permite utilizatorilor să exploreze și să evalueze rapid experimentele de învățare automată, să analizeze multe rulări și să identifice variațiile sau modelele optime ale hiperparametrului care au ca rezultat rezultatele dorite. Este un instrument eficient pentru supravegherea, planificarea și analiza fluxului de lucru de învățare automată.