Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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()omlflow.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
stepsu 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-experimento/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_runPer usare un esperimento diverso, chiama
mlflow.set_experiment()prima.distributed(), oppure imposta laMLFLOW_EXPERIMENT_NAMEvariabile 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_IDprima 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 Risorse GPU nel riquadro a destra.
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 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.