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.
AI Runtime si integra con MLflow per fornire strumenti di tracciamento degli esperimenti, osservabilità e debug. MLflow fornisce un unico luogo per i parametri di una run, metriche, metriche del sistema GPU, log e artefatti, sia che tu sviluppi in un notebook, invii un carico di lavoro con la databricks air CLI o programmi un lavoro.
Cosa offre MLflow
Un esperimento MLflow raggruppa le esecuzioni di addestramento correlate, e ogni esecuzione fornisce una registrazione persistente della configurazione e dei risultati dell'addestramento.
- Metriche e parametri: registra la perdita di addestramento, le metriche di valutazione, i tassi di apprendimento e gli iperparametri, poi confrontali tra le esecuzioni.
- Metriche di sistema: visualizza l'utilizzo di GPU, CPU e memoria per le esecuzioni gestite nella scheda metriche di sistema .
- Vista log: Visualizza l'output del driver per un carico di lavoro supportato da job nella scheda Logs dell'esecuzione. Vedi Visualizza log nella scheda MLflow Logs.
- Artefatti e modelli: Memorizza file di modello, configurazioni e altri output con l'esecuzione. Usa un volume di Unity Catalog per artefatti grandi o durevoli.
- Condivisione e collaborazione: Concedere l'accesso a un esperimento affinché altri utenti dello spazio di lavoro possano visualizzare e confrontare le sue esecuzioni. Vedi Come organizzare le esecuzioni di training con esperimenti di MLflow.
- Integrazioni con il framework: Utilizzare integrazioni MLflow con Hugging Face Transformers, PyTorch Lightning e altre librerie supportate.
Per i carichi di lavoro basati su processi, come quelli inviati con databricks air run, l'esecuzione del lavoro di Azure Databricks integra MLflow registrando lo stato di esecuzione, le risorse di calcolo, i tentativi e l'output dei driver.
Come vengono creati i run di MLflow
Come avviare o unirsi a una run MLflow dipende da come inizi il carico di lavoro:
| Come gestisci il carico di lavoro | Come inizia il run MLflow | Come selezionare l'esperimento |
|---|---|---|
Databricks CLI (databricks air run) |
Ogni tentativo crea automaticamente un'esecuzione. | Imposta experiment_name nel file YAML del carico di lavoro. |
Notebook con l'SDK di runtime IA Databricks (.distributed()) |
Ogni chiamata crea automaticamente un'esecuzione. | Chiama mlflow.set_experiment() prima di .distributed(), oppure imposta MLFLOW_EXPERIMENT_NAME. |
| Il codice viene eseguito direttamente in un notebook allegato | Nessuna run viene creata automaticamente. Usa mlflow.start_run() o autologging. |
Chiama mlflow.set_experiment() nel notebook. |
Pianificato ai_runtime_task |
L'attività crea automaticamente un'esecuzione. | Imposta experiment nella configurazione del compito. Vedi AI Runtime task. |
Dopo che il tuo codice avvia o si collega al run corretto, usa l'API di tracciamento MLflow per registrare dati di addestramento personalizzati. Per i framework supportati, puoi usare l'autologging invece di aggiungere singole chiamate di loging. Per i pattern di deep learning, vedi MLflow 3 deep learning workflow.
Utilizza le seguenti pratiche quando configuri il tracciamento MLflow:
- Imposta
stepsu un valore significativo come il lotto globale o l'epoca. Registra a intervalli invece che ad ogni lotto. MLflow limita il numero di passi metrici per run. Vedere Limiti delle risorse. - Per l'addestramento distribuito, registra una metrica solo dal rango 0 in modo che ogni valore venga registrato una volta.
- Per i flussi di lavoro su notebook, usa percorsi assoluti degli esperimenti, come
/Users/<username>/my-experimento/Workspace/Shared/<team>/my-experiment. Metti gli esperimenti che vuoi condividere in una cartella dello spazio di lavoro condiviso. - Conserva i checkpoint di grandi dimensioni e durevoli in un volume di Unity Catalog. Per i pattern di checkpointing, vedi Migliorare le prestazioni di addestramento e la resilienza su AI Runtime.
Note
Usa MLflow 3.7 e superiori per gli esempi presenti in questa pagina.
Tieni traccia dei carichi di lavoro della CLI Databricks
Quando invii un carico di lavoro con databricks air run, AI Runtime crea un'esecuzione di processo di Azure Databricks per i dettagli di esecuzione e un'esecuzione MLflow per i dati degli esperimenti. La submission originale e i suoi tentativi condividono una run di lavoro, mentre ogni tentativo crea una run MLflow separata nello stesso esperimento così da poter confrontare i tentativi.
Le metriche di GPU, CPU e memoria del sistema vengono catturate automaticamente per ogni esecuzione gestita e appaiono nella scheda metriche del sistema MLflow.
Configura e accedi all'esecuzione
Usa il workload YAML per selezionare l'esperimento e configura opzionalmente il nome della run e la posizione dell'artefatto. Il seguente esempio mostra i campi MLflow necessari:
experiment_name: my-training
mlflow_run_name: baseline-lr3e5
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training
Per i requisiti di campo, i valori predefiniti e i valori supportati, vedi Workload YAML reference.
AI Runtime espone l'ID di run gestito tramite MLFLOW_RUN_ID. Per registrare i tuoi propri parametri, metriche e artefatti di quella run, riaprilo con l'API di tracciamento MLflow:
import os
import mlflow
# Log from rank 0 only because all nodes share the same MLFLOW_RUN_ID.
if os.environ.get("RANK", "0") == "0":
with mlflow.start_run(run_id=os.environ["MLFLOW_RUN_ID"]):
mlflow.log_param("learning_rate", 3e-4)
for step, loss in enumerate(training_losses):
mlflow.log_metric("train_loss", loss, step=step)
Trova run e log
I log sono disponibili sia tramite la CLI Databricks che tramite la pagina di esecuzione MLflow. Usa i seguenti comandi per trovare i workload, ispezionare un workload e trasmettere o scaricare log:
databricks air list --all-status
databricks air get <job-run-id>
databricks air logs <job-run-id>
databricks air logs <job-run-id> --node 2
databricks air logs <job-run-id> --download-to ./logs/
Monitora i carichi di lavoro dei notebook
Da un notebook, puoi eseguire codice direttamente nella sessione allegata oppure eseguire un addestramento distribuito tramite il @distributed decorator dall'SDK Databricks AI Runtime.
Esegui il codice direttamente in un notebook
Il codice eseguito direttamente in un notebook collegato non crea automaticamente una run MLflow. Seleziona un esperimento, poi avvia una run o abilita l'autologging:
import mlflow
mlflow.set_experiment("/Users/<username>/my-experiment")
with mlflow.start_run(run_name="baseline"):
train()
Per abilitare l'autologging di PyTorch Lightning, usa il seguente schema:
mlflow.pytorch.autolog()
with mlflow.start_run(run_name="lightning-baseline"):
trainer.fit(model, datamodule=datamodule)
Per Hugging Face Transformers, configura TrainingArguments come segue:
from transformers import TrainingArguments
args = TrainingArguments(
output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
report_to="mlflow",
run_name="llama7b-sft-lr3e5",
logging_steps=50,
)
Usa l'SDK di Databricks AI Runtime
Per l'addestramento distribuito da un notebook, usa il @distributed decorator dall'SDK Databricks AI Runtime (databricks-sdk-air). L'SDK è disponibile nello databricks.air spazio di nomi nell'ambiente GPU versione 6 e superiore, oppure come serverless_gpu nell'ambiente GPU versione 5 e inferiore.
from databricks.air import distributed
@distributed()
def train():
# Training code
...
train.distributed()
Ogni chiamata .distributed() crea automaticamente un run MLflow. L'esperimento predefinito è /Users/{WORKSPACE_USER}/{notebook-name}. Per selezionare un altro esperimento, impostalo prima di chiamare .distributed():
mlflow.set_experiment("/Users/<username>/my-experiment")
train.distributed()
Quando chiami .distributed() all'interno di una run attiva, AI Runtime crea una run figlia annidata:
with mlflow.start_run() as parent_run:
train.distributed()
Per riprendere una precedente esecuzione, imposta MLFLOW_RUN_ID prima di .distributed():
import os
os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
train.distributed()
Usa il link run nell'output della cella o nel pannello Experiment del notebook per aprire la run MLflow.
Visualizza i log
- Output del notebook: l'output standard e gli errori del codice di addestramento appaiono nell'output della cella del notebook.
-
MLflow logs: Per i workload di notebook basati su job come le chiamate
.distributed(remote=True), la scheda Logs di MLflow mostra l'output dell'esecuzione del job associato.
Monitoraggio delle risorse GPU in tempo reale
Il pannello delle risorse GPU per notebook mostra l'utilizzo live della GPU, la memoria e la temperatura per carichi di lavoro a singolo nodo e multi-nodo. Usa la scheda metriche del sistema MLflow quando hai bisogno di un record persistente collegato a una run.
Per aprire il pannello, collega il notebook ad AI Runtime, poi fai clic su Risorse GPU nel pannello laterale destro.
Il riquadro interroga le metriche ogni 10 secondi e conserva fino a 2 ore di cronologia.
Aggiorna per recuperare i valori più recenti. Dopo 5 minuti di inattività, il riquadro va in pausa. Riaprilo per riprendere il monitoraggio.
Visualizza i log nella scheda MLflow Logs
La scheda Logs in una pagina di esecuzione di MLflow mostra l'output di un carico di lavoro AI Runtime basato su un job. Per aprirlo, vai nella pagina della run e clicca su Logs.
Per le nuove esecuzioni, la scheda Log sostituisce i file di log precedentemente memorizzati nella scheda Artefatti della run, che sono deprecati. Le esecuzioni create in precedenza conservano i relativi file di log nella scheda Artefatti.
Dalla scheda Logs puoi:
- Ricerca: Mostra solo le righe che contengono un termine di ricerca.
- Filtra per nodo, livello e intervallo temporale: seleziona un singolo nodo di un carico di lavoro multi-nodo, mostra solo informazioni, linee di avviso o errore, oppure restringi la visuale a un intervallo temporale.
- Segui un carico di lavoro in corso: mentre l'esecuzione è attiva, il nuovo output appare appena arriva. Scorri verso l'alto per mettere in pausa i contenuti seguiti.
- Copia e scarica: Copia le righe caricate, oppure scarica ogni riga che corrisponde ai filtri attuali.
Conservazione dei log
I registri sono disponibili nella scheda Registri per 60 giorni.
Risoluzione dei problemi per l'accesso ai log
La scheda Logs su una pagina di esecuzione MLflow mostra in streaming l'output dall'esecuzione del lavoro associato di Azure Databricks. L'accesso all'esperimento MLflow non implica l'accesso al job.
Se la scheda mostra che non hai accesso a questi log, chiedi a un utente con il permesso Può Gestire o a un amministratore dello spazio di lavoro di concederti almeno Può visualizzare sul lavoro. Consultare Controllare l'accesso a un lavoro.
Limiti globali in Azure Databricks
Vedere Limiti delle risorse.