Condividi tramite


Visualizzare i risultati dell'addestramento con le esecuzioni di MLflow

Questo articolo descrive come usare le esecuzioni MLflow per visualizzare e analizzare i risultati di un esperimento di training del modello e come gestire e organizzare le esecuzioni. Per ulteriori informazioni sugli esperimenti MLflow, vedere Organizzare le esecuzioni di addestramento utilizzando esperimenti MLflow.

Un'esecuzione MLflow corrisponde a una singola esecuzione del codice del modello. Ogni esecuzione registra informazioni come il notebook che ha avviato l'esecuzione, tutti i modelli creati dall'esecuzione, i parametri del modello e le metriche salvati come coppie chiave-valore, tag per i metadati di esecuzione ed eventuali artefatti o file di output creati dall'esecuzione.

Tutte le esecuzioni di 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.

Visualizzare i dettagli dell'esecuzione

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

Nella pagina dei dettagli dell'esperimento fare clic sul nome dell'esecuzione nella tabella delle esecuzioni.

Aprire l'esecuzione dell'esperimento dalla pagina dei dettagli dell'esperimento.

Dal notebook, cliccare sul nome dell'esecuzione nella barra laterale Esecuzioni dell'esperimento.

Aprire l'esecuzione dell'esperimento dal notebook.

La schermata di esecuzione mostra l'ID esecuzione, i parametri usati per l'esecuzione, le metriche risultanti dall'esecuzione e i dettagli sull'esecuzione, incluso un collegamento al notebook di origine. Gli artefatti salvati dall'esecuzione sono disponibili nella scheda Artefatti.

Visualizza esecuzioni

Frammenti di codice per la previsione

Se si registra un modello da un'esecuzione, il modello viene visualizzato nella scheda Artifacts, insieme ai frammenti di codice che illustrano come caricare e usare il modello per eseguire stime sui dataframe Spark e Pandas.

prevedere frammenti di codice

Visualizza il notebook utilizzato per una sessione

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

  • Nella pagina dei dettagli dell'esperimento, fare clic sul collegamento nella colonna Origine.
  • Nella pagina di esecuzione cliccare il collegamento posto accanto a Origine.
  • Nel notebook, accedere alla barra laterale Esecuzioni di esperimenti e cliccare l'icona NotebookIcona Versione del notebook nella casella relativa all'esecuzione dell'esperimento.

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.

Aggiungere un tag a un'esecuzione

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

  1. Nella tabella Dettagli nella pagina di esecuzione , fare clic su Aggiungi accanto ai Tag .

    tabella tag

  2. Verrà visualizzata la finestra di dialogo Aggiungi/Modifica tag. Nel campo Chiave , immettere un nome per la chiave e fare clic su Aggiungi tag.

    Aggiungere un tag.

  3. Nel campo valore immettere il valore per il tag.

  4. Fare clic sul segno più per salvare la coppia chiave-valore appena immessa.

    Il segno più per salvare la coppia chiave-valore.

  5. Per aggiungere altri tag, ripetere i passaggi da 2 a 4.

  6. Al termine, fare clic su Salva i tag.

Modificare o eliminare un tag per un'esecuzione

  1. Nella tabella dettagli della pagina di esecuzione fare clic su Icona a forma di matita. accanto ai tag esistenti.

    tabella tag

  2. Verrà visualizzata la finestra di dialogo Aggiungi/Modifica tag.

    1. Per eliminare un tag, fare clic sulla X sul tag.

      Eliminare un tag.

    2. Per modificare un tag, selezionare la chiave dal menu a discesa e modificare il valore nel campo valore . Fare clic sul segno più per salvare la modifica.

      Modificare un tag.

  3. Al termine, fare clic su Salva i tag.

Riprodurre l'ambiente software di un'esecuzione

È possibile riprodurre l'ambiente software esatto per l'esecuzione facendo clic su Riproduci Esecuzione in alto a destra della pagina dell'esecuzione. Viene visualizzata la seguente finestra di dialogo:

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, cliccare Visualizza specifica. Per clonare solo il notebook e non il cluster, deselezionare questa opzione.
  • Se il cluster originale non esiste più, è possibile visualizzare le librerie installate nel cluster originale facendo clic su Visualizza librerie. Se il cluster originale esiste ancora, questa sezione è resa inattiva.

Rinominare l'esecuzione

Per rinominare un'esecuzione, fare clic sul menu kebab menu Kebab nell'angolo superiore destro della pagina di esecuzione (accanto al pulsante Autorizzazioni) e selezionare Rinomina.

Rinominare un'esecuzione dalla pagina di esecuzione.

Selezionare le colonne da visualizzare

Per gestire le colonne visualizzate nella tabella delle esecuzioni nella pagina dei dettagli dell'esperimento, clicca su Colonne e seleziona dal menu a discesa.

Esecuzioni di filtri

