La ricerca viene eseguita in MLflow

La Ricerca Viene Eseguita In Mlflow



Per tracciare e gestire gli esperimenti di machine learning, MLflow offre un'ampia piattaforma. Avere la possibilità di cercare esecuzioni è una delle caratteristiche principali di MLflow. Ciò rende possibile identificare gli esperimenti sviluppati e organizzarli in modo da rendere semplice individuare le informazioni quando necessario. Possiamo eseguire ricerche utilizzando l'API di ricerca MLflow utilizzando una serie di criteri diversi che possono includere quanto segue:
  • ID o nome dell'esperimento
  • Esegui ID
  • Parametri e valori
  • Metriche e valori
  • Tag
  • Altri attributi associati alle esecuzioni

Le esecuzioni possono essere filtrate per stato, ora di inizio, ora di fine e durata con l'utilizzo dell'API di ricerca MLflow. Rende più semplice filtrare molte esecuzioni e trovare esecuzioni specifiche a cui gli utenti sono interessati.

Funzione di ricerca MLflow

Utilizza la funzione mlflow.search_runs() per accedere all'API di ricerca MLflow. Questa funzione accetta una varietà di argomenti come i seguenti:







  • L'ID o il nome dell'esperimento
  • Filtra stringa o testo
  • Il numero massimo di esecuzioni da restituire è specificato dall'argomento max_results

Una variante semplificata della clausola WHERE SQL (Structured Query Language) è la stringa di filtro o il testo. Può essere utilizzato per indicare i criteri in base ai quali vogliamo ordinare le esecuzioni.



Sintassi della funzione MLflow Search_Runs()

L'ID o il nome effettivo dell'esperimento all'interno del quale vogliamo effettuare la ricerca deve essere sostituito con 'id_esperimento o nome_esperimento' nell'esempio seguente. La variabile search_criteria consente di inserire i criteri di ricerca come desiderato. Questi criteri possono essere determinati da metriche, tag, parametri o caratteristiche aggiuntive. La sintassi di base della funzione search_runs() è la seguente:



# Importa l'API di ricerca mlflow per utilizzare la funzione search_runs

importare mlflow

# Fornisci un ID o un nome dell'esperimento (è facoltativo;)

exp_id = 'ID o NOME dell'esperimento'

# Definire i criteri di ricerca per le esecuzioni

stringa di ricerca = 'metrics.accuracy > 0,8 AND params.learning_rate = '0,01' AND params.efficiency_rate > '80''

# Esegui la ricerca

corre = mlflow. search_runs ( esperimento_id = exp_id , stringa_filtro = stringa di ricerca )

# Visualizza i risultati

stampa ( 'Risultati di ricerca:' )

stampa ( corre )

Esegui una ricerca utilizzando numerosi criteri

1. Cerca per valore metrico

Le esecuzioni possono essere filtrate in base ai valori di parametri particolari utilizzando il campo dei parametri nell'API di ricerca MLflow. Nel campo delle metriche viene visualizzata una raccolta di nomi di parametri separati da virgole. Ad esempio, la seguente stringa di filtro individua tutte le esecuzioni con un valore di precisione maggiore di 0,9:





metrica. precisione > 0.9

L'elenco completo delle metriche disponibili per l'utilizzo nel campo delle metriche è riportato di seguito:

  • precisione
  • auc
  • f1
  • precisione
  • richiamare
  • carta geografica
  • logloss
  • errore_classificazione
  • multi_class_logloss

Inoltre, gli utenti possono filtrare le esecuzioni in base all'intervallo di valori di una metrica utilizzando il campo delle metriche. Ad esempio, la stringa di filtro successiva individua tutte le esecuzioni che hanno una misura di precisione con un valore compreso tra 0,4 e 0,8:



metrica. precisione FRA 0.4 E 0,8

Nel campo delle metriche, gli operatori AND e OR combinano le metriche per trovare le esecuzioni con precisione delle metriche e valori f1 superiori a 0,3 e 0,8:

metrica. precisione > 0,3 E metriche. f1 > 0,8

2. Ricerca per valore parametro

Utilizza il campo params nell'API di ricerca MLflow per eseguire una ricerca in base al valore di un parametro. I nomi e i valori dei parametri sono elencati nel campo params utilizzando virgole. In questo esempio, la suddetta stringa di filtro individua tutte le esecuzioni con il parametro num_boost_round che hanno il valore 100:

parametri. num_boost_round = '100'

Alcuni altri esempi di stringhe di ricerca per i valori dei parametri:

  • params.num_boost_round = 900
  • params.learning_rate TRA 0,001 E 0,01
  • params.num_boost_round=’70’ AND params.learning_rate=’0.01′

3. Ricerca per tag

Ecco un esempio di ricerca che utilizza tag:

criterio di ricerca = 'tags.mlflow.source.type = 'dizionario''

Esempio dei valori della matrice e dei parametri per eseguire la funzione Mlflow.search_runs()

Esaminiamo un esempio di impostazione di un esperimento MLflow, registrazione delle esecuzioni e quindi utilizzo di mlflow.search_runs() per avviare una ricerca. Per comprendere completamente il codice, attenersi alla seguente procedura:

Passaggio 1: crea un esperimento MLflow

