Profilazione del modello con gli strumenti Cloud TPU

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

Installa TensorBoard

TensorBoard è installato per impostazione predefinita nelle VM Cloud TPU come parte di TensorFlow. Puoi anche installare TensorFlow manualmente. In entrambi i casi, potrebbero essere necessarie alcune dipendenze aggiuntive. Installale eseguendo questo comando:

pip3 install -r /usr/share/tpu/models/official/requirements.txt

Installa il plug-in TensorBoard di Cloud TPU

Accedi alla VM TPU tramite SSH:

   $ gcloud alpha compute tpus tpu-vm ssh your-vm --zone=your-zone
   

Esegui anche i seguenti 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"

Avvia il server TensorFlow Profiler

Aggiungi il seguente codice allo script prima di avviare il ciclo di addestramento.

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

Questo avvia il server del profiler TensorFlow sulla VM TPU.

Inizia lo script di addestramento

Esegui lo script di addestramento e attendi finché non viene visualizzato un output che indica che il modello è in addestramento attivo. L'aspetto dipende dal codice e dal modello. Cerca l'output come Epoch 1/100. In alternativa, puoi accedere alla pagina di Cloud TPU nella console di GCP, selezionare la tua TPU e visualizzare il grafico di utilizzo della CPU. Anche se questo non mostra l'utilizzo della TPU, è una buona indicazione che il modello sia in fase di addestramento.

Avvia il server TensorBoard

Apri una nuova finestra del terminale e connettiti alla tua VM TPU con port forwarding. In questo modo, il browser locale può comunicare con il server TensorBoard in esecuzione sulla VM VM.

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

Esegui TensorBoard nella finestra del terminale che hai appena aperto 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:6006/ (Press CTRL+C to quit)

Apri un browser web e vai all'URL visualizzato nell'output di TensorBoard. Seleziona Profilo dal menu a discesa in alto a destra nella pagina TensorBoard.

immagine

Acquisisci un profilo sulle VM TPU

  1. Seleziona il pulsante PROTURA PROFILO.
  2. Seleziona il pulsante di opzione Nome TPU
  3. Digita il tuo nome TPU
  4. Seleziona il pulsante ACQUISTA.

Visualizzare i dati del profilo con TensorBoard

Dopo aver acquisito un profilo, TensorBoard visualizza la overview_page. Nel riquadro a sinistra, sotto Strumenti, seleziona trace_viewer.

immagine

Gli altri strumenti elencati nel menu Strumenti non sono attualmente supportati dalle VM TPU. Per ulteriori informazioni su questi strumenti, consulta la profilazione dei modelli sui nodi TPU.

Visualizzatore di tracce

Trace visualizzatore è uno strumento di analisi delle prestazioni Cloud TPU disponibile in Profilo. Lo strumento utilizza il visualizzatore di profilazione degli eventi di traccia di Chrome, pertanto funziona solo nel browser Chrome.

Il visualizzatore tracce mostra una sequenza temporale che mostra:

  • Durata delle operazioni eseguite dal modello TensorFlow .
  • Quale parte del sistema (TPU o macchina host) ha eseguito un'operazione. In genere, la macchina host esegue le operazioni di incremento, che preelaborano i dati di addestramento e li trasferisce alla TPU, mentre la TPU esegue l'addestramento effettivo del modello.

Il visualizzatore di tracce consente di identificare i problemi di prestazioni del modello, quindi di adottare misure per risolverli. Ad esempio, a un livello generale puoi capire se l'addestramento con feed o modelli richiede la maggior parte del tempo. Visualizzando i dettagli puoi identificare le operazioni di TensorFlow che richiedono l'esecuzione più lunga.

Tieni presente che il visualizzatore di tracce è limitato a un milione di eventi per Cloud TPU. Se devi valutare altri eventi, utilizza invece il visualizzatore delle tracce in streaming.

Interfaccia di visualizzazione di 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 che visualizza l'esecuzione più recente:

immagine

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

  1. Menu a discesa Esegui. 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 selezionarne un'altra.
  2. Menu a discesa Strumenti. Seleziona diversi strumenti di profilazione.
  3. Menu a discesa Host. Seleziona un host che contiene un set Cloud TPU.
  4. Riquadro della sequenza temporale. Mostra le operazioni eseguite da Cloud TPU e dalla macchina host nel tempo.
  5. Riquadro dei dettagli. Mostra informazioni aggiuntive per le operazioni selezionate nel riquadro della sequenza temporale.

Vediamo più in dettaglio il riquadro della sequenza temporale:

immagine

Il riquadro della sequenza temporale contiene i seguenti elementi:

  1. Barra superiore. Contiene vari controlli ausiliari.
  2. Asse temporale. Mostra il tempo relativo all'inizio della traccia.
  3. Etichette di sezione e monitoraggio. Ogni sezione contiene più tracce e presenta un triangolo a sinistra su cui puoi fare clic per espandere e comprimere la sezione. Nel sistema è presente una sezione per ogni elemento di elaborazione.
  4. Selettore strumenti. Contiene vari strumenti per interagire con il visualizzatore di tracce.
  5. Eventi. Mostrano il tempo durante il quale è stata eseguita un'operazione o la durata dei meta eventi, ad esempio le fasi dell'addestramento.
  6. Barra verticale delle schede. Questa funzione non ha uno scopo utile per Cloud TPU. La barra fa parte dello strumento di monitoraggio generale delle tracce fornito da Chrome utilizzato per diverse attività di analisi delle prestazioni.

Sezioni e tracce

Il visualizzatore 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 nodo TPU contiene le seguenti tracce:
    • Passaggio. Mostra la durata dei passaggi di addestramento in esecuzione sulla TPU.
    • TensorFlow Ops. Mostra le operazioni TensorFlow eseguite sulla TPU.
    • Operazioni XLA. Mostra le operazioni XLA in esecuzione sulla 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 del computer host, con l'etichetta "Thread Thread". La sezione contiene una traccia per ogni thread di CPU. Nota: puoi ignorare le informazioni visualizzate accanto alle etichette delle sezioni.

Selettore strumento cronologia

Puoi interagire con la visualizzazione della sequenza temporale utilizzando il relativo strumento in TensorBoard. Puoi fare clic su uno strumento della sequenza temporale o utilizzare le seguenti scorciatoie da tastiera per attivare ed evidenziare uno strumento. Per spostare il selettore dello strumento "Spostamenti", fai clic nell'area tratteggiata in alto, quindi trascina il selettore fino alla posizione desiderata.

Utilizza gli strumenti della sequenza temporale come segue:

Strumento di selezione
Fai clic su un evento per selezionarlo o trascina per selezionare più eventi. 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 la panoramica della visualizzazione della sequenza temporale in orizzontale e in verticale.

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 del mouse determina il centro intorno al quale avviene lo zoom.

Nota: lo strumento zoom dispone di un bug noto per cui lo zoom rimane attivo se rilasci il pulsante del mouse quando il cursore del mouse si trova all'esterno della visualizzazione della sequenza temporale. Se ti dovesse accadere, fai clic per breve tempo sulla visualizzazione della sequenza temporale per interrompere lo zoom.

Strumento di sincronizzazione
Trascina orizzontalmente per contrassegnare un intervallo di tempo. La lunghezza dell'intervallo viene mostrata sull'asse temporale. Per regolare l'intervallo, trascina le estremità. Per cancellare l'intervallo, fai clic in un punto qualsiasi della visualizzazione della sequenza temporale.

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