È possibile cercare le esecuzioni nella tabella nella pagina dei dettagli dell'esperimento 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 premere INVIO. 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

    MIN(metrics.rmse) <= 1

    MAX(metrics.memUsage) > 0.9

    LATEST(metrics.memUsage) = 0 AND MIN(metrics.rmse) <= 1

    Per impostazione predefinita, i valori delle metriche vengono filtrati in base all'ultimo valore registrato. L'uso di MIN o MAX consente di cercare le esecuzioni in base rispettivamente ai valori minimi o massimi delle metriche. Solo le esecuzioni registrate dopo agosto 2024 hanno valori di metrica minimi e massimi.

  • 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 allo stato (Attivo o Eliminato), al momento della creazione dell'esecuzione e ai set di dati usati. A tale scopo, effettuare le selezioni rispettivamente dai menu a tendina Data di creazione, Stato, o Set di dati.

Esecuzioni di filtri

Scarica esecuzioni

È possibile scaricare le esecuzioni dalla pagina dei dettagli dell'esperimento come indicato di seguito:

  1. Fare clic menu Kebab per aprire il menu kebab.

    Menu Kebab con le opzioni di download nella pagina degli Esperimenti.

  2. Per scaricare un file in formato CSV contenente tutte le esecuzioni visualizzate (fino a un massimo di 100 esecuzioni), selezionare Scarica <n> esecuzioni. MLflow crea e scarica un file con un'esecuzione per riga contenente i campi seguenti per ogni esecuzione:

    Start Time, Duration, Run ID, Name, Source Type, Source Name, User, Status, <parameter1>, <parameter2>, ..., <metric1>, <metric2>, ...
    
  3. Se desideri scaricare più di 100 esecuzioni o farlo in modo automatico, seleziona Scarica tutte le esecuzioni. Viene visualizzata una finestra di dialogo che mostra un frammento di codice che è possibile copiare o aprire in un notebook. Dopo aver eseguito questo codice in una cella del notebook, scegli Scarica tutte le righe dall'output della cella.

Eliminazione di esecuzioni

È possibile eliminare le esecuzioni dalla pagina dei dettagli dell'esperimento seguendo questa procedura:

  1. Durante l'esperimento, selezionare una o più esecuzioni facendo clic sulla casella di controllo a sinistra delle esecuzioni.
  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. Cliccare Elimina per confermare. Le esecuzioni eliminate vengono salvate per 30 giorni. Per visualizzare le esecuzioni eliminate, selezionare Eliminato nel campo Stato.

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

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

Di seguito sono riportati i parametri mlflow.delete_runs:

  • experiment_id: ID dell'esperimento contenente le esecuzioni da eliminare.
  • max_timestamp_millis: timestamp di creazione massimo in millisecondi del periodo UNIX per l'eliminazione delle esecuzioni. Vengono eliminate solo le esecuzioni create prima o in corrispondenza di 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 viene impostato automaticamente su 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"]

Consultare la documentazione dell'API Esperimenti di Azure Databricks per i parametri e le specifiche del valore restituito per la cancellazione delle esecuzioni in base al tempo di creazione.

Esecuzioni di ripristino

È possibile ripristinare le esecuzioni eliminate in precedenza dall'interfaccia utente come indicato di seguito:

  1. Nella pagina esperimento nel campo Stato selezionare eliminato 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. Le esecuzioni ripristinate vengono ora visualizzate quando si seleziona Attivo nel campo Stato.

Esecuzione del ripristino bulk basata sul 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 parametri mlflow.restore_runs:

  • 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, max_runs viene impostato automaticamente su 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"]

Consulta la documentazione dell'API Esperimenti di Azure Databricks per conoscere 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. Nella pagina Confronto esecuzioni vengono visualizzate informazioni sulle esecuzioni selezionate in formato tabulare. È anche possibile creare visualizzazioni di risultati di esecuzione e tabelle di informazioni sull'esecuzione, parametri di esecuzione e metriche. Visualizzare confrontare le esecuzioni di MLflow usando grafici e diagrammi.

Le tabelle dei parametri e delle metriche visualizzano i parametri di esecuzione e le metriche di tutte le esecuzioni scelti. 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 tramite il pulsante Mostra solo differenze.

confrontare le tabelle di pagine delle esecuzioni

Confrontare le esecuzioni da un singolo esperimento

  1. Nella pagina dei dettagli dell'esperimentoselezionare 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. Cliccare Confronta. Viene visualizzata la schermata Confronto <N> esecuzioni.

Confrontare le esecuzioni ottenute da più esperimenti

  1. Nella pagina esperimentiselezionare gli esperimenti da confrontare facendo clic nella casella a sinistra del nome dell'esperimento.
  2. Cliccare Confronta (n) (dove 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 selezionare tutte le esecuzioni facendo clic sulla casella in alto nella colonna.
  4. Cliccare Confronta. Viene visualizzata la schermata Confronto <N> esecuzioni.

Copia delle esecuzioni tra aree di lavoro

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