Monitora le VM Cloud TPU
Questa guida spiega come utilizzare Google Cloud Monitoring per monitorare le VM Cloud TPU. Google Cloud Monitoring raccoglie automaticamente metriche e log da Cloud TPU e dal relativo host Compute Engine. Questi dati possono essere utilizzati per monitorare l'integrità di Cloud TPU e Compute Engine.
Le metriche ti consentono di monitorare una quantità numerica nel tempo, ad esempio l'utilizzo della CPU, l'utilizzo della rete o la durata di inattività di TensorCore. I log acquisiscono gli eventi in un momento specifico. Le voci di log vengono scritte dal tuo codice, Google Cloud dai servizi, dalle applicazioni di terze parti e dall'infrastruttura. Google Cloud Puoi anche generare metriche dai dati presenti in una voce di log creando una metrica basata su log. Puoi anche impostare criteri di avviso in base ai valori delle metriche o alle voci di log.
Questa guida illustra il Google Cloud monitoraggio e mostra come:
- Visualizzare le metriche di Cloud TPU
- Configurare i criteri di avviso per le metriche Cloud TPU
- Esegui query sui log di Cloud TPU
- Crea metriche basate su log per configurare avvisi e visualizzare dashboard
Per monitorare le TPU, puoi anche utilizzare lo strumento di pianificazione della capacità (anteprima). Con Capacity Planner, puoi visualizzare i dati di utilizzo e di previsione delle TPU per il tuo progetto, la tua cartella o la tua organizzazione. Questi dati vengono aggiornati ogni 24 ore e puoi utilizzarli per analizzare le tendenze di utilizzo e pianificare le esigenze di capacità future. Per maggiori informazioni, vedi Panoramica dello strumento di pianificazione della capacità.
Questo documento presuppone una conoscenza di base di Google Cloud Monitoring. Devi creare una VM Compute Engine e risorse Cloud TPU prima di poter iniziare a generare e utilizzare Google Cloud Monitoring. Per maggiori dettagli, consulta la guida rapida di Cloud TPU.
Metriche
Le metricheGoogle Cloud vengono generate automaticamente dalle VM Compute Engine e dal runtime Cloud TPU. Le seguenti metriche vengono generate dalle VM Cloud TPU:
memory/usage
network/received_bytes_count
network/sent_bytes_count
cpu/utilization
tpu/tensorcore/idle_duration
accelerator/tensorcore_utilization
accelerator/memory_bandwidth_utilization
accelerator/duty_cycle
accelerator/memory_total
accelerator/memory_used
Possono essere necessari fino a 180 secondi tra il momento in cui viene generato un valore di metrica e il momento in cui viene visualizzato nello strumento Esplora metriche.
Per un elenco completo delle metriche generate da Cloud TPU, consulta Google Cloud Metriche Cloud TPU.
Utilizzo memoria
La metrica memory/usage
viene generata per la risorsa TPU Worker
e monitora
la memoria utilizzata dalla VM TPU in byte. Questa metrica viene campionata ogni 60 secondi.
Conteggio byte di rete ricevuti
La metrica network/received_bytes_count
viene generata per la risorsa TPU Worker
e monitora il numero di byte cumulativi di dati ricevuti dalla VM TPU
tramite la rete in un determinato momento.
Conteggio byte di rete inviati
La metrica network/sent_bytes_count
viene generata per la risorsa TPU Worker
e tiene traccia del numero di byte cumulativi inviati dalla VM TPU tramite la rete in un
determinato momento.
Utilizzo CPU
La metrica cpu/utilization
viene generata per la risorsa TPU Worker
e
monitora l'utilizzo attuale della CPU sul worker TPU, espresso in percentuale,
campionato una volta al minuto. I valori sono in genere compresi tra 0,0 e 100,0, ma potrebbero
superare 100,0.
Durata inattività TensorCore
La metrica tpu/tensorcore/idle_duration
viene generata per la risorsa TPU Worker
e monitora il numero di secondi in cui il TensorCore di ogni chip TPU è rimasto inattivo. Questa metrica è disponibile per ogni chip su tutte le TPU in uso. Se è in uso un TensorCore, il valore della durata di inattività viene reimpostato su zero. Quando TensorCore non è più in uso, il valore della durata di inattività inizia ad aumentare.
Il seguente grafico mostra la metrica tpu/tensorcore/idle_duration
per una VM TPU v2-8 con un worker. Ogni worker ha quattro chip. In questo esempio, tutti e quattro i chip hanno gli stessi valori per tpu/tensorcore/idle_duration
, quindi i grafici sono sovrapposti.
Utilizzo di TensorCore
La metrica accelerator/tensorcore_utilization
viene generata per la risorsa GCE TPU
Worker
e monitora la percentuale attuale di TensorCore utilizzata. Questa metrica viene calcolata dividendo il numero di operazioni TensorCore
eseguite in un periodo di campionamento per il numero massimo di operazioni
che possono essere eseguite nello stesso periodo di campionamento. Un valore più alto indica un utilizzo
migliore. La metrica di utilizzo di TensorCore è supportata dalle TPU v4 e dalle generazioni successive.
Utilizzo larghezza di banda memoria
La metrica accelerator/memory_bandwidth_utilization
viene generata per la risorsa GCE TPU Worker
e monitora la percentuale attuale di larghezza di banda della memoria dell'acceleratore in uso. Questa metrica viene calcolata dividendo la
larghezza di banda della memoria utilizzata in un periodo di campionamento per la larghezza di banda massima supportata
nello stesso periodo di campionamento. Un valore più alto indica un utilizzo migliore. La metrica Utilizzo larghezza di banda memoria è supportata dalle generazioni di TPU v4 e successive.
Ciclo di servizio dell'acceleratore
La metrica accelerator/duty_cycle
viene generata per la risorsa GCE TPU Worker
e monitora la percentuale di tempo nel periodo di campionamento durante il quale
TensorCore dell'acceleratore ha eseguito attivamente l'elaborazione. I valori sono compresi tra 0 e 100. Un valore più alto indica un migliore utilizzo dei Tensor Core. Questa metrica viene
registrata quando un carico di lavoro di machine learning è in esecuzione sulla VM TPU. La metrica
Ciclo di lavoro dell'acceleratore è supportata per JAX
0.4.14 e versioni successive,
PyTorch
2.1 e versioni successive e
TensorFlow
2.14.0 e
versioni successive.
Memoria totale dell'acceleratore
La metrica accelerator/memory_total
viene generata per la risorsa GCE TPU Worker
e monitora la memoria totale dell'acceleratore allocata in byte.
Questa metrica viene segnalata quando un carico di lavoro di machine learning è in esecuzione sulla VM TPU. La metrica Totale memoria acceleratore è supportata per JAX
0.4.14 e versioni successive, PyTorch
2.1 e versioni successive e
TensorFlow
2.14.0 e versioni successive.
Memoria utilizzata dall'acceleratore
La metrica accelerator/memory_used
viene generata per la risorsa GCE TPU Worker
e monitora la memoria totale dell'acceleratore utilizzata in byte. Questa metrica viene
registrata quando un carico di lavoro di machine learning è in esecuzione sulla VM TPU. La metrica
Memoria dell'acceleratore utilizzata è supportata per JAX
0.4.14 e versioni successive,
PyTorch
2.1 e versioni successive e
TensorFlow
2.14.0 e
versioni successive.
Visualizzazione delle metriche
Puoi visualizzare le metriche utilizzando Esplora metriche nella console Google Cloud .
In Esplora metriche, fai clic su Seleziona una metrica e cerca TPU Worker
o GCE TPU Worker
a seconda della metrica che ti interessa.
Seleziona una risorsa per visualizzare tutte le metriche disponibili per quella risorsa.
Se l'opzione Attivo è abilitata, vengono elencate solo le metriche con dati di serie temporali nelle ultime 25 ore. Disattiva Attiva per elencare tutte le metriche.
Puoi anche accedere alle metriche utilizzando le chiamate HTTP curl
.
Utilizza il pulsante Prova nella documentazione di projects.timeSeries.query per recuperare il valore di una metrica nel periodo di tempo specificato.
- Inserisci il nome nel seguente formato:
projects/{project-name}
. Aggiungi una query alla sezione Corpo della richiesta. Di seguito è riportata una query di esempio per recuperare la metrica della durata di inattività per la zona specificata negli ultimi cinque minuti.
fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
Fai clic su Esegui per effettuare la chiamata e visualizzare i risultati del messaggio HTTP POST.
Il documento Riferimento Monitoring Query Language contiene ulteriori informazioni su come personalizzare questa query.
Creazione di avvisi
Puoi creare policy di avviso che indicano a Cloud Monitoring di inviare un avviso quando viene soddisfatta una condizione.
I passaggi descritti in questa sezione mostrano un esempio di come aggiungere un criterio di avviso per la metrica Durata inattiva TensorCore. Ogni volta che questa metrica supera le 24 ore, Cloud Monitoring invia un'email all'indirizzo email registrato.
- Vai alla console Monitoring.
- Nel riquadro di navigazione, fai clic su Avvisi.
- Fai clic su Modifica canali di notifica.
- Nella sezione Email, fai clic su Aggiungi nuovo. Digita un indirizzo email, un nome visualizzato e fai clic su Salva.
- Nella pagina Avvisi, fai clic su Crea criterio.
- Fai clic su Seleziona una metrica, quindi seleziona Durata inattiva di TensorCore e fai clic su Applica.
- Fai clic su Avanti e poi su Soglia.
- Per Attivatore di avvisi, seleziona Qualsiasi violazione della serie temporale.
- In Posizione soglia, seleziona Sopra la soglia.
- In Valore soglia, digita
86400000
. - Fai clic su Avanti.
- In Canali di notifica, seleziona il canale di notifica via email e fai clic su Ok.
- Inserisci un nome per la policy di avviso.
- Fai clic su Avanti e poi su Crea policy.
Quando la durata di inattività di TensorCore supera le 24 ore, viene inviata un'email all'indirizzo email che hai specificato.
Logging
Le voci di log vengono scritte da servizi Google Cloud , servizi di terze parti, framework ML o dal tuo codice. Puoi visualizzare i log utilizzando Esplora log o l'API Logs. Per ulteriori informazioni su Google Cloud logging, consulta Google Cloud Logging.
I log dei worker TPU contengono informazioni su un worker Cloud TPU specifico in una zona specifica, ad esempio la quantità di memoria disponibile sul worker Cloud TPU (system_available_memory_GiB
).
I log delle risorse sottoposte ad audit contengono informazioni su quando è stata chiamata un'API Cloud TPU specifica e chi ha effettuato la chiamata. Ad esempio, puoi trovare informazioni
sulle chiamate alle API CreateNode
, UpdateNode
e DeleteNode
.
I framework ML possono generare log per l'output standard e l'errore standard. Questi log sono controllati dalle variabili di ambiente e vengono letti dallo script di addestramento.
Il tuo codice può scrivere log in Google Cloud Logging. Per saperne di più, consulta Scrivere log standard e Scrivere log strutturati.
Registrazione della porta seriale
Cloud TPU si basa sul logging della porta seriale per la risoluzione dei problemi, il monitoraggio e il debug. L'impostazione predefinita è l'abilitazione del logging delle porte seriali. Se la registrazione della porta seriale non è attivata, il processo di creazione della VM TPU non va a buon fine e viene generato il seguente messaggio di errore.
"Cloud TPU received a bad request. Constraint
`constraints/compute.disableSerialPortLogging` violated. Create TPUs with
serial port logging enabled or remove the Organization Policy Constraint."
Questo messaggio indica che il vincolo
constraints/compute.disableSerialPortLogging
è stato violato.
Per evitare questo errore, devi assicurarti che il logging delle porte seriali sia consentito per i tuoi progetti TPU. La best practice consiste nell'ignorare la policy dell'organizzazione a livello di progetto.
Per saperne di più sull'abilitazione del logging delle porte seriali, consulta Abilitazione e disabilitazione del logging dell'output della porta seriale.
Query Google Cloud logs
Quando visualizzi i log nella console Google Cloud , la pagina esegue una query predefinita.
Puoi visualizzare la query selezionando il pulsante di attivazione/disattivazione Show query
. Puoi
modificare la query predefinita o crearne una nuova. Per ulteriori informazioni, vedi
Creare query in Esplora log.
Log delle risorse controllate
Per visualizzare i log delle risorse controllate:
- Vai a Google Cloud Esplora log.
- Fai clic sul menu a discesa Tutte le risorse.
- Fai clic su Risorsa sottoposta ad audit e poi su Cloud TPU.
- Scegli l'API Cloud TPU che ti interessa.
- Fai clic su Applica. I log vengono visualizzati nei risultati della query.
Fai clic su una voce di log per espanderla. Ogni voce di log ha più campi, tra cui:
- logName: il nome del log
- protoPayload -> @type: il tipo di log
- protoPayload -> resourceName: il nome della tua Cloud TPU
- protoPayload -> methodName: il nome del metodo chiamato (solo audit log)
- protoPayload -> request -> @type: il tipo di richiesta
- protoPayload -> request -> node: dettagli sul nodo Cloud TPU
- protoPayload -> request -> node_id: il nome della TPU
- severity: la gravità del log
Log worker TPU
Per visualizzare i log del worker TPU:
- Vai a Google Cloud Esplora log.
- Fai clic sul menu a discesa Tutte le risorse.
- Fai clic su Nodo di lavoro TPU.
- Seleziona una zona.
- Seleziona la Cloud TPU che ti interessa.
- Fai clic su Applica. I log vengono visualizzati nei risultati della query.
Fai clic su una voce di log per espanderla. Ogni voce di log ha un campo chiamato
jsonPayload
. Espandi jsonPayload
per visualizzare più campi, tra cui:
- accelerator_type: il tipo di acceleratore
- consumer_project: il progetto in cui si trova Cloud TPU
- evententry_timestamp: l'ora in cui è stato generato il log
- system_available_memory_GiB: la memoria disponibile sul worker Cloud TPU (0 ~ 350 GiB)
Creazione di metriche basate su log
Questa sezione descrive come creare metriche basate su log utilizzate per configurare dashboard e avvisi di monitoraggio. Per informazioni sulla creazione programmatica di metriche basate su log, vedi Creazione programmatica di metriche basate su log utilizzando l'API REST di Cloud Logging.
L'esempio seguente utilizza il campo secondario system_available_memory_GiB per mostrare come creare una metrica basata su log per monitorare la memoria disponibile del worker Cloud TPU.
- Vai a Google Cloud Esplora log.
Nella casella della query, inserisci la seguente query per estrarre tutte le voci di log che hanno system_available_memory_GiB definito per il worker Cloud TPU principale:
resource.type=tpu_worker resource.labels.project_id=your-project resource.labels.zone=your-tpu-zone resource.labels.node_id=your-tpu-name resource.labels.worker_id=0 logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor jsonPayload.system_available_memory_GiB:*
Fai clic su Crea metrica per visualizzare l'editor delle metriche.
In Tipo di metrica, scegli Distribuzione.
Digita un nome, una descrizione facoltativa e un'unità di misura per la metrica. Per questo esempio, digita "matrix_unit_utilization_percent" e "Utilizzo MXU" nei campi Nome e Descrizione, rispettivamente. Il filtro viene precompilato con lo script che hai inserito in Esplora log.
Fai clic su Crea metrica.
Fai clic su Visualizza in Esplora metriche per visualizzare la nuova metrica. Potrebbero essere necessari alcuni minuti prima che le metriche vengano visualizzate.
Creazione di metriche basate su log con l'API REST di Cloud Logging
Puoi anche creare metriche basate su log tramite l'API Cloud Logging. Per saperne di più, consulta Creazione di una metrica di distribuzione.
Creazione di dashboard e avvisi utilizzando metriche basate su log
Le dashboard sono utili per visualizzare le metriche (con un ritardo di circa 2 minuti); gli avvisi sono utili per inviare notifiche quando si verificano errori. Per saperne di più, consulta:
- Dashboard di monitoraggio e logging
- Gestire le dashboard personalizzate
- Creare criteri di avviso basati su metriche
Creazione di dashboard
Per creare una dashboard in Cloud Monitoring per la metrica Durata inattiva del Tensor Core:
- Vai alla console Monitoring.
- Nel riquadro di navigazione, fai clic su Dashboard.
- Fai clic su Crea dashboard e poi su Aggiungi widget.
- Scegli il tipo di grafico che vuoi aggiungere. Per questo esempio, scegli Linea.
- Digita un titolo per il widget.
- Fai clic sul menu a discesa Seleziona una metrica e digita "Durata inattiva di Tensor Core" nel campo del filtro.
- Nell'elenco delle metriche, seleziona TPU Worker -> Tpu -> Tensorcore idle duration.
- Per filtrare i contenuti della dashboard, fai clic sul menu a discesa Filtra.
- In Etichette risorsa, seleziona project_id.
- Scegli un comparatore e digita un valore nel campo Valore.
- Fai clic su Applica.