Profila il modello sui nodi Cloud TPU

La profilazione del modello consente di ottimizzare le prestazioni di addestramento sulle Cloud TPU. Per profilare il modello, utilizzi TensorBoard e plug-in TensorBoard di Cloud TPU. Per installazione vedi Istruzioni per l'installazione di TensorBoard.

Per ulteriori informazioni sull'utilizzo di TensorBoard con uno dei framework supportati, consulta i seguenti documenti:

Prerequisiti

TensorBoard è installato come parte di TensorFlow. TensorFlow è installato dei nodi Cloud TPU. Puoi anche installare TensorFlow manualmente. In ogni caso, potrebbero essere necessarie alcune dipendenze aggiuntive. Installa tramite in esecuzione:

(vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt

Installa il plug-in TensorBoard per Cloud TPU

Accedi tramite SSH al nodo TPU:

$ gcloud compute ssh your-vm --zone=your-zone

Esegui questi comandi:

  pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
  pip3 install --user --upgrade -U "tensorboard>=2.3"
  pip3 install --user --upgrade -U "tensorflow>=2.3"

Acquisizione di un profilo

Puoi acquisire un profilo utilizzando l'interfaccia utente di TensorBoard o in modo programmatico.

Acquisire un profilo utilizzando TensorBoard

All'avvio di TensorBoard, viene avviato un server web. Quando apri il browser all'URL TensorBoard, viene visualizzata una pagina web. La pagina web ti consente di acquisire manualmente un profilo e visualizzarne i dati.

Avvia il server TensorFlow Profiler

tf.profiler.experimental.server.start(6000)

Il server TensorFlow Profiler viene avviato sulla VM TPU.

Inizia il tuo script di addestramento

Esegui lo script di addestramento e attendi finché non viene visualizzato un output che indica che il modello è in fase di addestramento attivo. L'aspetto dipende dal codice e dal modello. Cerca simile a Epoch 1/100. In alternativa, puoi accedere alla pagina di Cloud TPU Nella console Google Cloud, seleziona la tua TPU e visualizza il grafico di utilizzo della CPU. Mentre non viene mostrato l'utilizzo della TPU, ma è un buon indicatore del fatto che durante l'addestramento del modello.

Avvia il server TensorBoard

Apri una nuova finestra del terminale e accedi tramite SSH alla VM TPU con il port forwarding. Questo consente al browser locale di comunicare con il server TensorBoard in esecuzione della VM TPU.

 gcloud compute tpus execution-groups ssh your-vm --zone=us-central1-a --ssh-flag="-4 -L 9001:localhost:9001"
 

Esegui TensorBoard nella finestra del terminale appena aperta e specifica la directory in cui TensorBoard può scrivere dati di profilazione con il flag --logdir. Ad esempio:

TPU_LOAD_LIBRARY=0 tensorboard --logdir your-model-dir --port 9001

TensorBoard avvia un server web e visualizza il relativo URL:

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.3.0 at http://localhost:9001/ (Press CTRL+C to quit)

Apri un browser web e vai all'URL visualizzato nell'output di TensorBoard. Marca Assicurati che TensorBoard abbia caricato completamente i dati di profilazione facendo clic sul pulsante di ricarica nell'angolo in alto a destra della pagina TensorBoard. Per impostazione predefinita, Nella pagina TensorBoard viene visualizzata la scheda Scalari selezionata.

immagine

Acquisisci un profilo sui nodi TPU

  1. Seleziona PROFILO dal menu a discesa nella parte superiore dello schermo
  2. Seleziona il pulsante ACQUISTA PROFILO
  3. Seleziona il pulsante di opzione TPU Name (Nome TPU)
  4. Digita il nome della tua TPU
  5. Seleziona il pulsante CAPTURE.

Acquisisci un profilo in modo programmatico

Il modo in cui acquisisci in modo programmatico un profilo dipende dal framework ML che stai che utilizzano.

Se utilizzi TensorFlow, puoi avviare e arrestare il profiler utilizzando tf.profiler.experimental.start() e tf.profiler.experimental.stop() rispettivamente. Per ulteriori informazioni, consulta la Guida alle prestazioni di TensorFlow.

Se usi JAX, usa jax.profiler.start_trace() e jax.profiler.stop_trace() per avviare e arrestare il profiler. Per ulteriori informazioni, consulta la sezione Profilazione dei programmi JAX.

Problemi comuni del profilo di acquisizione

A volte, quando cerchi di acquisire una traccia, potresti visualizzare messaggi come seguenti:

No trace event is collected after xx attempt(s). Perhaps, you want to try again
(with more attempts?).Tip: increase number of attempts with --num_tracing_attempts.
Failed to capture profile: empty trace result

Questo può accadere se la TPU non sta eseguendo attivamente calcoli, viene il passo sta richiedendo troppo tempo o per altri motivi. Se vedi questo messaggio, prova a procedere nel seguente modo:

  • Prova ad acquisire un profilo dopo che sono state eseguite alcune epoche.
  • Prova ad aumentare la durata della profilazione nel profilo di acquisizione di TensorBoard . È possibile che una fase di addestramento stia richiedendo troppo tempo.
  • Assicurati che la VM e la TPU abbiano la stessa versione TF.

Visualizza i dati del profilo con TensorBoard

La scheda Profilo viene visualizzata dopo aver acquisito alcuni dati del modello. Tu potrebbe essere necessario fare clic sul pulsante Ricarica nell'angolo in alto a destra della pagina TensorBoard. Una volta che i dati sono disponibili, fai clic sulla scheda Profilo presenta una selezione di strumenti utili per l'analisi del rendimento:

Visualizzatore Trace

Il visualizzatore Trace è uno strumento di analisi delle prestazioni di Cloud TPU disponibile in Profilo. Lo strumento utilizza il visualizzatore di profilazione degli eventi di traccia di Chrome in modo che funzioni solo nel browser Chrome.

Nel visualizzatore Trace viene mostrata una sequenza temporale che mostra:

  • Durate delle operazioni eseguite dal modello TensorFlow .
  • Quale parte del sistema (TPU o macchina host) ha eseguito un'operazione. In genere, la macchina host esegue operazioni di Infeed, che vengono pre-elaborate i dati di addestramento e li trasferisce alla TPU, mentre la TPU esegue durante l'addestramento del modello.

Il visualizzatore Trace consente di identificare i problemi di prestazioni del modello, adottare le misure necessarie per risolverli. Ad esempio, a livello generale, puoi identificare se l'addestramento del modello o il feed in-feed richiede la maggior parte del tempo. Trivellazione puoi identificare le operazioni TensorFlow che richiedono più tempo eseguire il deployment.

Tieni presente che il visualizzatore tracce è limitato a 1 milione di eventi per Cloud TPU. Se è necessario valutare più eventi, usa il visualizzatore di tracce di flusso .

Interfaccia del visualizzatore Trace

Per aprire il visualizzatore tracce, vai a TensorBoard e fai clic sulla scheda Profilo nella parte superiore dello schermo e scegli trace_viewer dal menu a discesa Strumenti. La viene visualizzato il visualizzatore della tua esecuzione più recente:

immagine

Questa schermata contiene i seguenti elementi principali (contrassegnati da numeri sopra):

  1. Menu a discesa Esecuzioni: Contiene tutte le esecuzioni per le quali hai le informazioni di traccia acquisite. La visualizzazione predefinita è la più recente ma puoi aprire il menu a discesa per selezionarne un'altra.
  2. Menu a discesa Strumenti. Seleziona strumenti di profilazione diversi.
  3. Menu a discesa Host. Seleziona un host che contiene una Cloud TPU per iniziare.
  4. Riquadro della sequenza temporale. Mostra le operazioni eseguite da Cloud TPU e eseguita nel tempo.
  5. Riquadro dei dettagli. Mostra informazioni aggiuntive per le operazioni selezionato nel riquadro della sequenza Timeline.

Di seguito è riportata una panoramica più approfondita del riquadro della sequenza temporale:

immagine

Il riquadro Cronologia contiene i seguenti elementi:

  1. Barra superiore. Contiene vari controlli ausiliari.
  2. Asse temporale. Mostra l'ora relativa all'inizio della traccia.
  3. Etichette delle sezioni e delle tracce. Ogni sezione contiene più tracce e presenta un triangolo a sinistra su cui puoi fare clic per espandere e comprimere la . Esiste una sezione per ogni elemento di elaborazione del sistema.
  4. Selettore strumenti. Contiene vari strumenti per interagire con visualizzatore tracce.
  5. Eventi. che mostrano l'orario durante il quale è stata eseguita un'operazione la durata dei meta-eventi, come le fasi di addestramento.
  6. Barra delle schede verticale. Non ha uno scopo utile per Cloud TPU. La barra fa parte dello strumento di visualizzazione di tracce per uso generico fornito da Chrome che viene utilizzato per varie attività di analisi delle prestazioni.

Sezioni e canali

Il visualizzatore Trace contiene le seguenti sezioni:

  • Una sezione per ogni nodo TPU, etichettata con il numero del chip TPU e il nodo TPU all'interno del chip (ad esempio, "Chip 2: TPU Core 1"). Ciascuna La sezione del nodo TPU contiene i seguenti canali:
    • Passaggio. Mostra la durata dei passaggi di addestramento in esecuzione sulla TPU.
    • TensorFlow Ops. Mostra le operazioni di TensorFlow eseguite sulla TPU.
    • XLA Ops. Mostra XLA le operazioni eseguite sulla TPU. Ogni operazione viene tradotta in una o più operazioni XLA. Il compilatore XLA traduce le operazioni XLA nel codice eseguito sulla TPU.)
  • Una sezione per i thread in esecuzione sulla CPU della macchina host, con l'etichetta "Thread host". La sezione contiene una traccia per ogni CPU . Nota: puoi ignorare le informazioni visualizzate accanto alla sezione etichette.

