Strumento Statistiche operazioni HLO
Puoi utilizzare Statistiche operazioni HLO per visualizzare le statistiche sul rendimento delle operazioni di ottimizzazione di alto livello (HLO) eseguite durante una sessione di profilatura. Questo strumento è utile per identificare potenziali target per l'ottimizzazione del rendimento evidenziando le operazioni più dispendiose in termini di tempo all'interno del grafico HLO durante il periodo di profilazione.
Piattaforme supportate
TPU: supportata
GPU: supportata
Per le GPU, le operazioni HLO hanno una relazione N:M con i kernel effettivamente eseguiti. Per le statistiche a livello di kernel, consulta lo strumento Statistiche del kernel della GPU.
Componenti dello strumento Statistiche operazioni HLO
Lo strumento Statistiche operazioni HLO ha i seguenti componenti chiave:
- Tabella delle statistiche sulle operazioni HLO: questo è il componente principale, che presenta un'analisi dettagliata di ogni operazione HLO eseguita durante la sessione di profiling in un formato tabulare. Esiste una riga per ogni distinta operazione HLO e colonne che acquisiscono vari dettagli relativi a quell'operazione.
- Un selettore a discesa ti consente di decidere quali colonne visualizzare per ogni operazione HLO.
- Puoi anche filtrare le righe in base alla categoria dell'operazione HLO tramite un secondo selettore a discesa.
- Le caselle di ricerca ti consentono di filtrare in base a ID programma, operazioni HLO, testo dell'operazione HLO o nome dell'operazione del framework specifici. I filtri selezionano la stringa fornita che compare in qualsiasi punto della rispettiva colonna.
- Sezione Grafici riepilogativi: questa sezione contiene grafici che riepilogano la tabella dettagliata per operazione nei seguenti modi:
- Un grafico a torta che mostra la frazione di tempo consumata dalle diverse categorie di operazioni HLO.
- Un grafico a torta che mostra la frazione di tempo consumata da diverse operazioni HLO individuali (troncate alle operazioni N principali, con le rimanenti classificate come "Altro" per migliorare la leggibilità).
- Un grafico a torta che mostra la frazione del tempo totale impiegato per le operazioni che fanno parte della rematerializzazione. XProf riceve queste informazioni dai metadati del compilatore associati al profilo.
- Un grafico a torta che mostra le categorie di operazioni HLO a cui si applica il tempo di rematerializzazione (se presente).
- Tempo impiegato per la compilazione esterna: la compilazione esterna è una funzionalità di TensorFlow che consente di eseguire in modo trasparente determinate operazioni all'interno di un calcolo XLA sulla CPU host anziché sul dispositivo di accelerazione (ad es. tf.summary o tf.print che richiedono l'accesso I/O che il dispositivo non possiede).
- Un grafico che traccia i GFLOPS/s per tutte le operazioni HLO, ordinate in base al tempo di esecuzione totale.
- Solo per le TPU, tempo per HLO per gruppo di repliche: un menu a discesa consente di scegliere tra le diverse operazioni collettive eseguite durante la sessione di profilatura. Potrebbero essere state eseguite diverse istanze dell'operazione collettiva tra gruppi di repliche diversi (ad es. AllGather); un grafico a torta mostra la distribuzione del tempo tra queste diverse istanze.
Dettagli della tabella delle statistiche delle operazioni HLO
Puoi fare clic su un'intestazione di colonna per ordinare la tabella delle statistiche sulle operazioni HLO. L'ordine predefinito si basa sul tempo di esecuzione totale dell'operazione (etichettato come "ranking" nella tabella).
La tabella include le seguenti informazioni per ogni operazione HLO:
- Nome operazione: il nome univoco assegnato all'operazione HLO dal compilatore XLA.
- ID programma: un identificatore per il modulo HLO a cui è associata questa operazione
- Categoria di operazioni HLO: sono in gran parte definite dal compilatore XLA.XProf impiega inoltre l'euristica per identificare e classificare determinate operazioni (ad es. le fusioni di convoluzioni).
- Testo dell'operazione HLO: fornito dal compilatore XLA e include dettagli come i tipi e le forme degli input/parametri.
- Nome op framework: l'operazione a livello di framework (ad es. JAX) che ha generato questa operazione HLO.
- Occorrenze: il numero totale di volte in cui questa specifica operazione HLO è stata eseguita durante il periodo di profilazione.
- Tempo totale (μs): il tempo cumulativo impiegato per eseguire questa operazione in tutte le sue occorrenze. Se questa operazione ha operazioni secondarie (ad es. all'interno di una fusione), questo tempo include il tempo trascorso in queste operazioni secondarie.
- Tempo medio (μs): il tempo medio per esecuzione di questa operazione HLO, incluso il tempo impiegato nelle operazioni secondarie, se presenti.
- Tempo di esecuzione totale (μs): il tempo cumulativo trascorso esclusivamente nel corpo di questa operazione HLO, escluso il tempo trascorso nelle operazioni secondarie.
- Tempo di esecuzione medio (μs): il tempo medio per esecuzione di questa operazione HLO, escluso il tempo impiegato nelle operazioni secondarie.
- Tempo di esecuzione totale (%): il tempo di esecuzione dell'operazione come percentuale del tempo totale sul dispositivo per tutte le operazioni.
- Tempo totale autonomo cumulativo (%): una somma corrente del tempo totale autonomo (%) per tutte le operazioni visualizzate in precedenza nell'ordine "ranking".
- Blocco DMA (%): la percentuale del tempo totale durante la quale l'operazione è stata bloccata a causa di operazioni di accesso diretto alla memoria (DMA).
- Consumo di larghezza di banda (utilizzo/sec) per FLOP, HBM e memorie TPU interne se disponibili (ad es. CMEM è presente solo su TPU v4). Questi valori vengono tutti calcolati utilizzando l'analisi dei costi statica del compilatore (numeratore) e il tempo di esecuzione sottoposto a profilatura (denominatore).
- Modello GFLOPS/s: il costo in GFLOP/s viene calcolato dal compilatore XLA e il tempo viene misurato dal profilo.
- GFLOPS/s normalizzati: normalizza i FLOP calcolati dal compilatore su base per operazione in base alla precisione numerica e ai FLOP di picco supportati dal dispositivo per precisioni diverse. Ad esempio, TPU v6e supporta il doppio di FLOP di picco in int8 rispetto a bf16; XProf esegue la normalizzazione in bf16 per impostazione predefinita.
- Larghezza di banda memoria: il numero di byte/s consumati dall'operazione da qualsiasi memoria (ad es. VMEM e HBM TPU on-chip). Il compilatore XLA fornisce il numero di "byte" e la durata viene misurata nel profilo.
- Larghezza di banda HBM: il numero di byte/s consumati specificamente dall'HBM.
- Intensità operativa: calcolata come il rapporto tra FLOPS per byte, come definito per l'analisi della linea di soglia.
- Limite di calcolo/memoria: in base al modello Roofline, questa colonna indica se il rendimento dell'operazione è limitato principalmente dalle funzionalità di calcolo o dalla larghezza di banda della memoria.
- Rematerializzazione: indica se l'operazione faceva parte di una rematerializzazione.
- Compilation esterna: indica se l'operazione è stata eseguita sulla CPU dell'host utilizzando la funzionalità di compilazione esterna di TensorFlow.
- Ottimizzata automaticamente: indica se l'operazione è stata ottimizzata automaticamente da XLA. Per ulteriori informazioni, consulta OTAutotuning e OTAutotuning.