Condividi tramite


Gestire il codice di training con le esecuzioni MLflow

Questo articolo descrive le esecuzioni di MLflow per la gestione del training di Machine Learning. Include anche indicazioni su come gestire e confrontare le esecuzioni tra esperimenti.

Un'esecuzione MLflow corrisponde a una singola esecuzione del codice del modello. Ogni esecuzione registra le informazioni seguenti:

  • Origine: nome del notebook che ha avviato l'esecuzione o il nome del progetto e il punto di ingresso per l'esecuzione.
    • Versione: hash del commit Git se il notebook viene archiviato in una cartella Git di Databricks o eseguito da un progetto MLflow. In caso contrario, revisione del notebook.
    • Ora di inizio e fine: ora di inizio e di fine dell'esecuzione.
    • Parametri: parametri del modello salvati come coppie chiave-valore. Entrambe le chiavi e i valori sono stringhe.
    • Metriche: metriche di valutazione del modello salvate come coppie chiave-valore. Il valore è numerico. Ogni metrica può essere aggiornata durante l'esecuzione (ad esempio, per tenere traccia della convergenza della funzione di perdita del modello) e dei record MLflow e consente di visualizzare la cronologia della metrica.
    • Tag: eseguire i metadati salvati come coppie chiave-valore. È possibile aggiornare i tag durante e dopo il completamento di un'esecuzione. Entrambe le chiavi e i valori sono stringhe.
    • Artefatti: file di output in qualsiasi formato. Ad esempio, è possibile registrare immagini, modelli (ad esempio, un modello scikit-learn selezionato) e file di dati (ad esempio, un file Parquet) come artefatto.

Tutte le esecuzioni MLflow vengono registrate nell'esperimento attivo. Se non è stato impostato in modo esplicito un esperimento come esperimento attivo, le esecuzioni vengono registrate nell'esperimento del notebook.

Visualizza esecuzioni

È possibile accedere a un'esecuzione dalla relativa pagina dell'esperimento padre o direttamente dal notebook che ha creato l'esecuzione.

Nella tabella delle esecuzioni della pagina dell'esperimento fare clic sull'ora di inizio di un'esecuzione.

Dal notebook fare clic Collegamento esterno accanto alla data e all'ora dell'esecuzione nella barra laterale Esecuzioni esperimenti.

La schermata di esecuzione mostra i parametri usati per l'esecuzione, le metriche risultanti dall'esecuzione e eventuali tag o note. Per visualizzare note, parametri, metriche o tag per questa esecuzione, fare clic freccia a destra a sinistra dell'etichetta.

È anche possibile accedere agli artefatti salvati da un'esecuzione in questa schermata.

Visualizzare l'esecuzione

Frammenti di codice per la stima

Se si registra un modello da un'esecuzione, il modello viene visualizzato nella sezione Artefatti di questa pagina. Per visualizzare frammenti di codice che illustrano come caricare e usare il modello per eseguire stime sui dataframe Spark e pandas, fare clic sul nome del modello.

prevedere frammenti di codice

Visualizzare il notebook o il progetto Git usato per un'esecuzione

Per visualizzare la versione del notebook che ha creato un'esecuzione:

  • Nella pagina dell'esperimento fare clic sul collegamento nella colonna Origine .
  • Nella pagina di esecuzione fare clic sul collegamento accanto a Origine.
  • Nel notebook, nella barra laterale Experiment Runs (Esecuzioni di esperimenti) fare clic sull'icona Notebook nella casella relativa all'esecuzione dell'esperimento Icona della versione del notebook .

La versione del notebook associato all'esecuzione viene visualizzata nella finestra principale con una barra di evidenziazione che mostra la data e l'ora dell'esecuzione.

Se l'esecuzione è stata avviata in remoto da un progetto Git, fare clic sul collegamento nel campo Git Commit per aprire la versione specifica del progetto usato nell'esecuzione. Il collegamento nel campo Origine apre il ramo principale del progetto Git usato nell'esecuzione.

Aggiungere un tag a un'esecuzione

I tag sono coppie chiave-valore che è possibile creare e usare in un secondo momento per cercare esecuzioni.

  1. Nella pagina di esecuzione fare clic su Icona tag se non è già aperto. Viene visualizzata la tabella dei tag.

    tabella tag

  2. Fare clic nei campi Nome e Valore e digitare la chiave e il valore per il tag.

  3. Fare clic su Aggiungi.

    aggiungi tag

Modificare o eliminare un tag per un'esecuzione

Per modificare o eliminare un tag esistente, usare le icone nella colonna Azioni .

azioni tag

Riprodurre l'ambiente software di un'esecuzione

È possibile riprodurre l'ambiente software esatto per l'esecuzione facendo clic su Riproduci esecuzione. Viene visualizzata la finestra di dialogo seguente:

Finestra di dialogo Riproduci esecuzione

Con le impostazioni predefinite, quando si fa clic su Conferma:

  • Il notebook viene clonato nel percorso visualizzato nella finestra di dialogo.
  • Se il cluster originale esiste ancora, il notebook clonato viene collegato al cluster originale e il cluster viene avviato.
  • Se il cluster originale non esiste più, viene creato e avviato un nuovo cluster con la stessa configurazione, incluse le librerie installate. Il notebook è collegato al nuovo cluster.