Selettore strumento Timeline

Puoi interagire con la visualizzazione cronologica utilizzando il selettore dello strumento della sequenza temporale in TensorBoard. Puoi fare clic su uno strumento della sequenza temporale o utilizzare scorciatoie da tastiera per attivare ed evidenziare uno strumento. Per spostare il selettore dello strumento della sequenza temporale, fai clic nell'area tratteggiata in alto e poi trascina il selettore dove vuoi.

Utilizza gli strumenti per la cronologia come segue:

Strumento di selezione
Fai clic su un evento per selezionarlo o trascina per selezionare più eventi. Ulteriori informazioni sull'evento o sugli eventi selezionati (nome, ora di inizio, e la durata) verranno visualizzate nel riquadro dei dettagli.

Strumento Panoramica
Trascina per eseguire la panoramica della visualizzazione cronologica orizzontalmente e verticalmente.

Strumento Zoom
Trascina verso l'alto per aumentare lo zoom o verso il basso per diminuire lo zoom lungo l'orizzontale (tempo) . La posizione orizzontale del cursore del mouse determina il centro intorno di cui viene eseguito lo zoom.

Nota: lo strumento Zoom presenta un bug noto per cui lo zoom rimane attivo. se rilasci il pulsante del mouse mentre il cursore del mouse si trova fuori dalla sequenza temporale vista. Se ti succede, fai clic brevemente sulla visualizzazione della cronologia per interrompere eseguire lo zoom.

Strumento di monitoraggio
Trascina in orizzontale per contrassegnare un intervallo di tempo. La lunghezza dell'intervallo visualizzato sull'asse del tempo. Per regolare l'intervallo, trascinane le estremità. Per cancellare il valore fai clic in un punto qualsiasi della visualizzazione cronologica.

Tieni presente che l'intervallo rimane contrassegnato se selezioni uno degli altri strumenti.

Grafici

TensorBoard fornisce una serie di visualizzazioni, o grafici, del modello e le sue prestazioni. Utilizza i grafici insieme al visualizzatore tracce o Visualizzatore di tracce di flusso per ottimizzare i modelli e migliorare le prestazioni su Cloud TPU.

Grafico del modello

Il framework di modellazione può generare automaticamente dal modello. I dati per il grafico sono memorizzati in MODEL_DIR all'interno del bucket di archiviazione specificato con il parametro --logdir . Puoi visualizzare questo grafico senza eseguire capture_tpu_profile.

Per visualizzare il grafico di un modello, seleziona la scheda Grafici in TensorBoard.

immagine

Un singolo nodo nel grafico della struttura rappresenta una singola operazione.

Grafico sulla compatibilità delle TPU

La scheda Grafici include un modulo di verifica della compatibilità, verifica e mostra le operazioni che possono causare problemi quando un modello viene vengono eseguiti tutti i test delle unità.

Per visualizzare un grafico sulla compatibilità con TPU di un modello, seleziona la scheda Grafici TensorBoard, quindi seleziona l'opzione Compatibilità TPU. Il grafico presenta le operazioni compatibili (valide) in verde e quelle incompatibili (non valide) le operazioni in rosso.

immagine

Un determinato nodo può visualizzare entrambi i colori, ciascuno sotto forma di percentuale Operazioni di compatibilità di Cloud TPU per il nodo in questione. Consulta Interpretazione dei risultati di compatibilità per un esempio.

Il riquadro di riepilogo della compatibilità visualizzato a destra del grafico mostra percentuale di tutte le operazioni compatibili con Cloud TPU, i relativi attributi e un elenco di operazioni incompatibili per un nodo selezionato.

Fai clic su un'operazione del grafico per visualizzarne gli attributi nel riepilogo dal riquadro.

immagine

Tieni presente che il controllo di compatibilità non valuta le operazioni che vengono esplicitamente assegnato a un dispositivo non TPU tramite il posizionamento manuale del dispositivo. Inoltre, il controllo non compila il modello per l'esecuzione, quindi assicurati di interpretare i risultati come una stima di compatibilità.

Interpretazione dei risultati di compatibilità

Profilo

