Profilazione gestita con XProf
Puoi utilizzare la profilazione XProf gestita quando utilizzi il monitoraggio dei workload di ML Diagnostics, l'interfaccia a riga di comando di ML Diagnostics o l'SDK ML Diagnostics. XProf gestito è un'istanza XProf con un backend scalabile di cui la piattaforma ML Diagnostics esegue il provisioning e la gestione nel tuo progettoGoogle Cloud , mentre XProf in hosting autonomo richiede il deployment e la manutenzione manuali delle tue istanze XProf per visualizzare i profili.
XProf è uno strumento open source di profilazione e analisi delle prestazioni per i workload di machine learning (ML) e fa parte dell'ecosistema OpenXLA. Rispetto a XProf in hosting autonomo, XProf gestito offre le seguenti funzionalità:
- Nessuna configurazione: non richiede l'installazione o la configurazione manuale dei server di visualizzazione XProf o delle relative dipendenze.
- Accesso centralizzato alle sessioni di profilo con più esecuzioni: carica le sessioni di profilo tra diverse esecuzioni di ML con una singola istanza XProf gestita per progetto.
- Scalabilità automatica e caricamento rapido: accelera il caricamento di profili di grandi dimensioni e scala automaticamente le risorse di backend quando più utenti visualizzano i profili contemporaneamente.
- Collaborazione e sicurezza integrate: genera link condivisibili per le sessioni di profilo, proteggendo al contempo le istanze di profilazione dalle vulnerabilità di sicurezza.
- Più modalità di acquisizione dei profili: supporta l'acquisizione multi-host, la profilazione on demand, la profilazione continua in modalità snapshot e l'acquisizione automatica dei profili dal monitoraggio dei workload.
- Nessun costo aggiuntivo per l'infrastruttura: fornisce risorse di calcolo XProf gestite senza costi aggiuntivi, a differenza dell'hosting autonomo di un'istanza XProf.
Percorsi di deployment
Puoi eseguire il deployment e abilitare XProf gestito utilizzando l'SDK ML Diagnostics, il monitoraggio dei workload o l'interfaccia a riga di comando ML Diagnostics.
La piattaforma ML Diagnostics esegue il deployment di un'istanza XProf gestita con un backend scalabile per progetto. Puoi utilizzare questa istanza per visualizzare tutte le sessioni del profilo acquisite in tutte le esecuzioni ML del progetto. L'acquisizione dei profili richiede anche un bucket Cloud Storage associato all'esecuzione ML per archiviare i dati del profilo acquisiti.
Puoi attivare XProf gestito e associare un bucket Cloud Storage alla tua esecuzione ML in uno dei seguenti modi:
- SDK ML Diagnostics: quando esegui il deployment della tua prima esecuzione ML utilizzando l'SDK, la piattaforma ML Diagnostics attiva ed esegue automaticamente il deployment di un'istanza XProf gestita nel tuo progetto. Specifica il bucket Cloud Storage per l'archiviazione dei profili impostando il parametro
gcs_pathquando definisci l'esecuzione ML nell'SDK. - Monitoraggio dei workload: il monitoraggio dei workload non attiva XProf gestito per impostazione predefinita. Invece, la prima volta che l'acquisizione automatica del profilo attiva una sessione del profilo nel tuo progetto, la piattaforma ML Diagnostics esegue automaticamente il provisioning e l'abilitazione di un'istanza XProf gestita. Per impostazione predefinita, ML Diagnostics esegue anche il provisioning di un bucket Cloud Storage regionale nel tuo progetto.
- ML Diagnostics CLI: puoi aggiornare qualsiasi esecuzione ML per attivare lo strumento XProf, che esegue il deployment dell'istanza XProf gestita nel tuo progetto, e associare un bucket Cloud Storage all'esecuzione ML.
Acquisisci profili
La diagnostica ML supporta quattro metodi per l'acquisizione dei profili XProf: acquisizione programmatica, profilazione on demand, profilazione continua in modalità snapshot e acquisizione automatica del profilo dal monitoraggio del workload. Questi metodi differiscono per il modo in cui viene attivata l'acquisizione e per la finestra temporale che registrano.
La tabella seguente mette a confronto i metodi di acquisizione del profilo:
| Metodo di acquisizione | Descrizione | Framework supportati |
|---|---|---|
| Acquisizione programmatica |
Incorpora i comandi di profilazione direttamente nel codice del workload per avviare e interrompere la registrazione dei dati del profilo in passaggi o funzioni di addestramento specifici. Utilizza questo metodo se vuoi profili riproducibili di passaggi di addestramento noti o sezioni di codice specifiche. |
JAX, vLLM, Tunix, TorchTPU |
| Profilazione on demand |
Attiva un'acquisizione del profilo in tempo reale dalla console Google Cloud o da gcloud CLI per una durata specificata mentre il workload è in esecuzione. Utilizza questo metodo quando vuoi ispezionare un workload in esecuzione in tempo reale senza modificare gli intervalli dei passaggi o riavviare il workload. |
JAX, vLLM, Tunix, TorchTPU |
| Profilazione continua in modalità snapshot (anteprima) |
Registra continuamente un profilo di 2 GB di tracce del dispositivo in un buffer circolare sugli host TPU e salva l'ultimo buffer di 2 GB nel bucket Cloud Storage quando attivi uno snapshot. Utilizza questo metodo quando devi ispezionare l'attività del workload che precede un rallentamento o un'anomalia intermittente. |
JAX, vLLM, Tunix |
| Acquisizione automatica dei profili dal monitoraggio dei workload (anteprima) |
Attiva automaticamente un'acquisizione del profilo XProf quando un analizzatore del degrado delle prestazioni del monitoraggio del workload segnala uno stato Utilizza questo metodo se vuoi che ML Diagnostics acquisisca i dati di traccia nel momento in cui le prestazioni peggiorano, senza attendere che tu attivi manualmente un'acquisizione. |
JAX, vLLM, Tunix, TorchTPU |
Acquisizione programmatica
Con l'acquisizione programmatica, incorpori i comandi di profilazione direttamente nel codice del workload per specificare esplicitamente quando avviare e interrompere la registrazione dei dati del profilo. Tutti i profili scritti nel bucket Cloud Storage specificato dal parametro gcs_path per l'esecuzione del ML vengono visualizzati automaticamente come sessioni di profilo nell'istanza XProf gestita del progetto, che puoi visualizzare nella consoleGoogle Cloud o utilizzando Google Cloud CLI.
Puoi configurare l'acquisizione programmatica in uno dei seguenti modi:
- SDK ML Diagnostics:
utilizza i metodi
profnell'SDK. Questi metodi eseguono il wrapping delle API di profilazione a livello di framework sottostanti, in modo che il codice di profilazione rimanga coerente tra JAX, vLLM, Tunix e TorchTPU. - API di profilazione native del framework: chiama direttamente i metodi di profilazione integrati del tuo framework ML e salva l'output nel bucket Cloud Storage della tua esecuzione ML:
- JAX: profilazione del calcolo
- vLLM: Profiling vLLM on Cloud TPU
- TorchTPU: profilazione del rendimento con XProf
Profilazione on demand
La profilazione on demand ti consente di attivare un'acquisizione del profilo in tempo reale mentre il tuo workload è in esecuzione. L'attivazione di un'acquisizione on demand registra un profilo per una durata specificata. Puoi attivare la profilazione on demand direttamente nel codice del workload o utilizzando l'SDK ML Diagnostics.
Prerequisiti
Prima di acquisire un profilo on demand, completa i seguenti passaggi di configurazione:
Avvia un server XProf sulla porta
9999nel tuo workload per rispondere ai trigger di acquisizione on demand:Direttamente in JAX: chiama il metodo
profiler.start_serversulla porta9999:profiler.start_server(port=9999)SDK ML Diagnostics: imposta
on_demand_xprof=Trueinmachinelearning_runquando definisci l'esecuzione ML.
Configura l'agente di orchestrazione del cluster o l'ambiente di computing:
- Google Kubernetes Engine (GKE) o Kubernetes autogestito: esegui il deployment dell'operatore e del webhook o del DaemonSet di diagnostica ML.
- Slurm gestito da Cluster Director o Slurm autogestito: esegui il deployment del daemon ML Diagnostics utilizzando uno script prolog Slurm.
- Compute Engine: esegui il deployment del daemon ML Diagnostics utilizzando uno script di avvio dell'istanza.
Acquisisci un profilo on demand
Puoi attivare un'acquisizione del profilo on demand dalla consoleGoogle Cloud o da gcloud CLI. Quando attivi un'acquisizione, specifica i seguenti parametri:
- Duration: la durata dell'acquisizione, in millisecondi o secondi. La durata massima che puoi acquisire dipende dalle caratteristiche del workload e dalla quantità di dati che rientrano nel limite di 2 GB del profilo.
- Target: i nodi di destinazione in cui vuoi acquisire il profilo:
- ConsoleGoogle Cloud : tutti i nodi che eseguono il workload vengono compilati automaticamente e puoi selezionare tutti i nodi o un sottoinsieme.
- gcloud CLI: elenca i target del profiler per il workload, quindi attiva un'acquisizione per tutti o un sottoinsieme di questi target.
- Livelli di tracer del dispositivo, dell'host e di Python: il livello di dettaglio da acquisire per le tracce del dispositivo, dell'host e di Python.
Profilazione continua in modalità snapshot
Quando la profilazione continua è abilitata, la piattaforma di diagnostica ML registra continuamente un profilo da 2 GB in un buffer circolare sugli host TPU. Quando attivi uno snapshot, Diagnostica ML salva l'ultimo profilo da 2 GB dal buffer come sessione del profilo nel bucket Cloud Storage. Questo snapshot ti consente di esaminare l'attività del workload che ha portato a un problema. La profilazione continua supporta solo il tracciamento dei dispositivi; non raccoglie tracce di host o Python.
Prerequisiti
Prima di iniziare la profilazione continua, assicurati che l'ambiente soddisfi i seguenti requisiti:
- Versioni della libreria supportate:
libtpuversione0.0.43o successive.jaxversione0.11.0o successive.
- Configurazione dell'orchestratore del cluster o dell'ambiente di computing:
- GKE o Kubernetes autogestito: esegui il deployment del DaemonSet di diagnostica ML.
- Slurm gestito da Cluster Director o Slurm autogestito: esegui il deployment del daemon ML Diagnostics utilizzando uno script prolog Slurm.
- Compute Engine: esegui il deployment del daemon ML Diagnostics utilizzando uno script di avvio dell'istanza.
Avvia il server XProf nel codice del workload chiamando
profiler.start_server(port=9999) o imposta on_demand_xprof=True in
machinelearning_run quando utilizzi l'SDK ML Diagnostics.
Avvia profilazione continua
Puoi avviare la profilazione continua direttamente nel codice del workload, utilizzando gcloud CLI o nella console Google Cloud . Una volta avviata, la profilazione continua registra profili da 2 GB in un buffer circolare sugli host TPU specificati.
Quando avvii la profilazione continua utilizzando gcloud CLI o la consoleGoogle Cloud , specifica i seguenti parametri:
- Target: i nodi di destinazione da profilare continuamente:
- ConsoleGoogle Cloud : tutti i nodi che eseguono il workload vengono compilati automaticamente e puoi selezionare tutti i nodi o un sottoinsieme.
- gcloud CLI: elenca i target del profiler per il workload, quindi avvia la profilazione continua per tutti o un sottoinsieme di questi target.
- Livello tracer dispositivo: il livello di tracciamento del dispositivo da acquisire continuamente. Il tracciamento dell'host e di Python è disattivato durante la profilazione continua.
Puoi avviare la profilazione continua direttamente dal codice del workload Python, in gcloud CLI o nella console Google Cloud .
Codice del workload Python
Per avviare la profilazione continua direttamente dal codice del workload Python, chiama la funzione start_continuous_profiling:
from xprof.api import continuous_profiling_snapshot
continuous_profiling_snapshot.start_continuous_profiling('localhost:9999', {})
Per saperne di più, consulta Profilazione JAX di XProf.
gcloud CLI
Per avviare la profilazione continua da gcloud CLI, elenca i target del profiler attivi e avvia la profilazione continua su questi nodi utilizzando i seguenti comandi:
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
RUN_ID="RUN_ID"
# 1. Discover active ProfilerTarget IDs on the ML run:
TARGETS=$(gcloud alpha mldiagnostics profiler-target list \
--machine-learning-run="${RUN_ID}" \
--location="${LOCATION}" \
--project="${PROJECT_ID}" \
--format="csv[no-heading](name.basename())" | paste -sd, -)
# 2. Start continuous profiling across the target nodes:
gcloud alpha mldiagnostics machine-learning-run start-continuous-profiling \
--machine-learning-run="${RUN_ID}" \
--location="${LOCATION}" \
--project="${PROJECT_ID}" \
--targets="${TARGETS}" \
--device-tracer-level=enabled
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .LOCATION: la regione in cui si trova l'esecuzione ML.RUN_ID: l'ID dell'esecuzione ML.
ConsoleGoogle Cloud
Per avviare la profilazione continua nella console Google Cloud , completa i seguenti passaggi:
- Nella console Google Cloud , vai a Cluster Director o GKE > AI/ML > Esegui diagnostica e seleziona l'esecuzione ML.
- Apri la scheda Profili.
- Nella barra delle azioni in alto, fai clic su Avvia profilazione continua.
- Seleziona i nodi da profilare e il livello del tracciatore del dispositivo, quindi fai clic su Avvia.
Dopo l'avvio della profilazione continua, il banner Acquisizione di profili continui
mostra l'ora di inizio della sessione come Since START_TIME
e la barra delle azioni mostra Acquisisci snapshot e Interrompi profilazione continua.
Acquisisci uno snapshot
Mentre la profilazione continua è in esecuzione, puoi acquisire uno snapshot per salvare l'ultimo profilo da 2 GB dal buffer circolare come sessione del profilo nel tuo bucket Cloud Storage. Puoi acquisire uno snapshot utilizzando gcloud CLI o la console Google Cloud .
Quando acquisisci uno snapshot di profilazione continua, specifica i seguenti parametri:
- Target: tutti o un sottoinsieme dei nodi di destinazione in cui è in esecuzione la profilazione continua:
- ConsoleGoogle Cloud : tutti i nodi configurati per la profilazione continua vengono compilati automaticamente e puoi selezionare tutti i nodi o un sottoinsieme.
- gcloud CLI: specifica tutti o un sottoinsieme di target del profiler in cui è in esecuzione la profilazione continua.
- Nome sessione Profiler: un nome per la sessione di snapshot acquisita.
Puoi acquisire uno snapshot utilizzando gcloud CLI o nella consoleGoogle Cloud .
gcloud CLI
Per acquisire uno snapshot di profilazione continua utilizzando gcloud CLI, esegui il seguente comando:
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"
RUN_ID="RUN_ID"
gcloud alpha mldiagnostics profiler-session capture "SNAPSHOT_NAME" \
--machine-learning-run="${RUN_ID}" \
--location="${LOCATION}" \
--project="${PROJECT_ID}" \
--targets="TARGET_NODES" \
--kind=snapshot
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .LOCATION: la regione in cui si trova l'esecuzione ML.RUN_ID: l'ID dell'esecuzione ML.SNAPSHOT_NAME: un nome per la sessione del profilo acquisita.TARGET_NODES: un elenco separato da virgole dei nodi target da acquisire.
ConsoleGoogle Cloud
Per acquisire uno snapshot di profilazione continua nella console Google Cloud , completa i seguenti passaggi:
- Nella console Google Cloud , vai a Cluster Director o GKE > AI/ML > Esegui diagnostica, seleziona l'esecuzione ML e apri la scheda Profili.
- Nella barra delle azioni in alto, fai clic su Crea snapshot.
- Nel riquadro Acquisisci snapshot di profilazione continua, inserisci un nome per il profilo, seleziona i nodi di destinazione e fai clic su Invia.
Lo snapshot viene visualizzato nella tabella Profili. Se il link non viene visualizzato immediatamente, fai clic su Aggiorna.
Acquisizione automatica del profilo dal monitoraggio del workload
Con l'acquisizione automatica del profilo dal monitoraggio dei workload, ML Diagnostics acquisisce automaticamente un profilo XProf quando un analizzatore del degrado delle prestazioni segnala uno stato "bad", anziché attendere che tu attivi manualmente un'acquisizione on demand dopo che si è verificato un problema. Puoi configurare l'acquisizione automatica del profilo per attivare un'acquisizione on demand o, se è abilitata la profilazione continua, uno snapshot di profilazione continua. Questo processo ti consente di diagnosticare la causa principale di un problema utilizzando un profilo acquisito al momento dell'evento.
Per le istruzioni di configurazione e i prerequisiti, consulta Acquisizione automatica del profilo nella documentazione sul monitoraggio del workload.
Analisi del profilo dell'AI agentica
L'analisi del profilo dell'AI agentica analizza automaticamente i profili delle prestazioni XProf acquisiti per i workload TPU e genera un report di analisi HTML dai dati di traccia XProf non elaborati. Utilizzando i modelli Gemini su Vertex AI, l'agente di analisi esegue gli strumenti di profilazione XProf, riassume i colli di bottiglia delle prestazioni e consiglia modifiche al codice o alla configurazione. Quando le API richieste sono abilitate, ML Diagnostics genera un report di analisi del profilo dell'AI agentica per ogni profilo acquisito nella piattaforma.
L'analisi del profilo dell'AI agentica utilizza gli stessi strumenti e funzionalità di base del repository di competenze XProf open source.
Anziché utilizzare direttamente il file delle competenze o installare l'interfaccia a riga di comando XProf richiesta dalla competenza open source, ML Diagnostics importa le implementazioni dello strumento XProf sottostante in modo che l'agente possa chiamarle direttamente. Di conseguenza, l'output dell'analisi in Diagnostica ML equivale all'esecuzione delle competenze XProf open source con l'interfaccia a riga di comando XProf sui file xplane locali.
Prerequisiti
Prima di utilizzare l'analisi del profilo dell'AI agentica, completa i seguenti passaggi di configurazione nel tuo progetto Google Cloud .
Abilita le API richieste
Abilita l'API Vertex AI (aiplatform.googleapis.com) in modo che l'agente di analisi possa eseguire i modelli Gemini all'interno del tuo progetto:
- Google Cloud console: Nella Libreria API, abilita l'API Vertex AI.
gcloud CLI: esegui il seguente comando:
gcloud services enable aiplatform.googleapis.com
Concedi ruoli IAM
Concedi al tuo account utente uno dei seguenti ruoli IAM (Identity and Access Management):
- Cluster Director Viewer (
roles/hypercomputecluster.viewer): concede l'accesso di sola lettura alle risorse di Cluster Director e ML Diagnostics, inclusi i report di analisi generati nella console Google Cloud in Esegui diagnostica > Profili. - Ruolo personalizzato (
hypercomputecluster.locations.analysis): concede l'autorizzazione per visualizzare i report di analisi generati nella console Google Cloud in Esegui diagnostica > Profili se aggiunto a un ruolo personalizzato.
Come funziona
Al termine di un'acquisizione del profilo programmatica, on demand, continua o automatica, un job in background isolato esegue il seguente workflow di analisi sul profilo XProf:
- Raccolta di dati estesa: esegue 15 strumenti XProf in parallelo per raccogliere un'istantanea dello stato che include il tempo di passaggio, l'utilizzo dell'hardware, la memoria utilizzata, i limiti del roofline, le operazioni più lente e le inefficienze del compilatore. Questo passaggio normalizza le tempistiche per passaggio di addestramento e separa le operazioni integre dai colli di bottiglia.
- Focused AI investigation: esamina l'istantanea dello stato di salute raccolta. Se il workload ha un utilizzo elevato della potenza di calcolo, un overhead di inattività e comunicazione basso e un rischio di memoria esaurita basso, l'agente salta le chiamate allo strumento aggiuntive e genera un report
OPTIMAL. Se vengono rilevati colli di bottiglia, l'agente formula ipotesi ed esegue fino a quattro controlli di follow-up mirati utilizzando strumenti XProf aggiuntivi per ispezionare le operazioni circostanti nel grafico di calcolo, i ritardi della cronologia tra gli host e i kernel personalizzati. - Generazione di report: combina le metriche di XProf con l'analisi della causa principale e le correzioni consigliate dell'agente AI. Il report
summary.htmlgenerato viene salvato nel bucket Cloud Storage e visualizzato nella consoleGoogle Cloud in Esegui diagnostica > Profili.
Questo workflow mantiene privati i dati e l'analisi del profilo all'interno del progetto. Le tracce del profiler non elaborate e i report HTML generati vengono archiviati nel tuo bucket Cloud Storage e tutte le chiamate ai modelli di AI vengono eseguite tramite Vertex AI nel tuo progetto Google Cloud .
Strumenti XProf
La tabella seguente descrive gli strumenti XProf eseguiti dall'agente durante l'analisi:
| Categoria | Strumenti XProf | Descrizione |
|---|---|---|
| Panoramica del workload e tempistiche dei passaggi |
get_xprof_overview,
get_step_trace,
get_kpi_metrics,
get_device_information,
get_hosts,
get_utilization_viewer,
get_smart_suggestions
|
Questi strumenti vengono eseguiti durante la raccolta dei dati generali e lo strumento
|
| Roofline e operazioni più lente |
get_roofline_model,
get_hlo_op_profile
|
Questi strumenti vengono eseguiti durante la raccolta dei dati generali e l'indagine mirata sull'AI per verificare quanto segue:
|
| Rilevatori di inefficienza del compilatore |
detect_layout_mismatch_copies,
detect_unfused_reshapes,
detect_unnecessary_convert_reduce,
list_hlo_modules
|
Questi strumenti vengono eseguiti durante la raccolta dei dati generali per verificare quanto segue:
|
| Memoria e rischio di OOM |
get_memory_profile,
get_peak_allocations
|
Questi strumenti vengono eseguiti durante la raccolta dei dati generali per verificare quanto segue:
|
| Explorer del grafico di calcolo | get_hlo_neighborhood |
Questo strumento viene eseguito durante l'analisi AI mirata per controllare le operazioni immediatamente prima e dopo un'operazione lenta nel grafico XLA e identificare cosa blocca la fusione del compilatore o forza lo spostamento dei dati. |
| Timeline e tempistiche del kernel |
aggregate_xplane_events,
get_kernel_stats
|
Questi strumenti vengono eseguiti durante l'indagine AI mirata per verificare quanto segue:
|
| Profiler del kernel personalizzato |
llo_load,
llo_query
|
Questi strumenti vengono eseguiti durante l'indagine AI mirata per controllare le tracce di esecuzione di basso livello per i kernel personalizzati, come Pallas o Mosaic, che appaiono opachi alla profilazione standard di alto livello. |
Report di analisi del profilo AI
Al termine dell'analisi di un profilo acquisito, ML Diagnostics salva il report summary.html generato nel bucket Cloud Storage e lo visualizza nella console Google Cloud in Esegui diagnostica > Profili. Puoi utilizzare questo report per esaminare l'integrità complessiva del workload, ispezionare i principali colli di bottiglia delle prestazioni e identificare le modifiche consigliate al codice o alla configurazione.
Ogni report generato include le seguenti sezioni:
- Riepilogo dell'analisi: mostra uno stato generale di
OPTIMALoNEEDS_ATTENTION, un riepilogo di 3-5 frasi e metriche sul rendimento chiave come il tempo di passaggio, la memoria utilizzata e l'efficienza di Roofline. - Colli di bottiglia prioritari e correzioni applicabili: elenca i risultati in ordine di priorità, da
P0per i problemi critici aP2per i problemi minori. Ogni risultato include:- Cosa sta succedendo: una spiegazione della causa principale, incluse le forme e i layout dei tensori, se pertinenti.
- Prove: citazioni dirette delle metriche e delle operazioni di XProf in cui è stato misurato il collo di bottiglia.
- Impatto previsto e correzione: la quantità di tempo di passaggio o di memoria interessata, abbinata alle modifiche consigliate al framework, allo sharding o al compilatore.
- Analisi dettagliata dello strumento XProf: fornisce dati di supporto e analisi dettagliate delle seguenti analisi:
- Analisi Roofline
- Analisi della memoria
- Analisi del profilo delle operazioni dell'ottimizzatore di alto livello (HLO)
- Statistiche di esecuzione del kernel
- Analisi del kernel personalizzato e dell'ottimizzatore di basso livello