È possibile selezionare un percorso diverso per il notebook clonato ed esaminare la configurazione del cluster e le librerie installate:

  • Per selezionare una cartella diversa per salvare il notebook clonato, fare clic su Modifica cartella.
  • Per visualizzare la specifica del cluster, fare clic su Visualizza specifica. Per clonare solo il notebook e non il cluster, deselezionare questa opzione.
  • Per visualizzare le librerie installate nel cluster originale, fare clic su Visualizza librerie. Se non è importante installare le stesse librerie del cluster originale, deselezionare questa opzione.

Gestire le esecuzioni

Rinominare l'esecuzione

Per rinominare un'esecuzione, fare clic icona a tre pulsanti nell'angolo superiore destro della pagina di esecuzione e selezionare Rinomina.

Esecuzioni di filtri

È possibile cercare le esecuzioni in base ai valori dei parametri o delle metriche. È anche possibile cercare le esecuzioni in base al tag.

  • Per cercare esecuzioni che corrispondono a un'espressione contenente i valori di parametro e metrica, immettere una query nel campo di ricerca e fare clic su Cerca. Alcuni esempi di sintassi di query sono:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • Per cercare le esecuzioni in base al tag, immettere i tag nel formato : tags.<key>="<value>". I valori stringa devono essere racchiusi tra virgolette, come illustrato.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    Sia le chiavi che i valori possono contenere spazi. Se la chiave include spazi, è necessario racchiuderla nei backtick come illustrato.

    tags.`my custom tag` = "my value"
    

È anche possibile filtrare le esecuzioni in base al relativo stato (Attivo o Eliminato) e in base al fatto che una versione del modello sia associata all'esecuzione. A tale scopo, effettuare le selezioni rispettivamente dai menu a discesa Stato e Ora creata .

Esecuzioni di filtri

Esecuzioni di download

  1. Selezionare una o più esecuzioni.

  2. Fare clic su Scarica CSV. Un file CSV contenente i campi seguenti scarica:

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

Elimina esecuzioni

È possibile eliminare le esecuzioni usando l'interfaccia utente di Machine Learning di Databricks seguendo questa procedura:

  1. Nell'esperimento selezionare una o più esecuzioni facendo clic sulla casella di controllo a sinistra dell'esecuzione.
  2. Fai clic su Elimina.
  3. Se l'esecuzione è un'esecuzione padre, decidere se eliminare anche le esecuzioni discendenti. Questa opzione è selezionata per impostazione predefinita.
  4. Fare clic su Elimina per confermare. Le esecuzioni eliminate vengono salvate per 30 giorni. Per visualizzare le esecuzioni eliminate, selezionare Eliminato nel campo Stato.

L'eliminazione bulk viene eseguita in base all'ora di creazione

È possibile usare Python per eliminare in blocco le esecuzioni di un esperimento creato prima o in un timestamp UNIX. Usando Databricks Runtime 14.1 o versione successiva, è possibile chiamare l'API mlflow.delete_runs per eliminare le esecuzioni e restituire il numero di esecuzioni eliminate.

Di seguito sono riportati i mlflow.delete_runs parametri:

  • experiment_id: ID dell'esperimento contenente le esecuzioni da eliminare.
  • max_timestamp_millis: timestamp di creazione massimo in millisecondi dall'epoca UNIX per l'eliminazione di esecuzioni. Vengono eliminate solo le esecuzioni create prima o in questo timestamp.
  • max_runs: facoltativo. Intero positivo che indica il numero massimo di esecuzioni da eliminare. Il valore massimo consentito per max_runs è 10000. Se non specificato, max_runs il valore predefinito è 10000.
import mlflow

# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
  experiment_id=<experiment_id>,
  max_timestamp_millis=<max_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
  experiment_id="4183847697906956",
  max_timestamp_millis=1711990504000,
  max_runs=10
)

Usando Databricks Runtime 13.3 LTS o versioni precedenti, è possibile eseguire il codice client seguente in un notebook di Azure Databricks.

from typing import Optional