La scheda Profilo viene visualizzata dopo aver acquisito alcuni dati del modello. Tu potrebbe essere necessario fare clic sul pulsante Ricarica nell'angolo in alto a destra della pagina TensorBoard. Una volta che i dati sono disponibili, fai clic sulla scheda Profilo presenta una selezione di strumenti utili per l'analisi del rendimento:

Pagina Panoramica del profilo

La pagina Panoramica (overview_page), disponibile in Profilo, fornisce una visualizzazione generale delle prestazioni del modello durante l'esecuzione di un'acquisizione. La pagina mostra una pagina di panoramica aggregata per tutte le TPU, nonché una panoramica l'analisi della pipeline di input. C'è un'opzione per selezionare singole TPU nel menu a discesa Host.

La pagina mostra i dati nei seguenti riquadri:

immagine

  • Riepilogo del rendimento

    • Tempo medio passo: il tempo del passo calcolato in media su tutti i passaggi campionati
    • Tempo di inattività dell'host: la percentuale di tempo di inattività dell'host
    • Tempo di inattività della TPU: la percentuale di tempo di inattività della TPU
    • Utilizzo FLOPS: l'utilizzo percentuale delle unità della matrice TPU
    • Utilizzo larghezza di banda memoria - La percentuale di larghezza di banda di memoria utilizzata
  • Grafico passo-tempo. Visualizza un grafico del tempo di passo del dispositivo (in millisecondi) in tutti i passaggi campionati. L'area blu corrisponde alla parte le TPU erano inattive e attendono i dati di input dall'host. L'area rossa mostra per quanto tempo Cloud TPU è funziona davvero.

  • Le 10 principali operazioni di TensorFlow su TPU. Visualizza le operazioni TensorFlow che hanno consumato più tempo:

    Ogni riga visualizza il tempo autonomo di un'operazione (come percentuale di tempo impiegato per tutte le operazioni), tempo cumulativo, categoria, nome e percentuale di FLOPS ottenuti.

  • Ambiente di esecuzione

    • Numero di host utilizzati
    • Tipo di TPU utilizzato
    • Numero di core TPU
    • Dimensione del batch di addestramento
  • Consiglio per i passaggi successivi. Segnala quando viene inserito un modello e ogni volta che si verificano problemi con Cloud TPU. Suggerimenti strumenti utilizzabili per individuare i colli di bottiglia nelle prestazioni.

Analizzatore pipeline di input

Lo strumento di analisi della pipeline di input fornisce insight sui risultati delle prestazioni. La mostra i risultati sul rendimento del file input_pipeline.json raccolto dallo strumento capture_tpu_profile.

Lo strumento indica immediatamente se il programma è vincolato all'input e può percorrere l'analisi lato host e dispositivo per eseguire il debug di qualsiasi fase che creano colli di bottiglia.

Leggi le indicazioni su prestazioni della pipeline di input per insight più approfonditi su come ottimizzare le prestazioni della pipeline.

Pipeline di input

Quando un programma TensorFlow legge i dati da un file, inizia nella parte superiore del Grafico TensorFlow in modalità pipeline. Il processo di lettura è suddiviso in più fasi di elaborazione dei dati collegate in serie, in cui l'output di è l'input di quello successivo. Questo sistema di lettura è chiamato pipeline di input.

Una pipeline tipica per la lettura dei record dai file prevede le seguenti fasi:

  1. Lettura di file
  2. Pre-elaborazione dei file (facoltativa)
  3. Trasferimento di file dalla macchina host al dispositivo

Una pipeline di input inefficiente può rallentare gravemente l'applicazione. Un l'applicazione è considerata limitata all'input quando spende una parte significativa di tempo nella sua pipeline di input. Usare lo strumento di analisi della pipeline di input per comprendere in cui la pipeline di input è inefficiente.

Dashboard pipeline di input

Per aprire lo strumento di analisi della pipeline di input, seleziona Profilo, poi seleziona input_pipeline_analyzer dal menu a discesa Strumenti.

La dashboard contiene tre sezioni:

immagine

  1. Riepilogo. Riassume l'intera pipeline di input con informazioni sull'eventuale limitazione dell'input dell'applicazione e, in tal caso, in base a come molto.
  2. Analisi lato dispositivo. Mostra dettagli lato dispositivo risultati dell'analisi, tra cui il tempo di percorrenza del dispositivo e l'intervallo tempo trascorso in attesa di dati di input tra i core in ogni passaggio.
  3. Analisi lato host. Mostra un'analisi dettagliata lato host, inclusa un'analisi dettagliata del tempo di elaborazione dell'input sull'host.
Riepilogo pipeline di input

La prima sezione indica se il programma è vincolato all'input presentando la percentuale di Tempo sul dispositivo trascorso in attesa di input dall'host. Se utilizzi un pipeline di input standard che è stata strumentata, lo strumento segnala le del tempo di elaborazione dell'input. Ad esempio:

immagine

Analisi lato dispositivo

La seconda sezione descrive in dettaglio l'analisi lato dispositivo, fornendo approfondimenti in tempo trascorso sul dispositivo rispetto all'host e tempo trascorso sul dispositivo in attesa di dati di input dall'host.

immagine

  1. Statistiche relative al tempo di passaggio dei dispositivi. Indica la media, la deviazione standard e intervallo (minimo, massimo) di tempo di passo del dispositivo.
  2. Tempo passo. Visualizza un grafico del tempo di passo del dispositivo (in millisecondi) in tutti i passaggi campionati. L'area blu corrisponde alla parte del passaggio Tempo di inattività delle Cloud TPU in attesa di dati di input dall'host. L'area rossa mostra per quanto tempo Cloud TPU è stato effettivamente funziona.
  3. Percentuale di tempo di attesa per i dati di input. Registra la media, deviazione standard e l'intervallo (minimo, massimo) della frazione tempo trascorso su un dispositivo in attesa dei dati di input normalizzati sul totale tempo di passi tra il dispositivo.
  4. Intervallo di tempo del dispositivo tra i core trascorso in attesa dei dati di input, per numero del passaggio. Mostra un grafico a linee che mostra la quantità di tempo del dispositivo (espresso come percentuale del tempo totale di passi del dispositivo) trascorso in attesa dell'input l'elaborazione dei dati. La frazione di tempo speso varia da core a core, quindi anche l'intervallo di frazioni di ciascun nucleo viene tracciato per ogni passaggio. Poiché il tempo trascorso da un passo è determinato dal core più lento, l'intervallo il più piccolo possibile.
Analisi lato host

