Rilevamento e osservabilità dell'esperimento

Importante

Questa funzionalità è in Anteprima Pubblica.

Il tracciamento degli esperimenti e l'osservabilità sono integrati nel runtime dell'IA. MLflow è un unico luogo per i parametri di una run, le metriche, le metriche del sistema GPU, i log e gli artefatti. Ogni run si trova in un esperimento MLflow che puoi condividere con il tuo team, e un pannello delle risorse GPU integrato mostra l'utilizzo live della GPU, la memoria e la temperatura mentre il codice gira.

Punti chiave in questa pagina:

  • MLflow è l'interfaccia unificata per gli esperimenti di esecuzione AI Runtime: metriche, parametri, metriche di sistema, log e artefatti.
  • I carichi di lavoro inviati con la CLI Databricks ricevono automaticamente un flusso MLflow. Nei quaderni e negli script, chiama mlflow.start_run() o mlflow.autolog().
  • Un pannello di risorse GPU integrato mostra utilizzo, memoria e temperatura.

Cosa offre MLflow per il deep learning

  • Metriche e parametri: registra la perdita di addestramento, le metriche di valutazione, il tasso di apprendimento e gli iperparametri, e confrontali tra le run nell'interfaccia MLflow.
  • Metriche di sistema: utilizzo di GPU, CPU e memoria registrato insieme alle tue metriche di addestramento nella scheda delle metriche di sistema della run.
  • Logs: Output del driver generato dal job nella scheda Logs dell'esecuzione.
  • Artefatti e modelli: Memorizza file di modello, configurazioni e altri output durante l'esecuzione. Gli artefatti possono essere memorizzati in un volume del Catalogo Unity.
  • Condivisione e collaborazione: Gli esperimenti sono oggetti dell’area di lavoro. Concedere ai compagni di squadra l'accesso a un esperimento per condividere le run e confrontare i risultati. Vedi Come organizzare le esecuzioni di training con esperimenti di MLflow.
  • Integrazioni con framework: Hugging Face Transformers, PyTorch Lightning e altre librerie effettuano il login diretto su MLflow.

Per i pattern di deep learning in MLflow 3, vedi il flusso di lavoro di deep learning di MLflow 3.

Devo aggiungere codice MLflow?

Dipende da come invii il carico di lavoro:

Come corri Esecuzione MLflow creata automaticamente? Cosa aggiungi
Databricks CLI (databricks air run) Yes. experiment_name nel carico di lavoro YAML imposta l'esperimento, e le metriche e i log di sistema vengono catturati senza codice. Optional. Registra metriche personalizzate nell'esecuzione di MLFLOW_RUN_ID. Vedi Monitorare le esecuzioni con MLflow e la pagina di esecuzione di Jobs
API GPU serverless (@distributed) Yes. Ogni .distributed() chiamata crea una run. Optional. Registra metriche personalizzate dall'interno della funzione.
Notebook o script su un singolo nodo No. L'autologging non viene abilitato automaticamente nell'ambiente serverless. Chiama mlflow.start_run() e registra metriche, o chiama mlflow.autolog().

Come iniziare

Usa MLflow 3.7 e superiori. I seguenti esempi sono pronti per essere copiati in una cella di un notebook o in uno script Python.

Metriche logaritmiche da un ciclo di addestramento

import mlflow

mlflow.set_experiment("/Users/<username>/my-experiment")

with mlflow.start_run(run_name="baseline-lr3e-4"):
    mlflow.log_params({"learning_rate": 3e-4, "batch_size": 32, "epochs": 3})
    for epoch in range(3):
        train_loss = train_one_epoch(model, train_loader, optimizer)  # your training code
        val_loss = evaluate(model, val_loader)
        mlflow.log_metrics({"train_loss": train_loss, "val_loss": val_loss}, step=epoch)

Usa l'autologging

In PyTorch Lightning, richiama mlflow.pytorch.autolog() prima dell'addestramento. Per altre librerie supportate, chiamare mlflow.autolog().

import mlflow

mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
    trainer.fit(model, datamodule=datamodule)

Registro dei Trasformatori Faccia di Abbraccio

Imposta report_to="mlflow". L'argomento run_name stabilisce il nome della run MLflow.

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5",
    logging_steps=50,
)

Log di più GPU