Iniziamo impostando un esperimento MLflow. Recupera l'esperimento esistente se l'esperimento esiste già. In caso contrario, ne crea uno nuovo.

Spiegazione del codice:

La libreria MLflow viene importata nella prima riga del codice e il nome dell'esperimento è impostato su 'Il mio primo esperimento MLflow' nella riga successiva. Quando sperimentale_name viene passato alla funzione 'mlflow.get_experiment_by_name', tale funzione restituisce 'None' se l'esperimento non esiste e un oggetto dell'esperimento altrimenti.

Verificare l'esistenza dell'esperimento nell'istruzione condizionale. Se l'esperimento esiste già, imposta sperimentale_id. Altrimenti, utilizza 'mlflow.create_experiment' per creare un nuovo esperimento. L'ID dell'esperimento viene restituito da questa funzione. Visualizza l'ID esperimento sulla console o sullo schermo del terminale al termine dell'esperimento. Copia il seguente codice nel blocco note e salva il file con il nome desiderato e con estensione “.py”:

# importa la libreria mlflow

importare mlflow

# Crea o recupera l'esperimento

nome_esp = 'Il mio primo esperimento MLflow'

# Recupera l'esperimento per nome utilizzando la funzione mlflow get_experiment_by_name

esp = mlflow. get_esperimento_per_nome ( nome_esp )

# Controlla se l'esperimento non esiste già

Se esp È Nessuno :

# Crea un nuovo esperimento e passa il nome dell'esperimento alla funzione mlflow.create_experiment

exp_id = mlflow. crea_esperimento ( nome_esp )

# Visualizza il messaggio di successo sullo schermo

stampa ( 'L'esperimento non esiste. Esperimento creato con successo!' )

altro :

# Recupera l'experiment_id dell'esperimento esistente

exp_id = esp. esperimento_id

stampa ( 'L'esperimento esiste già!' )

# Visualizza ID esperimento

stampa ( 'ID esperimento:' , exp_id )

Ora avvia il programma nel prompt dei comandi o nella finestra del terminale utilizzando il compilatore Python e digita 'Python' e quindi il nome del file che, in questo caso, è 'MyFirstMlflowExperiment.py'. Quando l'esperimento viene eseguito per la prima volta, non esiste ancora. Pertanto, MLFlow ne crea uno e stampa l'ID dell'esperimento sullo schermo della console:

Esegui nuovamente il codice per verificare che non stia creando nuovi esperimenti e per visualizzare l'ID di quelli già esistenti. Lo screenshot seguente mostra che l'esperimento esiste già:

Passaggio 2: registrare le esecuzioni con metriche e parametri

Proviamo ora a registrare alcune esecuzioni con le metriche e i parametri per l'esperimento appena stabilito. In uno scenario reale, sviluppiamo i modelli di machine learning e registriamo le informazioni rilevanti, come metriche e parametri, alla fine di ogni esecuzione. In questo caso, la precisione viene utilizzata come valore matrice e in questo caso è 0,95. I valori dei parametri per l'apprendimento e il tasso di efficienza sono rispettivamente 0,01 e 90. Ecco il codice:

# Avvia un'esecuzione MLflow per registrare metriche e parametri

con mlflow. start_run ( esperimento_id = exp_id ) :

# Il tuo codice di machine learning qui (questo è solo un esempio simulato)

model_accuracy = 0,95

tasso_di_apprendimento_automatico = 0,01

tasso_diefficienza = 90

# Registra metriche e parametri

mlflow. log_metrico ( 'precisione' , model_accuracy )

mlflow. log_param ( 'tasso_di_apprendimento' , tasso_di_apprendimento_automatico )

mlflow. log_param ( 'tasso_di_efficienza' , tasso_diefficienza )

Il risultato, quando viene eseguito il suddetto codice, è visibile qui. Il risultato è lo stesso di prima:

Passaggio 3: eseguire una ricerca utilizzando Mlflow.search_runs()

Infine, eseguiamo una ricerca sulle corse registrate utilizzando alcuni parametri e mostriamo i risultati sullo schermo del terminale:

# Definire i criteri di ricerca per le esecuzioni

definire_criteri_di_ricerca = 'metrics.accuracy > 0,8 AND params.learning_rate = '0,01' AND params.efficiency_rate = '90''

# Esegui la ricerca

corre = mlflow. search_runs ( esperimento_id = exp_id , stringa_filtro = definire_criteri_di_ricerca )

# Visualizza i risultati

stampa ( 'Risultati di ricerca:' )

stampa ( corre )

Un avviso relativo allo strumento Git viene prodotto dall'esecuzione della funzione search_runs:


Aggiungi del codice nella parte superiore del file Python per disabilitare questo avviso. Ecco la breve sezione del codice:

importare mlflow

importare Voi

Voi . circa [ 'GIT_PYTHON_REFRESH' ] = 'Tranquillo'

La funzione “mlflow.search_runs” viene eseguita con successo una volta aggiunte queste righe di codice:

Conclusione

La funzione 'mlflow.search_runs' consente agli utenti di esplorare e valutare rapidamente gli esperimenti di machine learning, analizzare molte esecuzioni e individuare le variazioni o i modelli di iperparametri ottimali che portano ai risultati desiderati. È uno strumento efficace per supervisionare, pianificare e analizzare il flusso di lavoro del machine learning.