La sezione 3 mostra i dettagli dell'analisi lato host, con i report sull'input (il tempo impiegato per le operazioni dell'API Dataset) nella suddiviso in diverse categorie:

  • accodamento dei dati da trasferire sul dispositivo Tempo trascorso nell'inserimento dei dati in una in coda prima di trasferire i dati al dispositivo.
  • Pre-elaborazione dei dati. Tempo dedicato alle operazioni di pre-elaborazione, ad esempio le operazioni di decompressione.
  • Lettura in anticipo dei dati dei file. Il tempo dedicato alla lettura dei file, tra cui: la memorizzazione nella cache, il precaricamento e l'interleaving.
  • Lettura di dati dai file on demand. Tempo dedicato alla lettura dati da file senza memorizzazione nella cache, precaricamento e interfoliazione.
  • Altre letture o elaborazioni dei dati. Tempo trascorso su altre operazioni correlate agli input non utilizza tf.data.

immagine

Per visualizzare le statistiche per singole operazioni di input e relative categorie suddivisa per tempo di esecuzione, espandi la sezione "Mostra statistiche operazioni di input" .

Viene visualizzata una tabella di dati di origine come la seguente:

immagine

Ogni voce della tabella contiene le seguenti informazioni:

  1. Opzione ingresso. Mostra il nome dell'operazione TensorFlow dell'operazione di input.
  2. Numero. Mostra il numero totale di istanze dell'operazione eseguita durante il periodo di profilazione.
  3. Tempo totale (in ms). Mostra la somma cumulativa del tempo trascorso su ciascun di Compute Engine.
  4. %di tempo totale. Mostra il tempo totale trascorso su un'operazione come frazione di il tempo totale trascorso nell'elaborazione degli input.
  5. Tempo di auto totale (in ms). Mostra la somma cumulativa del tempo personale speso su ciascuna di queste istanze. Il tempo autonomo misura il tempo trascorso all'interno del corpo della funzione, escluso il tempo speso nella funzione chiamata. Ad esempio, Iterator::PaddedBatch::Filter::ForeverRepeat::Map è chiamata da Iterator::PaddedBatch::Filter, pertanto il suo totale il tempo autonomo è escluso dal tempo totale di quest'ultimo.
  6. %tempo totale autonomo. Mostra il tempo autonomo totale come frazione del totale tempo dedicato all'elaborazione degli input.
  7. Categoria. Mostra la categoria di elaborazione dell'operazione di input.

Profilo operativo

Il profilo operativo è uno strumento Cloud TPU che mostra le prestazioni statistiche delle operazioni XLA eseguite durante un periodo di profilazione. Il profilo operativo mostra:

  • L'efficacia con cui l'applicazione utilizza la Cloud TPU come percentuale Tempo dedicato alle operazioni per categoria e all'utilizzo dei FLOPS delle TPU.
  • Le operazioni che richiedono più tempo. Queste operazioni sono potenziali bersagli per l'ottimizzazione.
  • Dettagli di singole operazioni, tra cui forma, spaziatura interna ed espressioni che utilizzano l'operazione.

Puoi utilizzare il profilo operativo per trovare buoni target per l'ottimizzazione. Ad esempio, se il modello raggiunge solo il 5% dei FLOPS di picco della TPU, puoi utilizzare lo strumento identificare le operazioni XLA che richiedono più tempo per essere eseguite da quanti FLOPS TPU consumano.

Utilizzo del profilo operativo

Durante la raccolta del profilo, capture_tpu_profile crea anche un file op_profile.json contenente le statistiche sulle prestazioni delle operazioni XLA.

Puoi visualizzare i dati di op_profile in TensorBoard facendo clic sull'icona Scheda Profilo nella parte superiore dello schermo e seleziona op_profile da dal menu a discesa Strumenti. Verrà visualizzata una schermata simile alla seguente:

immagine

  1. Sezione Panoramica. Mostra l'utilizzo di Cloud TPU e fornisce suggerimenti per l'ottimizzazione.
  2. Pannello di controllo. Contiene controlli che ti consentono di impostare il numero operazioni visualizzate nella tabella, quali operazioni sono visualizzate e come vengono ordinati.
  3. Tabella operativa: Tabella che elenca le principali operazioni TensorFlow associate alle operazioni XLA. Queste operazioni sono ordinate per percentuale di utilizzo di Cloud TPU.
  4. Schede dei dettagli dell'operazione: Dettagli sull'operazione visualizzata quando passi il mouse sopra un'operazione nella tabella. Questi includono l'utilizzo di FLOPS, l'espressione in cui viene utilizzata l'operazione e il layout dell'operazione (fit).
Tabella operative XLA

Nella tabella Opzionale sono elencate le categorie di operazioni XLA, ordinate dalla più alta alla più bassa. percentuale di utilizzo di Cloud TPU. All'inizio, la tabella mostra percentuale di tempo impiegato, nome della categoria operativa, operazione TensorFlow associata e la percentuale di utilizzo FLOPS per la categoria. Per visualizzare (o nascondi) le 10 operazioni XLA che richiedono più tempo per una categoria, fai clic triangolo accanto al nome della categoria nella tabella.

immagine

  1. Ora. Mostra la percentuale totale di tempo trascorso da tutte le operazioni in quella categoria. Puoi fare clic per espandere la voce e visualizzare analisi dettagliata del tempo trascorso da ogni singola operazione.
  2. Le 10 operazioni principali. Il pulsante di attivazione/disattivazione accanto al nome di una categoria mostra/nasconde la parte superiore 10 operazioni dispendiose in termini di tempo all'interno della categoria. Se un'operazione di fusione viene visualizzata nell'elenco delle operazioni, puoi espanderla per visualizzare e non fusion, con gli elementi che contiene.
  3. TensorFlow Op. Mostra il nome dell'operazione TensorFlow associato all'elemento Operazione XLA.
  4. FLOPS. Mostra l'utilizzo FLOPS, ovvero il numero misurato di FLOPS espressi come percentuale dei FLOPS dei picchi di Cloud TPU. Maggiore è la percentuale di utilizzo FLOPS, più rapide sono le operazioni. La cella della tabella è codificata per colore: verde per un elevato utilizzo di FLOPS (valido) e rosso per un basso utilizzo di FLOPS (non valido).
Schede dei dettagli dell'operazione

Quando selezioni una voce, sulla sinistra viene visualizzata una scheda che mostra i dettagli sull'operazione XLA o sulla categoria delle operazioni. Una tipica carta ha il seguente aspetto: questo:

immagine

  • Nome e Categoria. Mostra il nome e la categoria dell'operazione XLA evidenziati.
  • Utilizzo FLOPS. Visualizza l'utilizzo dei FLOPS come percentuale del totale. I FLOPS sono possibili.
  • Espressione. Mostra l'XLA espressione contenente l'operazione.
  • Utilizzo della memoria. Visualizza la percentuale di utilizzo di memoria di picco da parte del tuo .
  • Layout (solo operazioni di convoluzione). Mostra la forma e il layout di un tensore, tra cui se la forma del tensore è adatta esattamente alle unità della matrice e come la matrice è riempita.
Interpretazione dei risultati

Per le operazioni di convoluzione, l'utilizzo dei FLOPS della TPU può essere ridotto a causa di uno per entrambi i seguenti motivi:

  • spaziatura interna (le unità della matrice sono parzialmente utilizzate)
  • l'operazione di convoluzione è legata alla memoria

Questa sezione fornisce un'interpretazione di alcuni numeri di un modello diverso in quali FLOP erano bassi. In questo esempio, output fusion e convolution i tempi di esecuzione e c'era una lunga coda o scalari con FLOPS molto bassi.

Una strategia di ottimizzazione per questo tipo di profilo è la trasformazione le operazioni vettoriali o scalari alle operazioni di convoluzione.

Nell'esempio seguente, %convolution.399 mostra FLOPS e rispetto a %convolution.340 nell'esempio precedente.

immagine

Esamina il layout e nota che la dimensione del batch 16 è stata riempita a 128 e la dimensione delle caratteristiche 3 viene riempita a 8, il che indica che solo il 5% della matrice utilizzate in modo efficace. (Il calcolo per questa istanza della funzione l'utilizzo è (((batch_time * num_of_features) / padding_size ) / num_of_cores). Confrontare i FLOPS di questo esempio con %convolution.340 dell'esempio precedente esempio che si adatta esattamente alla matrice.

Visualizzatore pod

Lo strumento Visualizzatore pod fornisce visualizzazioni delle prestazioni per ogni core in un pod e visualizza lo stato dei canali di comunicazione in un pod. Il visualizzatore di pod può identificare ed evidenziare potenziali colli di bottiglia e le aree che necessitano di ottimizzazione. Lo strumento funziona per i pod completi e tutte le versioni 2 e v3.

Per visualizzare lo strumento Visualizzatore pod:

  1. Seleziona Profilo dal pulsante del menu in alto a destra della nella finestra TensorBoard.
  2. Fai clic sul menu Strumenti a sinistra della finestra e seleziona pod_viewer.

L'interfaccia utente del visualizzatore pod include:

  1. Un dispositivo di scorrimento dei passaggi, che consente di selezionare il passaggio da eseguire esaminare.
  2. Un grafico della topologia, che mostra in modo interattivo i core TPU nel l'intero sistema TPU.
  3. Un grafico dei link di comunicazione, che mostra l'invio e la ricezione (recv) nel grafico della topologia.
  4. Grafico a barre della latenza dei canali di invio e ricezione. Passare il mouse sopra una barra in questo grafico attiva i link di comunicazione link alle comunicazioni. Viene visualizzata una scheda con i dettagli del canale barra di sinistra, che fornisce informazioni dettagliate sul canale, come dimensioni dei dati trasferiti, latenza e larghezza di banda.
  5. Un grafico di analisi dei passaggi, che mostra un'analisi dettagliata di un passaggio per tutti e un set di dati. Può essere usato per tenere traccia dei colli di bottiglia del sistema se un determinato core sta rallentando il sistema.

immagine

Cursore dei passi

Utilizza il cursore per selezionare un passaggio. Il resto dello strumento mostra come la suddivisione dei passaggi e i link di comunicazione, per quel passaggio.

Grafico della topologia

Il grafico della topologia è organizzato in modo gerarchico per host, chip e core. La i rettangoli più piccoli sono core TPU. Due core insieme indicano un chip TPU e quattro chip indicano un host.

immagine

Il grafico della topologia è anche una mappa termica, codificato per colore in base alla percentuale di tempo suddivisione particolare (ad esempio, computing flop elevato, infeed, invio e così via). nel passaggio selezionato. La barra appena sotto il grafico della topologia (mostrato nell'immagine seguente) mostra una codifica a colori per l'utilizzo di core e chip. Il colore dei core mostra l'utilizzo che va dal giallo al blu. Per il calcolo con flop alti, i numeri più grandi (colore più scuro) indicano più tempo per il calcolo. Per tutte le altre suddivisioni, numeri più piccoli (colori più chiari) indicano tempi di attesa minori. Le aree problematiche, o hotspot, sono indicato quando un core è più scuro degli altri.

Fai clic sul selettore del menu a discesa accanto al nome del sistema (cerchiato nel diagramma) per scegliere il tipo specifico di suddivisione da esaminare.

Passa il mouse sopra uno dei piccoli rettangoli (singoli core) per visualizzare un suggerimento tecnico che mostra la posizione del core nel sistema, le sue l'ID chip e il nome host. La descrizione tecnica include anche la durata categoria di suddivisione selezionata, ad esempio Alti flop e relative di utilizzo rispetto al passo.

immagine

Canali di comunicazione

Questo strumento consente di visualizzare i link di invio e ricezione se il modello utilizza in modo che possano comunicare tra i core. Se il modello contiene i comandi e ricevute, puoi utilizzare un selettore ID canale per selezionare un ID canale. Un link dal core di origine (src) e dal core di destinazione (dst), rappresenta canale di comunicazione. Viene visualizzato sul grafico della topologia passando il mouse sopra passa il mouse sopra le barre del grafico che mostrano la latenza di invio e ricezione canali.

immagine

Nella barra di sinistra viene visualizzata una scheda con ulteriori dettagli sul canale di comunicazione. Una tipica scheda ha il seguente aspetto:

immagine

  1. Data Transfered (Dati trasferiti), che mostra i dati trasferiti tra le richieste di invio e ricezione canale in memibyte (MiB).
  2. Latenza, che mostra la durata, in microsecondi, dall'inizio della l'evento di invio alla fine dell'evento recv-done.
  3. BW, che mostra la quantità di dati trasferiti, in gibibiti (GiB), dal core di origine a quello di destinazione nel tempo.
  4. Send Delay (Ritardo di invio), che indica la durata dall'inizio del recv-done all'inizio dell'invio in microsecondi. Se l'operazione di recupero inizia dopo l'inizio dell'operazione di invio, il ritardo è pari a zero.
  5. Hlo names (Nomi Hlo), che mostra i nomi hlo ops XLA associati a questo canale. Questi nomi HLO sono associati alle statistiche visualizzate in altri strumenti TensorBoard, come op_profile e memory_viewer.

Grafico con suddivisione dei passaggi

Questo grafico fornisce dettagli per ogni passaggio di addestramento o valutazione.

L'asse x è l'ID del chip globale, mentre l'asse y è il tempo in microsecondi. Da questo grafico puoi vedere dove il tempo viene utilizzato in un determinato addestramento passaggio, dove sono presenti i colli di bottiglia e se è presente uno squilibrio del carico tutti i chip.

immagine

Nella barra di sinistra viene visualizzata una scheda con ulteriori dettagli sul la suddivisione dei passaggi. Una tipica scheda ha il seguente aspetto:

immagine

I campi della scheda specificano quanto segue:

  1. Computing elevato di flop, che è il tempo impiegato nella convoluzione o nel processo di output. operazioni di fusione.
  2. Calcolo basso flop, calcolato deducendo tutte le altre le suddivisioni della durata totale.
  3. Infeed, ovvero il tempo di attesa della TPU l'organizzatore.
  4. Outfeed, ovvero il tempo che l'host attende. come output dalla TPU.
  5. Sincronizzazione AllReduce, ovvero la porzione di tempo dedicata Operazioni CrossReplicaSum in attesa di essere sincronizzato con gli altri core. Le operazioni CrossReplicaSum calcolano la somma tra le repliche.
  6. AllReduce Compute, ovvero il tempo di calcolo effettivo speso Operazioni CrossReplicaSum.
  7. Operazioni di invio chip to chip, ovvero il tempo impiegato per le operazioni di invio.
  8. Operazioni di chip per chip completate, ovvero il tempo impiegato per le operazioni di recupero.

Visualizzatore Trace

Il visualizzatore Trace è uno strumento di analisi delle prestazioni di Cloud TPU disponibile in Profilo. Lo strumento utilizza il visualizzatore di profilazione degli eventi di traccia di Chrome in modo che funzioni solo nel browser Chrome.

Nel visualizzatore Trace viene mostrata una sequenza temporale che mostra:

  • Durate delle operazioni eseguite dal modello TensorFlow .
  • Quale parte del sistema (TPU o macchina host) ha eseguito un'operazione. In genere, la macchina host esegue operazioni di Infeed, che vengono pre-elaborate i dati di addestramento e li trasferisce alla TPU, mentre la TPU esegue durante l'addestramento del modello.

Il visualizzatore Trace consente di identificare i problemi di prestazioni del modello, adottare le misure necessarie per risolverli. Ad esempio, a livello generale, puoi identificare se l'addestramento del modello o il feed in-feed richiede la maggior parte del tempo. Trivellazione puoi identificare le operazioni TensorFlow che richiedono più tempo eseguire il deployment.

Tieni presente che il visualizzatore tracce è limitato a 1 milione di eventi per Cloud TPU. Se è necessario valutare più eventi, usa il visualizzatore di tracce di flusso .

Interfaccia del visualizzatore Trace

Per aprire il visualizzatore tracce, vai a TensorBoard e fai clic sulla scheda Profilo nella parte superiore dello schermo e scegli trace_viewer dal menu a discesa Strumenti. La viene visualizzato il visualizzatore della tua esecuzione più recente:

immagine

Questa schermata contiene i seguenti elementi principali (contrassegnati da numeri sopra):

  1. Menu a discesa Esecuzioni: Contiene tutte le esecuzioni per le quali hai le informazioni di traccia acquisite. La visualizzazione predefinita è la più recente ma puoi aprire il menu a discesa per selezionarne un'altra.
  2. Menu a discesa Strumenti. Seleziona strumenti di profilazione diversi.
  3. Menu a discesa Host. Seleziona un host che contiene una Cloud TPU per iniziare.
  4. Riquadro della sequenza temporale. Mostra le operazioni eseguite da Cloud TPU e eseguita nel tempo.
  5. Riquadro dei dettagli. Mostra informazioni aggiuntive per le operazioni selezionato nel riquadro della sequenza Timeline.

Di seguito è riportata una panoramica più approfondita del riquadro della sequenza temporale:

immagine

Il riquadro Cronologia contiene i seguenti elementi:

  1. Barra superiore. Contiene vari controlli ausiliari.
  2. Asse temporale. Mostra l'ora relativa all'inizio della traccia.
  3. Etichette delle sezioni e delle tracce. Ogni sezione contiene più tracce e presenta un triangolo a sinistra su cui puoi fare clic per espandere e comprimere la . Esiste una sezione per ogni elemento di elaborazione del sistema.
  4. Selettore strumenti. Contiene vari strumenti per interagire con visualizzatore tracce.
  5. Eventi. che mostrano l'orario durante il quale è stata eseguita un'operazione la durata dei meta-eventi, come le fasi di addestramento.
  6. Barra delle schede verticale. Non ha uno scopo utile per Cloud TPU. La barra fa parte dello strumento di visualizzazione di tracce per uso generico fornito da Chrome che viene utilizzato per varie attività di analisi delle prestazioni.
Sezioni e canali

Il visualizzatore Trace contiene le seguenti sezioni:

  • Una sezione per ogni nodo TPU, etichettata con il numero del chip TPU e il nodo TPU all'interno del chip (ad esempio, "Chip 2: TPU Core 1"). Ciascuna La sezione del nodo TPU contiene i seguenti canali:
    • Passaggio. Mostra la durata dei passaggi di addestramento in esecuzione sulla TPU.
    • TensorFlow Ops. Mostra le operazioni di TensorFlow eseguite sulla TPU.
    • XLA Ops. Mostra XLA le operazioni eseguite sulla TPU. Ogni operazione viene tradotta in una o più operazioni XLA. Il compilatore XLA traduce le operazioni XLA nel codice eseguito sulla TPU.)
  • Una sezione per i thread in esecuzione sulla CPU della macchina host, con l'etichetta "Thread host". La sezione contiene una traccia per ogni CPU . Nota: puoi ignorare le informazioni visualizzate accanto alla sezione etichette.
Selettore strumento Timeline

Puoi interagire con la visualizzazione cronologica utilizzando il selettore dello strumento della sequenza temporale in TensorBoard. Puoi fare clic su uno strumento della sequenza temporale o utilizzare scorciatoie da tastiera per attivare ed evidenziare uno strumento. Per spostare il selettore dello strumento della sequenza temporale, fai clic nell'area tratteggiata in alto e poi trascina il selettore dove vuoi.

Utilizza gli strumenti per la cronologia come segue:

Strumento di selezione
Fai clic su un evento per selezionarlo o trascina per selezionare più eventi. Ulteriori informazioni sull'evento o sugli eventi selezionati (nome, ora di inizio, e la durata) verranno visualizzate nel riquadro dei dettagli.

Strumento Panoramica
Trascina per eseguire la panoramica della visualizzazione cronologica orizzontalmente e verticalmente.

Strumento Zoom
Trascina verso l'alto per aumentare lo zoom o verso il basso per diminuire lo zoom lungo l'orizzontale (tempo) . La posizione orizzontale del cursore del mouse determina il centro intorno di cui viene eseguito lo zoom.

Nota: lo strumento Zoom presenta un bug noto per cui lo zoom rimane attivo. se rilasci il pulsante del mouse mentre il cursore del mouse si trova fuori dalla sequenza temporale vista. Se ti succede, fai clic brevemente sulla visualizzazione della cronologia per interrompere eseguire lo zoom.

Strumento di monitoraggio
Trascina in orizzontale per contrassegnare un intervallo di tempo. La lunghezza dell'intervallo visualizzato sull'asse del tempo. Per regolare l'intervallo, trascinane le estremità. Per cancellare il valore fai clic in un punto qualsiasi della visualizzazione cronologica.

Tieni presente che l'intervallo rimane contrassegnato se selezioni uno degli altri strumenti.
Eventi

Gli eventi nella sequenza temporale vengono visualizzati in colori diversi; i colori non hanno un significato specifico.

Barra superiore Timeline

La barra superiore del riquadro della sequenza Timeline contiene diversi controlli ausiliari:

immagine

  1. Visualizzazione dei metadati. Non utilizzato per le TPU.
  2. Opzioni di visualizzazione. Non utilizzato per le TPU.
  3. Casella di ricerca. Inserisci il testo per cercare tutti gli eventi il cui nome contiene testo. Fai clic sui pulsanti freccia a destra della casella di ricerca per spostarti avanti e indietro tra gli eventi corrispondenti, selezionando ciascun evento in girare.
  4. Pulsante Console. Non utilizzato per le TPU.
  5. Pulsante Guida. Fai clic per visualizzare un riepilogo della guida.
Scorciatoie da tastiera

Di seguito sono riportate le scorciatoie da tastiera che puoi utilizzare nel visualizzatore delle tracce. Fai clic sulla guida (?) nella barra superiore per visualizzare altre scorciatoie da tastiera.

    w Zoom in
    s Zoom out
    a Pan left
    d Pan right
    f Zoom to selected event(s)
    m Mark time interval for selected event(s)
    1 Activate selection tool
    2 Activate pan tool
    3 Activate zoom tool
    4 Activate timing tool

La scorciatoia f può essere molto utile. Prova a selezionare un passaggio e a premere F per aumentare rapidamente lo zoom.

Eventi caratteristici

Di seguito sono riportati alcuni tipi di eventi che possono essere molto utili durante l'analisi Prestazioni TPU.

immagine

  • InfeedDequeueTuple. Questa operazione TensorFlow viene eseguita su una TPU riceve dati di input dall'host. Quando l'alimentazione richiede molto tempo nel tempo, le operazioni TensorFlow che pre-elaborano i dati sulla macchina host non riescono a stare al passo con la velocità di consumo dei dati TPU. Puoi vedere gli eventi corrispondenti nelle tracce host chiamate InfeedEnqueueTuple. Per visualizzare un'analisi più dettagliata della pipeline di input, Utilizza lo strumento Strumento di analisi pipeline di input.

  • CrossReplicaSum. Questa operazione TensorFlow viene eseguita su una TPU e calcola una somma tra le repliche. Poiché ogni replica corrisponde a una TPU diversa, l'operazione deve attendere il completamento di tutti i nodi TPU con un passaggio. Se questa operazione richiede molto tempo, potrebbe non significare che l'operazione di somma è lenta, ma che un nodo TPU è in attesa di un altro nodo TPU con un infeed di dati lento.

immagine

  • Operazioni del set di dati. Il visualizzatore Trace mostra le operazioni del set di dati eseguite quando I dati vengono caricati utilizzando l'API Dataset. Iterator::Filter::Batch::ForeverRepeat::Memory nell'esempio è compilata e corrisponde all'operazione dataset.map() . Utilizza le funzionalità di visualizzatore tracce per esaminare le operazioni di caricamento durante il debug e la mitigazione dei colli di bottiglia della pipeline di input.

immagine

  • Precarica i thread. L'uso di dataset.prefetch() per il buffering dei dati di input può evitare rallentamenti sporadici nell'accesso ai file che creano colli di bottiglia nel una pipeline di input.
Cosa può andare storto

Di seguito sono riportati alcuni potenziali problemi da tenere presenti quando utilizzi il visualizzatore tracce:

  • Limite di visualizzazione degli eventi. Visualizzatore di Trace che mostra al massimo 1 milione eventi. Se hai acquisito più eventi, solo il primo milione di eventi viene visualizzati; e quelli successivi vengono eliminati. Per acquisire più eventi TPU, puoi usa il flag --include_dataset_ops=False per richiedere esplicitamente capture_tpu_profile per escludere le operazioni del set di dati.
  • Eventi molto lunghi. Eventi che iniziano prima dell'inizio di un'acquisizione o che terminano al termine di un'acquisizione non sono visibili nel visualizzatore tracce. Di conseguenza, per gli eventi molto lunghi.
  • Quando avviare l'acquisizione della traccia. Assicurati di iniziare l'acquisizione della traccia che la Cloud TPU è in esecuzione. Se inizi prima di allora, potrebbe vedere solo pochi eventi o nessun evento nel visualizzatore tracce. Puoi aumentare la durata del profilo utilizzando la --duration_ms bandiera e puoi impostare nuovi tentativi automatici con il flag --num_tracing_attempts . Ad esempio:

      (vm)$ capture_tpu_profile --tpu=$TPU_NAME
        --logdir=${MODEL_DIR} --duration_ms=60000 --num_tracing_attempts=10
        

Visualizzatore memoria

Il visualizzatore della memoria ti consente di visualizzare il picco di utilizzo della memoria per il tuo programma, e le tendenze di utilizzo della memoria nel corso del ciclo di vita del programma.

L'interfaccia utente del visualizzatore della memoria ha questo aspetto:

immagine

  1. Menu a discesa host. Seleziona per un host TPU e un ottimizzatore di alto livello XLA (HLO) da visualizzare.
  2. Panoramica della memoria. Visualizza l'allocazione e le dimensioni massime della memoria senza spaziatura interna.
  3. Grafico dello spazio di lavoro. Visualizza il picco di utilizzo della memoria e un grafico dell'utilizzo della memoria. le tendenze nel corso dell'intero ciclo di vita del programma. Passare il mouse sopra un buffer in uno dei buffer aggiunge un'annotazione per la durata del buffer e la scheda dei dettagli del buffer.
  4. Grafici buffer. Due grafici che mostrano l'allocazione del buffer nel punto di picco di utilizzo della memoria, come indicato dalla linea verticale nello spazio di lavoro trama. Se passi il mouse sopra un buffer in uno dei grafici buffer, barra dell'intera durata nel grafico dell'area di lavoro e una scheda dei dettagli a sinistra.
  5. Scheda dei dettagli sull'allocazione del buffer. Visualizza i dettagli di allocazione per un buffer.
Riquadro panoramica memoria

Il riquadro della panoramica della memoria (in alto) mostra il nome del modulo e il picco di memoria impostata quando la dimensione totale di allocazione del buffer raggiunge il valore massimo. La per il confronto viene mostrata anche la dimensione di allocazione dei picchi senza padding.

immagine

Grafico dello spazio di lavoro

Questo grafico mostra il picco di utilizzo della memoria e un grafico delle tendenze di utilizzo della memoria l'intera durata del programma. La linea tracciata dall'alto verso il basso del grafico indica di utilizzo massimo della memoria per il programma. Questo punto determina se un può rientrare nello spazio di memoria globale disponibile.

immagine

Ogni punto sul grafico a linee sovrapposta rappresenta un "punto di programma" negli XLA programma HLO pianificato dal compilatore. La linea dà l'idea dei picchi di utilizzo durante il picco di utilizzo.

Interazione con gli elementi del grafico buffer

Quando passi il mouse sopra un buffer visualizzato in uno dei grafici buffer sotto la del grafico dell'area di lavoro, nel grafico viene visualizzata una linea orizzontale della durata del buffer grafico dell'area di lavoro. La linea orizzontale è dello stesso colore della evidenziato nel buffer.

immagine

Lo spessore della linea orizzontale indica la grandezza relativa del buffer rispetto all'allocazione del picco di memoria. La lunghezza della linea corrisponde durata del buffer, a partire dal punto del programma in cui lo spazio del buffer è stato allocato e termina dove lo spazio è stato liberato.

Grafici buffer

Due grafici mostrano l'analisi dettagliata dell'utilizzo della memoria nel punto di utilizzo di picco (indicata dalla linea verticale nel grafico sopra i grafici).

immagine

  • Sull'ordine del programma. Visualizza i buffer da sinistra a destra nell'ordine in che erano attivi durante l'esecuzione del programma. Buffer attivi per più tempo sono sul lato sinistro del grafico.

  • Per dimensione. Visualizza i buffer attivi durante l'esecuzione del programma in ordine decrescente delle dimensioni. Buffer che hanno avuto il maggiore impatto in quel momento di picco di utilizzo della memoria sono a sinistra.

Scheda dei dettagli dell'allocazione del buffer

Quando passi il mouse sopra un buffer visualizzato in uno dei grafici buffer, viene visualizzato appare la scheda dei dettagli dell'allocazione (oltre alla riga relativa alla durata visualizzata in il grafico funzionante). Una tipica scheda dei dettagli ha il seguente aspetto:

immagine

  1. Nome. Nome dell'operazione XLA.
  2. Categoria. Categoria dell'operazione.
  3. Dimensioni. Dimensione dell'allocazione del buffer (inclusa la spaziatura interna).
  4. Dimensioni non imbottite. Dimensione dell'allocazione del buffer senza spaziatura interna.
  5. Espansione. Grandezza relativa della dimensione del buffer riempito rispetto a quello non riempito dimensioni.
  6. Memoria aggiuntiva. Indica la quantità di memoria in più utilizzata per la spaziatura interna.
  7. Forma. Descrive il rango, la dimensione e il tipo di dati di un modello n-dimensionale un array di dati.
  8. Nome operazione TensorFlow. Mostra il nome dell'operazione TensorFlow associata con l'allocazione del buffer.
  9. Tipo di allocazione. Indica la categoria di allocazione del buffer. I tipi sono: Parametro, Output, Thread-local e Temporaneo (ad esempio, buffer all'interno di una fusione).
"Memoria insufficiente" errori

Se esegui un modello e ricevi un "errore di memoria insufficiente", utilizza il seguente comando per acquisire un profilo di memoria e visualizzarlo nel visualizzatore della memoria. Assicurati di impostare durata_ms appropriata in modo che il periodo di profilazione si sovrapponga al programma. la data e l'ora della compilazione. L'output può aiutarti a capire la causa dell'errore:

  (vm)$ capture_tpu_profile --tpu=$TPU_NAME --logdir=${MODEL_DIR} --duration_ms=60000
  

Visualizzatore tracce flussi di dati

Il visualizzatore tracce di flusso (trace_viewer) è una Cloud TPU di analisi del rendimento, disponibile per TensorFlow 2.17.0 o versioni successive, che fornisce traccia dinamica i rendering degli annunci. Lo strumento utilizza il visualizzatore di profilazione degli eventi di traccia di Chrome quindi funziona solo nel browser Chrome.

Quando usi capture_tpu_profile per acquisire un profilo, un file .tracetable viene salvato nel tuo spazio di archiviazione Google Cloud di sincronizzare la directory di una VM con un bucket. Il file contiene un numero elevato di eventi traccia che possono essere visualizzati sia nel visualizzatore traccia che nel visualizzatore delle tracce in streaming.

Utilizzo del visualizzatore tracce streaming

Per utilizzare il visualizzatore della traccia di streaming, trace_viewer, devi arrestare il sessione TensorBoard esistente, quindi riavvia TensorBoard utilizzando l'indirizzo IP della TPU che vuoi esaminare. Il visualizzatore tracce di flussi di dati richiede TensorBoard per effettuare una chiamata di procedura remota Google (GRPC) a un indirizzo IP per con Cloud TPU. Il canale GRPC non è criptato.

Puoi trovare l'indirizzo IP di un host di Cloud TPU nella Pagina Cloud TPU. Trova il tuo Cloud TPU e cerca nella colonna IP interno per l'indirizzo IP.

Nella VM, esegui TensorBoard come segue sostituendo tpu-ip con il tuo Indirizzo IP della TPU:

  (vm)$ tensorboard --logdir=${MODEL_DIR} \
    --master_tpu_unsecure_channel=tpu-ip

Lo strumento TensorBoard viene visualizzato nell'elenco a discesa Strumenti.

immagine

Nella sequenza temporale puoi aumentare e diminuire lo zoom per vedere il caricamento dinamico degli eventi della traccia. nel browser.

immagine

Monitoraggio del job Cloud TPU

In questa sezione viene descritto come utilizzare capture_tpu_profile per acquisire un un singolo profilo o monitorare continuamente il job Cloud TPU a interfaccia a riga di comando in tempo reale. Se imposti --monitoring_level l'opzione 0 (valore predefinito), 1 o 2, ottenere rispettivamente un singolo profilo, un monitoraggio di base o un monitoraggio dettagliato.

Apri un nuovo Cloud Shell e accedi tramite SSH alla VM (sostituisci vm-name nel comando con il nome della tua VM):

  (vm)$ gcloud compute ssh vm-name \
  --ssh-flag=-L6006:localhost:6006

Nel nuovo Cloud Shell, esegui capture_tpu_profile con Flag --monitoring_level impostato su 1 o 2, ad esempio:

  (vm)$ capture_tpu_profile --tpu=$TPU_NAME \
   --monitoring_level=1

L'impostazione di monitoring_level=1 produce un output simile al seguente:

    TPU type: TPU v2
    Utilization of TPU Matrix Units is (higher is better): 10.7%

L'impostazione monitoring_level=2 mostra informazioni più dettagliate:

    TPU type: TPU v2
    Number of TPU Cores: 8
    TPU idle time (lower is better): 0.091%
    Utilization of TPU Matrix Units is (higher is better): 10.7%
    Step time: 1.95 kms (avg), 1.90kms (minute), 2.00 kms (max)
    Infeed percentage: 87.5% (avg). 87.2% (min), 87.8 (max)

Flag di monitoraggio

  • --tpu (obbligatorio) specifica il nome della Cloud TPU che che vuoi monitorare.
  • --monitoring_level. Modifica il comportamento di capture_tpu_profile da creando un singolo profilo, al monitoraggio continuo di base o dettagliato. Sono disponibili tre livelli: Livello 0 (valore predefinito): genera un singolo profilo, quindi esce. Livello 1: mostra la versione di TPU e l'utilizzo di TPU. Livello 2: mostra l'utilizzo di TPU, il tempo di inattività della TPU e il numero di core TPU in uso. Fornisce anche i tempi di passaggio minimo, medio e massimo insieme all'annuncio infeed percentuale.
  • --duration_ms (facoltativo, il valore predefinito è 1000 ms) specifica per quanto tempo profila l'host TPU durante ogni ciclo. In genere, deve essere lungo sufficiente per acquisire dati per almeno un passaggio di addestramento. 1 secondo acquisisce un passaggio di addestramento nella maggior parte dei modelli, ma se il tempo molto grande, puoi impostare il valore su 2x step_time(in ms).
  • --num_queries specifica il numero di cicli da eseguire capture_tpu_profile. Per monitorare continuamente il job TPU, imposta il valore su un numero alto. Per controllare rapidamente il tempo passo del modello, imposta il valore su un numero basso.