Nell'addestramento distribuito, ogni processo esegue il tuo codice di addestramento. Logaritmi solo dal rango 0 in modo che ogni metrica venga registrata una volta:

import os

import mlflow

if int(os.environ.get("RANK", "0")) == 0:
    mlflow.log_metric("train_loss", loss, step=step)

Procedure consigliate

  • Imposta step su un valore significativo, come il batch globale o l'epoca, e registra a intervalli regolari (ad esempio, ogni 50 passi) anziché a ogni batch. MLflow limita il numero di passi metrici per run. Vedere Limiti delle risorse.
  • Usa percorsi assoluti dell'esperimento, come /Users/<username>/my-experiment o /Workspace/Shared/<team>/my-experiment. Metti gli esperimenti che vuoi condividere in una cartella condivisa.
  • Per riprendere un'esecuzione precedente, specifica il relativo ID: mlflow.start_run(run_id="<previous-run-id>").

Serverless GPU API

Quando usi l'API Serverless GPU, ogni chiamata crea .distributed() automaticamente un MLflow eseguito. L'esperimento predefinito è /Users/{WORKSPACE_USER}/{notebook-name}.

  • Se richiami .distributed() all'interno di una run attiva di MLflow, viene creata una run figlia nidificata all'interno di essa:

    import mlflow
    
    with mlflow.start_run() as outer_run:
        run_train.distributed()  # creates a nested child run under outer_run
    
  • Per usare un esperimento diverso, chiama mlflow.set_experiment() prima .distributed(), oppure imposta la MLFLOW_EXPERIMENT_NAME variabile di ambiente. Usare sempre percorsi assoluti.

    import os
    
    import mlflow
    
    mlflow.set_experiment("/Users/<username>/my-experiment")
    # or: os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    run_train.distributed()
    
  • Per riprendere una run precedente, impostare MLFLOW_RUN_ID prima di chiamare .distributed():

    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()
    

Visualizzazione dei log

  • Output del notebook: l'output standard e gli errori del codice di training vengono visualizzati nell'output della cella del notebook.
  • Log di MLflow: l'interfaccia utente dell'esperimento MLflow visualizza metriche, parametri e artefatti di training.

Se non puoi visualizzare i log

La scheda Logs sulla pagina di esecuzione MLflow trasmette i log dalla run Databricks associata all'esecuzione MLflow, quindi l'accesso è governato dai permessi di quel job. Se la scheda mostra Non hai accesso a questi log, allora non hai permessi sufficienti.

L'accesso all'esecuzione in MLflow non implica l'accesso al lavoro. Puoi disporre dell'autorizzazione per l'esperimento MLflow e vederti comunque negato l'accesso ai log. Per accedere, chiedi a un utente con permessi di Gestione Possibile o a un amministratore di spazio di lavoro di concederti almeno la Visualizzazione Possibile sul lavoro. Vedi Controllo accesso a un lavoro per vedere come vengono concessi i permessi ai lavori.

Monitoraggio delle risorse GPU

Il pannello risorse GPU è una funzione di comodità per le sessioni notebook. Mostra in tempo reale lo stato di salute e l'utilizzo della GPU senza dover configurare MLflow, quindi è particolarmente utile quando la sessione del notebook non crea alcun esperimento MLflow. Per una registrazione persistente delle metriche di GPU, CPU e memoria legate a una run, usa invece la scheda metriche MLflow System . Il riquadro supporta sia carichi di lavoro a nodo singolo che a più nodi.

Per aprire il riquadro, connettere il notebook al runtime di intelligenza artificiale e quindi fare clic sull'icona Chip.Risorse GPU nel riquadro a destra.

Riquadro delle risorse GPU che mostra le metriche di utilizzo, memoria e temperatura per ogni GPU.

Nel riquadro vengono visualizzate le metriche seguenti per ogni GPU:

  • Percentuale di utilizzo GPU
  • Utilizzo della memoria GPU
  • Temperatura

Il riquadro interroga le metriche ogni 10 secondi e conserva fino a 2 ore di cronologia. Fare clic sull'icona Aggiorna.Aggiornare per recuperare immediatamente i valori più recenti. Dopo 5 minuti di inattività, il riquadro viene sospeso; riaprirlo per riprendere il monitoraggio.

Limiti globali in Azure Databricks

Vedere Limiti delle risorse.