Profilazione del modello con gli strumenti Cloud TPU
La profilazione ti consente di ottimizzare le prestazioni dell'addestramento del modello nelle Cloud TPU. Utilizzerai TensorBoard e il plug-in TensorBoard di Cloud TPU per profilare il tuo modello.
Per ulteriori informazioni sull'utilizzo di TensorBoard con uno dei framework supportati, consulta i seguenti documenti:
Prerequisiti per la profilazione di uno script di addestramento
Prima di utilizzare gli strumenti di profilazione TPU, devi:
Avvia una sessione di addestramento del modello
- Configura una TPU v4-8 per addestrare un modello. La procedura di profilazione descritta in questo documento utilizza un modello ResNet, ma puoi utilizzarne un altro, a condizione che venga addestrato su una TPU v4.
Nella VM TPU, aggiungi una riga per avviare il server Profiler nello script di addestramento.
Per l'addestramento ResNET, lo script di addestramento si trova all'indirizzo:
/usr/share/tpu/tensorflow/resnet50_keras/resnet50.py
.Inserisci le righe evidenziate in resnet50.py. Nella parte superiore del file, aggiungi la seguente importazione:
import tensorflow.compat.v2 as tf2
Subito prima che gli script inizino il ciclo di addestramento, aggiungi la riga evidenziata:
if name == 'main': tf.logging.set_verbosity(tf.logging.INFO) tf2.profiler.experimental.server.start(6000) app.run(main)
Il server del profiler TensorFlow si avvia sulla tua VM TPU quando esegui lo script.
Inizia l'addestramento del modello.
Esegui lo script di addestramento e attendi finché non viene visualizzato l'output che indica che l'addestramento del modello è attivo. L'output dipende dal codice e dal modello. Cerca l'output, ad esempio
Epoch 1/100
. In alternativa, puoi accedere alla pagina Cloud TPU nella console Google Cloud, selezionare la tua TPU e visualizzare il grafico di utilizzo della CPU. Il grafico di utilizzo della CPU non mostra l'utilizzo della TPU, ma è una buona indicazione che il modello sia in fase di addestramento.
Inizia a creare profilazione dell'addestramento del modello
Durante l'addestramento del modello, apri una finestra del terminale separata o Cloud Shell. Per iniziare a creare un profilo per l'addestramento del modello, procedi nel seguente modo.
Nella nuova finestra o shell, connettiti alla tua VM TPU con il port forwarding.
gcloud compute tpus tpu-vm ssh your-vm --zone=us-central2-b --ssh-flag="-4 -L 9001:localhost:9001"
Il port forwarding consente al browser locale di comunicare con il server TensorBoard in esecuzione sulla tua VM TPU.
Installa i requisiti di TensorFlow {: id="install-tensorboard"}.
La tua VM TPU ha TensorBoard installato per impostazione predefinita. Puoi anche installare TensorFlow manualmente. In ogni caso, potrebbero essere necessarie alcune dipendenze aggiuntive. Installa queste dipendenze sulla tua VM TPU eseguendo:
pip3 install -r /usr/share/tpu/models/official/requirements.txt
Installa il plug-in TensorBoard di Cloud TPU {: id="install-plugin"}.
Dalla VM TPU, esegui i comandi seguenti:
pip3 install --upgrade "cloud-tpu-profiler>=2.3.0" pip3 install tensorflow pip3 install tensorboard_plugin_profile
Avvia il server TensorBoard
Esegui TensorBoard e crea una directory di log (
logdir
) sulla VM TPU in cui TensorBoard può scrivere dati di profilazione. Specifica la directory dei log utilizzando il flag--logdir
. Ad esempio:mkdir log-directory TPU_LOAD_LIBRARY=0 tensorboard --logdir log-directory --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. Seleziona Profile (Profilo) dal menu a discesa in alto a destra della pagina TensorBoard. L'elenco di strumenti di profilazione disponibili è mostrato nel menu a discesa Strumenti nella barra laterale a sinistra.
Acquisisci un profilo sulle VM TPU
- Seleziona il pulsante CAPTURE PROFILE.
- Seleziona il pulsante di opzione Indirizzo IP.
- Digita HOSTNAME:6000 nel campo
Profile Service URL
. - Seleziona il pulsante Acquisisci.
Visualizzare i dati del profilo con TensorBoard
Dopo l'acquisizione di un profilo, TensorBoard visualizza la pagina overview_page. L'elenco degli strumenti di profilazione che puoi utilizzare viene visualizzato nel riquadro di sinistra.
Profilo
La scheda Profilo viene visualizzata dopo aver acquisito alcuni dati del modello. Potrebbe essere necessario fare clic sul pulsante di aggiornamento nella pagina TensorBoard. Una volta che i dati sono disponibili, facendo clic sulla scheda Profilo viene visualizzata una selezione di strumenti per l'analisi del rendimento. Puoi utilizzare uno qualsiasi dei seguenti strumenti per profilare il tuo modello.
- Pagina Panoramica
- Analizzatore di pipeline di input
- Profilo XLA Op
- Visualizzatore tracce (solo browser Chrome)
- Visualizzatore della memoria
Pagina di riepilogo del profilo
La pagina Panoramica (overview_page), disponibile nella pagina Profilo, offre una visualizzazione di primo livello del rendimento del modello durante un'acquisizione. La pagina mostra una panoramica aggregata di tutte le tue TPU e un'analisi complessiva della pipeline di input. Nel menu a discesa Host è presente un'opzione per selezionare le singole TPU.
La pagina mostra i dati nei seguenti riquadri:
Riepilogo del rendimento
- Utilizzo FLOPS: l'utilizzo percentuale delle unità della matrice TPU
Le prime dieci operazioni di TensorFlow su TPU Mostra le operazioni di TensorFlow che hanno consumato la maggior parte del tempo:
Ogni riga mostra il tempo autonomo di un'operazione (come percentuale del tempo impiegato da tutte le operazioni), il tempo cumulativo, la categoria, il nome e la frequenza FLOPS raggiunta.
Ambiente di esecuzione
- Il numero di host utilizzati
- Il tipo di TPU utilizzato
- Il numero di core TPU
Analizzatore pipeline di input
Lo strumento di analisi delle pipeline di input fornisce approfondimenti sui risultati delle prestazioni. Lo strumento mostra i risultati delle prestazioni del file input_pipeline.json
raccolti dallo strumento capture_tpu_profile.
Lo strumento ti informa immediatamente se il tuo programma è vincolato a un input e può guidarti nelle analisi lato dispositivo e lato host per eseguire il debug di qualsiasi fase della pipeline.
Consulta le indicazioni sul rendimento delle pipeline di input per insight più approfonditi sull'ottimizzazione delle prestazioni della pipeline.
Pipeline di input
Quando un programma TensorFlow legge i dati da un file, il processo di lettura è suddiviso in più fasi di elaborazione dei dati collegate in serie. L'output di una fase è l'input di quella successiva. Questo sistema di lettura è chiamato pipeline di input.
Una tipica pipeline per la lettura di record dai file prevede le seguenti fasi:
- Lettura di file
- Pre-elaborazione file (facoltativo)
- Trasferimento di file dal computer host al dispositivo
Una pipeline di input inefficiente può rallentare l'applicazione. Un'applicazione è considerata vincolata da un input quando trascorre una parte significativa del tempo nella sua pipeline di input. Utilizza l'Analizzatore pipeline di input per capire dove la pipeline di input non è efficiente.
Dashboard della pipeline di input
Per aprire l'analizzatore sintattico della pipeline di input, seleziona Profilo, quindi seleziona input_pipeline_analyzer dal menu a discesa Strumenti.
La dashboard mostra i dettagli dell'analisi lato dispositivo e lato host.
Analisi lato dispositivo: mostra i dettagli relativi ai tempi del passaggio del dispositivo.
- Statistiche Tempo di utilizzo del dispositivo
- % del tempo di passaggio del dispositivo in attesa dei dati di input
Analisi lato host
Questa sezione mostra i dettagli dell'analisi lato host suddivisi in diverse categorie:
- Memorizzazione in coda dei dati da trasferire sul dispositivo Tempo trascorso per inserire i dati in una coda in-feed prima di trasferirli al dispositivo.
- Pre-elaborazione dei dati Tempo impiegato per le operazioni di pre-elaborazione, ad esempio la decompressione delle immagini.
- Lettura anticipata dei dati dai file Tempo di lettura dei file, inclusi memorizzazione nella cache, precaricamento e interleaving.
- Lettura dei dati dai file on demand Tempo dedicato alla lettura dei dati dai file senza memorizzazione nella cache, precaricamento e interconnessione.
- Altre operazioni di lettura o trattamento dei dati Tempo impiegato per altre operazioni correlate all'input
che non utilizzano
tf.data
.
Per visualizzare le statistiche relative alle singole operazioni di input e alle relative categorie suddivise per tempo di esecuzione, espandi la sezione Show Input Op statistics
.
Viene visualizzata una tabella di dati di origine come la seguente:
Ogni voce della tabella contiene le seguenti informazioni:
- Input Op mostra il nome dell'operazione di input di TensorFlow.
- Conteggio mostra il numero totale di istanze dell'operazione eseguita durante il periodo di profilazione.
- Tempo totale (in ms) mostra la somma cumulativa del tempo trascorso su ciascuna delle istanze dell'operazione.
- %tempo totale mostra il tempo totale trascorso in un'operazione come frazione del tempo totale trascorso nell'elaborazione dell'input.
- Auto-tempo totale (in ms) mostra il tempo accumulato
in tutte le istanze della funzione. Il tempo autonomo misura il tempo trascorso all'interno del corpo della funzione, escludendo il tempo trascorso in qualsiasi funzione che chiama.
Ad esempio, il
Iterator::PaddedBatch::Filter::ForeverRepeat::Map
è chiamato daIterator::PaddedBatch::Filter
, pertanto il suo tempo personale totale viene escluso dal tempo totale totale di quest'ultimo. - %tempo totale self-service mostra il tempo autonomo totale come frazione del tempo totale trascorso nell'elaborazione dell'input.
- Categoria mostra la categoria di elaborazione dell'operazione di input.
Profilo op
Il profilo operativo è uno strumento Cloud TPU che mostra le statistiche sulle prestazioni delle operazioni XLA eseguite durante un periodo di profilazione. Il profilo operativo mostra:
- In che misura la tua applicazione utilizza Cloud TPU come percentuale di tempo trascorso sulle operazioni per categoria e utilizzo di FLOPS di TPU.
- Le operazioni più lunghe. Queste operazioni sono potenziali obiettivi di ottimizzazione.
- Dettagli di singole operazioni, tra cui forma, spaziatura interna ed espressioni che utilizzano l'operazione.
Puoi utilizzare il profilo operativo per trovare i target per l'ottimizzazione. Ad esempio, puoi utilizzare il profilo operazioni per identificare le operazioni XLA che richiedono più tempo per l'esecuzione e il numero di FLOPS TPU utilizzati.
Utilizzo del profilo operativo
Durante la raccolta del profilo, capture_tpu_profile
crea anche un file op_profile.json
contenente statistiche sulle prestazioni delle operazioni XLA.
Puoi visualizzare i dati di op_profile in TensorBoard facendo clic sulla scheda Profilo nella parte superiore dello schermo e selezionando op_profile dal menu a discesa Strumenti. Vedrai uno schermo come questo:
- Sezione Panoramica mostra l'utilizzo di Cloud TPU e fornisce suggerimenti per l'ottimizzazione.
- Pannello di controllo contiene i controlli che ti consentono di impostare il numero di operazioni visualizzate nella tabella, quali operazioni vengono visualizzate e come sono ordinate.
- Tabella delle operazioni: una tabella che elenca le principali categorie di operazioni di TensorFlow associate alle operazioni XLA. Queste operazioni sono ordinate in base alla percentuale di utilizzo di Cloud TPU.
- Schede dei dettagli dell'operazione: mostrano i dettagli delle operazioni che vengono visualizzate quando posizioni il mouse su un'operazione nella tabella. Questi dettagli includono l'utilizzo di FLOPS, l'espressione in cui viene utilizzata l'operazione e il layout dell'operazione (fit).
Tabella XLA Op
La tabella delle operazioni elenca le categorie delle operazioni XLA in ordine decrescente, dalla percentuale più alta all'utilizzo di Cloud TPU. La tabella mostra la percentuale di tempo impiegato, il nome della categoria dell'operazione, il nome dell'operazione TensorFlow associato e la percentuale di utilizzo FLOPS per la categoria. Per visualizzare (o nascondere) le dieci operazioni XLA che richiedono più tempo per una categoria, fai clic sul triangolo accanto al nome della categoria nella tabella.
- Tempo mostra la percentuale totale del tempo trascorso da tutte le operazioni in quella categoria. Puoi fare clic per espandere la voce e vedere la suddivisione del tempo per ogni singola operazione.
- Primi dieci operazioni: l'opzione di attivazione/disattivazione accanto al nome di una categoria mostra/nasconde le prime dieci operazioni che richiedono molto tempo. Se una voce di operazione di fusione è visualizzata nell'elenco delle operazioni, puoi espanderla per vedere le operazioni non di fusione e di elementi al suo interno.
- TensorFlow Op mostra il nome dell'operazione di TensorFlow associato all'operazione XLA.
- FLOPS mostra l'utilizzo di FLOPS, che indica il numero misurato di FLOPS espresso come percentuale del FLOPS di picco di Cloud TPU. Maggiore è la percentuale di utilizzo FLOPS, più rapidamente vengono eseguite le operazioni. La cella della tabella è codificata per colore: verde per un elevato utilizzo FLOPS (buono) e rosso per un basso utilizzo FLOPS (cattivo).
Schede dettagli operazione
Quando selezioni la voce di una tabella, viene visualizzata una scheda con i dettagli dell'operazione della XLA o della categoria dell'operazione. Una scheda tipica ha il seguente aspetto:
- Nome e Categoria mostrano il nome dell'operazione e la categoria XLA evidenziati.
- Utilizzo FLOPS Mostra l'utilizzo dei FLOPS come percentuale del totale di FLOPS.
- Espressionismo mostra l'espressione XLA contenente l'operazione.
- Utilizzo della memoria: mostra la percentuale di utilizzo della memoria di picco del tuo programma.
- Layout (solo operazioni di convoluzione) mostra la forma e il layout di un tensore, compresa una descrizione di eventuali spaziatura interna eseguita dal compilatore XLA.
Interpretazione dei risultati
Per le operazioni di convoluzione, un basso utilizzo di FLOPS TPU può essere dovuto a uno o entrambi i seguenti motivi:
- spaziatura interna (le unità della matrice sono parzialmente utilizzate)
- un'operazione di convoluzione legata alla memoria
Questa sezione fornisce un'interpretazione di alcune metriche di rendimento di un modello con basso utilizzo di FLOP. In questo esempio, la fusione di output e la convolution hanno dominato il tempo di esecuzione. Erano presenti molte operazioni scalari o vettoriali che avevano un basso utilizzo di FLOP.
Una strategia di ottimizzazione per questo tipo di profilo consiste nel trasformare le operazioni vettoriali o scalari in operazioni di convoluzione.
Nel seguente esempio, %convolution.399 mostra un FLOPS e un utilizzo della memoria inferiori rispetto a %convolution.340 nell'esempio precedente.
In questo esempio, la dimensione del batch viene aggiunta a 128 e la dimensione delle funzionalità a 8. In questo caso, solo il 5% delle unità a matrice viene utilizzato in modo efficace. L'utilizzo viene calcolato tramite (((batch_time * num_of_features) / padding_size ) / num_of_cores). Confronta i FLOPS in questo esempio con la %convolution.340 nell'esempio precedente, che non utilizza alcuna spaziatura interna.
Visualizzatore tracce
Trace visualizzatore è uno strumento di analisi delle prestazioni di Cloud TPU disponibile nella pagina Profilo. Lo strumento utilizza il visualizzatore di profilazione degli eventi di traccia di Chrome, quindi funziona solo nel browser Chrome.
Il visualizzatore traccia mostra 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 feed, che preelaborano i dati di addestramento e li trasferisce alla TPU, mentre la TPU esegue l'addestramento del modello effettivo.
Ti consente di identificare i problemi di prestazioni nel modello, quindi di adottare misure per risolverli. Ad esempio, a livello generale, puoi identificare se l'addestramento in-feed o di modello richiede la maggior parte del tempo. Visualizzando in dettaglio, puoi identificare quali operazioni TensorFlow richiedono più tempo di esecuzione.
Il visualizzatore tracce è limitato a un milione di eventi per ogni Cloud TPU. Se devi valutare più eventi, utilizza invece il visualizzatore di tracce di streaming.
Interfaccia visualizzatore Trace
Per aprire il visualizzatore tracce, vai su TensorBoard, fai clic sulla scheda Profilo nella parte superiore dello schermo e scegli trace_viewer dal menu a discesa Strumenti. Viene visualizzato lo spettatore contenente la tua esecuzione più recente:
Questa schermata contiene i seguenti elementi principali (contrassegnati da numeri nello screenshot precedente):
- Menu a discesa Esecuzioni contiene tutte le esecuzioni per le quali hai acquisito informazioni di traccia. La visualizzazione predefinita è l'esecuzione più recente, ma puoi aprire il menu a discesa per selezionare un'esecuzione diversa.
- Menu a discesa Strumenti seleziona diversi strumenti di profilazione.
- Menu a discesa Host seleziona un host contenente un insieme Cloud TPU.
- Riquadro della sequenza temporale mostra le operazioni eseguite da Cloud TPU e dalla macchina host nel tempo.
- Riquadro Dettagli: mostra ulteriori informazioni per le operazioni selezionate nel riquadro Spostamenti.
Osserva più da vicino il riquadro della sequenza temporale:
Il riquadro Spostamenti contiene i seguenti elementi:
- Barra superiore Contiene vari controlli ausiliari.
- Asse temporale: mostra il tempo relativo all'inizio della traccia.
- Etichette di sezione e tracce Ogni sezione contiene più tracce e presenta un triangolo a sinistra su cui puoi fare clic per espandere e comprimere la sezione. Esiste una sola sezione per ogni elemento di elaborazione nel sistema.
- Selettore strumenti contiene vari strumenti per interagire con il visualizzatore tracce.
- Eventi mostra il periodo di tempo durante il quale è stata eseguita un'operazione o la durata dei meta-eventi, ad esempio i passaggi di addestramento.
- Barra delle schede verticale Questa barra non ha uno scopo utile per Cloud TPU. La barra fa parte dello strumento di visualizzazione generale della traccia tracciato fornito da Chrome utilizzato per varie attività di analisi delle prestazioni.
Sezioni e tracce
Il visualizzatore di tracce contiene le seguenti sezioni:
- Una sezione per ogni nodo TPU, etichettata con il numero del chip TPU e del nodo TPU all'interno del chip (ad esempio, "Chip 2: TPU Core 1"). Ogni sezione del nodo TPU contiene le tracce seguenti:
- Passaggio mostra la durata dei passaggi di addestramento eseguiti sulla TPU.
- TensorFlow Ops mostra le operazioni TensorFlow eseguite sulla TPU.
- Ops XLA mostra le operazioni XLA eseguite su TPU. Ogni operazione viene tradotta in una o più operazioni XLA. Il compilatore XLA traduce le operazioni XLA in codice che viene eseguito sulla TPU.
- Una sezione per i thread in esecuzione sulla CPU host,denominata "Thread host". La sezione contiene una traccia per ogni thread di CPU. Nota: puoi ignorare le informazioni visualizzate accanto alle etichette della sezione.
Selettore dello strumento Cronologia
Puoi interagire con la visualizzazione della sequenza temporale utilizzando il selettore degli strumenti della sequenza temporale in TensorBoard. Puoi fare clic su uno strumento della sequenza temporale oppure utilizzare le seguenti scorciatoie da tastiera per attivare ed evidenziare uno strumento. Per spostare il selettore dello strumento Cronologia, fai clic nell'area tratteggiata in alto, quindi trascina il selettore nella posizione che preferisci.
Utilizza gli strumenti di sequenza temporale come segue:
Strumento di selezione fai clic su un evento per selezionarlo o trascinalo per selezionarne più di uno. Nel riquadro dei dettagli verranno visualizzate ulteriori informazioni sull'evento o sugli eventi selezionati (nome, ora di inizio e durata). |
|
Strumento Panoramica Trascina per eseguire una panoramica orizzontale e verticale della panoramica temporale. |
|
Strumento Zoom Trascina verso l'alto per aumentare lo zoom o trascina verso il basso per diminuire lo zoom lungo l'asse orizzontale (tempo). La posizione orizzontale del cursore determina il centro intorno al quale viene effettuato lo zoom. Nota: se lo strumento zoom rimane attivo dopo aver rilasciato il pulsante del mouse, fai clic sulla visualizzazione della sequenza temporale per disattivarlo. |
|
Strumento cronologico Trascina in orizzontale per contrassegnare un intervallo di tempo. La durata dell'intervallo viene visualizzata sull'asse del tempo. Per regolare l'intervallo, trascinane le estremità. Per cancellare l'intervallo, fai clic su un punto qualsiasi della visualizzazione della sequenza temporale. Se selezioni un altro strumento, l'intervallo rimane contrassegnato. |
Visualizzatore della memoria
Il visualizzatore di memoria ti consente di visualizzare i picchi di utilizzo della memoria e le tendenze di utilizzo della memoria per il tuo programma.
L'interfaccia utente del visualizzatore di memoria ha il seguente aspetto:
- Menu a discesa Host seleziona un modulo TPU e un host XLA di alto livello (HLO) da visualizzare.
- Panoramica della memoria: mostra i picchi di allocazione e le dimensioni della memoria senza spaziatura interna.
- Grafico dell'area di lavoro che mostra il picco di utilizzo della memoria e un grafico delle tendenze di utilizzo della memoria per il tuo programma. Posiziona il buffer in uno dei grafici buffer per visualizzare informazioni aggiuntive nella scheda di allocazione del buffer.
- Grafici a buffer: due grafici che mostrano l'allocazione del buffer all'utilizzo massimo della memoria. Posiziona il buffer in uno dei grafici buffer per visualizzare informazioni aggiuntive nella scheda dei dettagli del buffer.
- Scheda dei dettagli dell'allocazione del buffer Mostra i dettagli dell'allocazione per un buffer.
Riquadro Panoramica della memoria
Il riquadro Panoramica della memoria (in alto) mostra il nome del modulo e l'allocazione di memoria massima impostata quando le dimensioni totali di allocazione del buffer raggiungono il valore massimo. Viene mostrata anche la dimensione senza restrizioni di allocazione del picco.
Grafico dell'area di lavoro
Questo grafico mostra l'utilizzo massimo della memoria e un grafico delle tendenze di utilizzo della memoria per il tuo programma. La linea verticale indica il picco di utilizzo della memoria per il programma. Questo grafico mostra se il tuo programma può rientrare nello spazio di memoria globale disponibile.
Ogni punto nel grafico rappresenta un "punto di programma" nel programma XLA HLO. La riga mostra come cambia l'utilizzo della memoria del programma nel tempo.
Interazione con gli elementi del grafico del buffer
Quando punti su un buffer nei grafici buffer, nel grafico dell'area di lavoro viene visualizzata una linea orizzontale che mostra la durata del buffer.
Lo spessore della linea orizzontale indica l'entità relativa della dimensione del buffer rispetto all'allocazione della memoria di picco. La lunghezza della riga indica la durata del buffer.
Grafici a buffer
Due grafici mostrano la suddivisione dell'utilizzo della memoria nel picco di utilizzo.
Per programma mostra i buffer da sinistra a destra nell'ordine in cui erano attivi durante l'esecuzione del programma.
Per dimensione. Visualizza i buffer attivi durante l'esecuzione del programma in ordine decrescente.
Scheda dettagli allocazione buffer
Quando posizioni il puntatore del mouse su un grafico buffer, viene visualizzata una scheda dei dettagli di allocazione del buffer. Una scheda dei dettagli tipica ha il seguente aspetto:
- Nome: nome dell'operazione XLA.
- Categoria: la categoria dell'operazione.
- Dimensioni: la dimensione dell'allocazione del buffer (inclusa la spaziatura interna).
- Dimensioni senza padding: le dimensioni dell'allocazione del buffer senza spaziatura interna.
- Espansione: l'entità relativa della dimensione del buffer imbottito rispetto alla dimensione non imbottita.
- Memoria aggiuntiva: indica la quantità di memoria extra utilizzata per la spaziatura interna.
- Forma: descrive il ranking, le dimensioni e il tipo di dati dell'array N-dimensionale.
- Nome op TensorFlow: mostra il nome dell'operazione di TensorFlow associata all'allocazione del buffer.
- Tipo di allocazione: indica la categoria di allocazione del buffer: parametro, output, locale in thread e temporaneo (ad esempio, allocazione del buffer all'interno di una fusione).
Errori di memoria esaurita
Se esegui un modello e ricevi un messaggio di errore "esaurimento della memoria", utilizza questo comando per acquisire un profilo di memoria. Prima di avviare il profiler, attendi che lo script esegua l'addestramento del modello. Puoi specificare la durata del runtime del profiler utilizzando il flag duration_ms
. L'output può aiutarti a capire la causa dell'errore:
(vm)$ capture_tpu_profile --tpu=$TPU_NAME --logdir=log-directory --duration_ms=60000