def delete_runs(experiment_id: str,
                max_timestamp_millis: int,
                max_runs: Optional[int] = None) -> int:
    """
    Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
    Deletes at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to delete.
    :param max_timestamp_millis: The maximum creation timestamp in milliseconds
                                 since the UNIX epoch for deleting runs. Only runs
                                 created prior to or at this timestamp are deleted.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to delete. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs deleted.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request

    json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_deleted"]

Vedere la documentazione dell'API Esperimenti di Azure Databricks per i parametri e le specifiche dei valori restituiti per l'eliminazione delle esecuzioni in base all'ora di creazione.

Esecuzioni di ripristino

È possibile ripristinare le esecuzioni eliminate in precedenza usando l'interfaccia utente di Machine Learning di Databricks.

  1. Nella pagina Esperimento selezionare Eliminato nel campo Stato per visualizzare le esecuzioni eliminate.
  2. Selezionare una o più esecuzioni facendo clic sulla casella di controllo a sinistra dell'esecuzione.
  3. Fare clic su Ripristina.
  4. Fare clic su Ripristina per confermare. Per visualizzare le esecuzioni ripristinate, selezionare Attivo nel campo Stato.

Il ripristino bulk viene eseguito in base al tempo di eliminazione

È anche possibile usare Python per ripristinare in blocco le esecuzioni di un esperimento eliminato in corrispondenza o dopo un timestamp UNIX. Usando Databricks Runtime 14.1 o versione successiva, è possibile chiamare l'API mlflow.restore_runs per ripristinare le esecuzioni e restituire il numero di esecuzioni ripristinate.

Di seguito sono riportati i mlflow.restore_runs parametri:

  • experiment_id: ID dell'esperimento contenente le esecuzioni da ripristinare.
  • min_timestamp_millis: timestamp di eliminazione minimo in millisecondi dall'epoca UNIX per il ripristino delle esecuzioni. Vengono eseguite solo le esecuzioni eliminate in corrispondenza o dopo il ripristino di questo timestamp.
  • max_runs: facoltativo. Numero intero positivo che indica il numero massimo di esecuzioni da ripristinare. Il valore massimo consentito per max_runs è 10000. Se non specificato, per impostazione predefinita max_runs è 10000.
import mlflow

# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
  experiment_id=<experiment_id>,
  min_timestamp_millis=<min_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
  experiment_id="4183847697906956",
  min_timestamp_millis=1711990504000,
  max_runs=10
)

Usando Databricks Runtime 13.3 LTS o versioni precedenti, è possibile eseguire il codice client seguente in un notebook di Azure Databricks.

from typing import Optional

def restore_runs(experiment_id: str,
                 min_timestamp_millis: int,
                 max_runs: Optional[int] = None) -> int:
    """
    Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
    Restores at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to restore.
    :param min_timestamp_millis: The minimum deletion timestamp in milliseconds
                                 since the UNIX epoch for restoring runs. Only runs
                                 deleted at or after this timestamp are restored.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to restore. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs restored.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request
    json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_restored"]

Vedere la documentazione dell'API Esperimenti di Azure Databricks per i parametri e le specifiche dei valori restituiti per il ripristino delle esecuzioni in base al tempo di eliminazione.

Confrontare le esecuzioni

È possibile confrontare le esecuzioni da un singolo esperimento o da più esperimenti. La pagina Confronto esecuzioni presenta informazioni sulle esecuzioni selezionate in formati grafici e tabulari. È anche possibile creare visualizzazioni di risultati di esecuzione e tabelle di informazioni sull'esecuzione, parametri di esecuzione e metriche.

Per creare una visualizzazione:

  1. Selezionare il tipo di tracciato (Tracciato coordinate parallele, Grafico a dispersione o Tracciato contorno).
    1. Per un tracciato coordinate parallele, selezionare i parametri e le metriche da tracciare. Da qui è possibile identificare le relazioni tra i parametri selezionati e le metriche, che consentono di definire meglio lo spazio di ottimizzazione degli iperparametri per i modelli.

      confrontare la visualizzazione delle pagine delle esecuzioni

    2. Per un grafico a dispersione o un tracciato di contorno, selezionare il parametro o la metrica da visualizzare su ogni asse.

Le tabelle Parametri e Metriche visualizzano i parametri di esecuzione e le metriche di tutte le esecuzioni selezionate. Le colonne di queste tabelle sono identificate dalla tabella Dettagli esecuzione immediatamente sopra. Per semplicità, è possibile nascondere parametri e metriche identici in tutte le esecuzioni selezionate attivando o disattivando Mostra pulsante solo diff.

confrontare le tabelle delle pagine delle esecuzioni

Confrontare le esecuzioni da un singolo esperimento

  1. Nella pagina dell'esperimento selezionare due o più esecuzioni facendo clic sulla casella di controllo a sinistra dell'esecuzione oppure selezionando tutte le esecuzioni selezionando la casella nella parte superiore della colonna.
  2. Fare clic su Confronta. Viene visualizzata la schermata Confronto <N> esecuzioni.

Confrontare le esecuzioni da più esperimenti

  1. Nella pagina Esperimenti selezionare gli esperimenti da confrontare facendo clic nella casella a sinistra del nome dell'esperimento.
  2. Fare clic su Confronta (n) (n è il numero di esperimenti selezionati). Viene visualizzata una schermata che mostra tutte le esecuzioni degli esperimenti selezionati.
  3. Selezionare due o più esecuzioni facendo clic sulla casella di controllo a sinistra dell'esecuzione oppure selezionando tutte le esecuzioni selezionando la casella nella parte superiore della colonna.
  4. Fare clic su Confronta. Viene visualizzata la schermata Confronto <N> esecuzioni.

Copia delle esecuzioni tra aree di lavoro

Per importare o esportare le esecuzioni di MLflow nell'area di lavoro di Databricks, è possibile usare il progetto open source basato sulla community MLflow Export-Import.