Monitorare le TPU
Questa guida spiega come utilizzare Cloud Monitoring per monitorare le VM TPU. Cloud Monitoring raccoglie automaticamente metriche e log dalla TPU e dalla relativa VM host. Questi dati possono essere utilizzati per monitorare l'integrità di 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.
Per monitorare le TPU, puoi anche utilizzare lo strumento di pianificazione della capacità (anteprima). Con lo strumento di pianificazione della capacità, 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 saperne di più, consulta la panoramica dello strumento di pianificazione della capacità.
Accedere alle metriche TPU
Compute Engine genera due tipi di metriche TPU: metriche di runtime TPU e metriche dell'infrastruttura VM TPU. Puoi ottenere le metriche in due modi:
Libreria di monitoraggio TPU: recupera le metriche di runtime TPU dall'SDK LibTPU utilizzando la libreria di monitoraggio TPU. In questo modo le tue applicazioni possono ottenere telemetria in tempo reale dall'interno dell'ambiente guest. Per saperne di più, consulta la libreria di monitoraggio TPU.
AI Telemetry Collector: ottieni metriche di runtime e metriche dell'infrastruttura VM tramite AI Telemetry Collector. AI Telemetry Collector viene eseguito all'interno della VM TPU e ti consente di accedere alle metriche tramite Cloud Monitoring o tramite la tua pipeline di monitoraggio basata su Prometheus. Per saperne di più, consulta AI Telemetry Collector.
Metriche TPU
Le metricheGoogle Cloud per Cloud TPU vengono generate automaticamente dalle VM Compute Engine e dal runtime Cloud TPU. Le metriche nella tabella seguente vengono generate dalle VM Compute Engine.
Le stringhe "tipo di metrica" in questa tabella devono essere precedute dal prefisso
compute.googleapis.com/. Questo prefisso è stato omesso dalle voci della tabella. Quando esegui una query su un'etichetta, utilizza il prefisso metric.labels; ad esempio,
metric.labels.LABEL="VALUE".
| Tipo di metrica Fase di lancio (Livelli della gerarchia delle risorse) Nome visualizzato |
|
|---|---|
| Tipo, Tipo, Unità Risorse monitorate |
Descrizione Etichette |
instance/tpu/accelerator/duty_cycle
BETA
(progetto)
Ciclo di lavoro dell'acceleratore |
|
GAUGE, DOUBLE, %
gce_instance |
Percentuale di tempo nel periodo di campionamento durante il quale l'acceleratore ha eseguito attivamente l'elaborazione. I valori sono compresi nell'intervallo [0,100].
accelerator_id:
ID dispositivo dell'acceleratore.
|
instance/tpu/accelerator/memory_bandwidth_utilization
BETA
(progetto)
Utilizzo della larghezza di banda della memoria dell'acceleratore |
|
GAUGE, DOUBLE, %
gce_instance |
Percentuale attuale della larghezza di banda della memoria dell'acceleratore in uso. Questo valore viene calcolato 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.
accelerator_id:
ID dispositivo dell'acceleratore.
|
instance/tpu/accelerator/memory_total
BETA
(progetto)
Memoria totale dell'acceleratore |
|
GAUGE, INT64, By
gce_instance |
Memoria totale dell'acceleratore attualmente allocata in byte.
accelerator_id:
ID dispositivo dell'acceleratore.
|
instance/tpu/accelerator/memory_used
BETA
(progetto)
Memoria dell'acceleratore utilizzata |
|
GAUGE, INT64, By
gce_instance |
Memoria totale dell'acceleratore attualmente utilizzata in byte.
accelerator_id:
ID dispositivo dell'acceleratore.
|
instance/tpu/accelerator/tensorcore_utilization
BETA
(progetto)
Utilizzo di Tensor Core dell'acceleratore |
|
GAUGE, DOUBLE, %
gce_instance |
Percentuale attuale di Tensorcore utilizzata. Viene calcolata dividendo il numero di operazioni Tensorcore eseguite in un periodo di campionamento per il numero di operazioni Tensorcore supportate nello stesso periodo di campionamento.
accelerator_id:
ID dispositivo dell'acceleratore.
|
instance/tpu/active_chips
BETA
(progetto)
Conteggio chip TPU attivi |
|
GAUGE, INT64, 1
gce_instance |
Il conteggio attuale dei chip utilizzati attivamente (ovvero non inattivi).
accelerator_type:
Tipo e generazione dell'acceleratore.
reservation_id:
L'ID della prenotazione della macchina fisica.
provisioning_model:
Il modello di provisioning associato.
protection_tier:
Il modello di protezione associato.
block_id:
L'ID del blocco all'interno del cluster che ospita la VM.
subblock_id:
L'ID del sotto-blocco che ospita la VM.
is_exr:
(BOOL)
Indica se il chip fa parte di una prenotazione estesa.
|
instance/tpu/chip_state
BETA
(progetto)
Conteggio stato chip TPU |
|
GAUGE, INT64, 1
gce_instance |
Il conteggio dei chip TPU in vari stati, ad esempio Integro, Non integro e Sconosciuto.
state:
Lo stato del chip.
accelerator_type:
Tipo e generazione dell'acceleratore.
block_id:
L'ID del blocco all'interno del cluster che ospita la VM.
subblock_id:
L'ID del sotto-blocco che ospita la VM.
reservation_id:
L'ID della prenotazione della macchina fisica.
is_exr:
(BOOL)
Indica se il chip fa parte di una prenotazione estesa.
|
instance/tpu/infra_health
BETA
(progetto)
Stato dell'istanza TPU |
|
GAUGE, INT64, 1
gce_instance |
Indica lo stato di integrità generale di un'istanza TPU. Le etichette delle metriche aiutano a identificare lo stato di integrità specifico e i motivi dei problemi relativi alle istanze TPU degradate o non integre, concentrandosi principalmente sull'integrità dell'hardware e del sistema TPU. Potrebbero essere necessari diversi minuti prima che le modifiche allo stato di integrità vengano riflesse in questa metrica. Campionamento eseguito ogni 60 secondi. Dopo il campionamento, i dati non sono visibili per un massimo di 420 secondi.
health_status:
Lo stato di integrità complessivo dell'istanza TPU. Valori possibili: HEALTHY (funzionamento come previsto), UNHEALTHY (problema critico rilevato), DEGRADED (problema che influisce sulle prestazioni), UNKNOWN (lo stato non può essere determinato).
unhealthy_category:
Spiegazione dello stato non integro della VM. Questa etichetta viene compilata solo quando il valore della metrica è Unhealthy.
machine_type:
Il tipo di macchina dell'istanza (ad es. ct6e-standard-4t-tpu).
machine_id:
L'ID della macchina fisica che ospita la VM.
block_id:
L'ID del blocco all'interno del cluster che ospita la VM.
cluster_id:
L'ID del cluster che ospita la VM.
reservation_id:
L'ID della prenotazione della macchina fisica.
subblock_id:
L'ID del sotto-blocco che ospita la VM.
|
instance/tpu/runtime/uptime
BETA
(progetto)
Tempo di attività del runtime |
|
GAUGE, INT64, s
gce_instance |
Tempo di attività di ML Runtime dall'inizializzazione della libreria di runtime (libtpu.so) da parte del job ML. Durante questo periodo, la libreria runtime blocca l'utilizzo dei dispositivi TPU per il job ML.
ml_framework_name:
Nome del framework ML.
ml_framework_version:
Versione del framework ML.
|
instance/tpu/scheduled_chips
BETA
(progetto)
Conteggio chip TPU pianificati |
|
GAUGE, INT64, 1
gce_instance |
Il conteggio attuale dei chip allocati a una VM con stato INTEGRO e NON DISABILITATA per la manutenzione.
accelerator_type:
Tipo e generazione dell'acceleratore.
reservation_id:
L'ID della prenotazione della macchina fisica.
provisioning_model:
Il modello di provisioning associato.
protection_tier:
Il modello di protezione associato.
block_id:
L'ID del blocco all'interno del cluster che ospita la VM.
subblock_id:
L'ID del sotto-blocco che ospita la VM.
is_exr:
(BOOL)
Indica se il chip fa parte di una prenotazione estesa.
|
instance/tpu/utilized_chips
BETA
(progetto)
Chip TPU utilizzati |
|
GAUGE, DOUBLE, 1
gce_instance |
La capacità aggregata utilizzata attuale espressa come numero effettivo di chip attivi. È equivalente alla somma dell'utilizzo frazionario (da 0,0 a 1,0) di tutti i chip attivi.
accelerator_type:
Tipo e generazione dell'acceleratore.
reservation_id:
L'ID della prenotazione della macchina fisica.
provisioning_model:
Il modello di provisioning associato.
protection_tier:
Il modello di protezione associato.
block_id:
L'ID del blocco all'interno del cluster che ospita la VM.
subblock_id:
L'ID del sotto-blocco che ospita la VM.
is_exr:
(BOOL)
Indica se il chip fa parte di una prenotazione estesa.
|
quota/tpus_per_tpu_family/exceeded
ALPHA
(project)
TPU count per TPU family. quota exceeded error |
|
DELTA, INT64, 1
compute.googleapis.com/Location |
Numero di tentativi per superare il limite per la metrica di quota compute.googleapis.com/tpus_per_tpu_family. Dopo il campionamento, i dati non sono visibili per un massimo di 150 secondi.
limit_name:
Il nome del limite.
tpu_family:
Dimensione personalizzata della famiglia di TPU.
|
quota/tpus_per_tpu_family/limit
ALPHA
(progetto)
Numero di TPU per famiglia di TPU. Limite di quota |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Limite attuale per la metrica di quota compute.googleapis.com/tpus_per_tpu_family. Campionamento eseguito ogni 60 secondi. Dopo il campionamento, i dati non sono visibili per un massimo di 150 secondi.
limit_name:
Il nome del limite.
tpu_family:
Dimensione personalizzata della famiglia di TPU.
|
quota/tpus_per_tpu_family/usage
ALPHA
(project)
TPU count per TPU family. quota usage |
|
GAUGE, INT64, 1
compute.googleapis.com/Location |
Utilizzo attuale della metrica di quota compute.googleapis.com/tpus_per_tpu_family. Dopo il campionamento, i dati non sono visibili per un massimo di 150 secondi.
limit_name:
Il nome del limite.
tpu_family:
Dimensione personalizzata della famiglia di TPU.
|
tpu/multislice/accelerator/device_to_host_transfer_latencies
BETA
(progetto)
Latenze di trasferimento da dispositivo a host |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa della latenza di trasferimento dal dispositivo all'host per ogni blocco di dati. Una latenza inizia quando viene emessa la richiesta di trasferimento dei dati all'host e termina quando viene ricevuta una conferma che il trasferimento dei dati è stato completato.
buffer_size:
Dimensione del buffer.
|
tpu/multislice/accelerator/host_to_device_transfer_latencies
BETA
(progetto)
Latenze di trasferimento da host a dispositivo |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa della latenza di trasferimento dall'host al dispositivo per ogni blocco di dati del traffico multislice. Una latenza inizia quando viene emessa la richiesta di trasferimento dei dati al dispositivo e termina quando viene ricevuta una conferma che il trasferimento dei dati è stato completato.
buffer_size:
Dimensione del buffer.
|
tpu/multislice/network/collective_end_to_end_latencies
BETA
(progetto)
Latenze end-to-end collettive |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa della latenza collettiva end-to-end per il traffico multi-slice. Una latenza inizia quando viene emessa la richiesta per la raccolta e termina quando viene ricevuta una conferma che il trasferimento dei dati è stato completato.
input_size:
Dimensione dell'input dell'operazione collettiva.
collective_type:
Tipo di operazione collettiva.
|
tpu/multislice/network/dcn_transfer_latencies
BETA
(progetto)
Latenze di trasferimento DCN |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa delle latenze di trasferimento di rete per il traffico multislice. Una latenza inizia quando viene emessa la richiesta di trasferimento dei dati tramite la DCN e termina quando viene ricevuta una conferma che il trasferimento dei dati è stato completato.
buffer_size:
Dimensione del buffer.
type:
Tipo.
|
tpu/multislice/network/grpc_client_call_latencies
BETA
(project)
Latenze delle chiamate del client gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa delle latenze di trasferimento di rete per il completamento di una RPC dalla prospettiva del chiamante da parte della libreria gRPC.
buffer_size:
Dimensione del buffer.
|
tpu/multislice/network/grpc_server_call_latencies
BETA
(progetto)
Latenze chiamata server gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa delle latenze di trasferimento di rete per il completamento di una RPC da parte del server gRPC dal punto di vista del trasporto.
buffer_size:
Dimensione del buffer.
|
tpu/multislice/network/grpc_tcp_delivery_rates
BETA
(progetto)
Tassi di distribuzione TCP gRPC |
|
CUMULATIVE, DISTRIBUTION, Mb/s
gce_instance |
Distribuzione cumulativa delle velocità di trasferimento dei dati delle connessioni TCP. Ogni campione è la velocità di trasferimento media più recente per una determinata connessione TCP nell'ultimo intervallo di ACK TCP. I campioni delle velocità di trasferimento dei dati vengono estratti dal kernel TCP di Linux ogni 20 secondi, quindi è prevedibile che ogni connessione TCP crei circa 3 campioni ogni 60 secondi. |
tpu/multislice/network/grpc_tcp_min_round_trip_times
BETA
(progetto)
Tempi di andata e ritorno minimi TCP gRPC |
|
CUMULATIVE, DISTRIBUTION, us
gce_instance |
Distribuzione cumulativa delle latenze minime di trasferimento di rete per connessione TCP. |
tpu/multislice/network/grpc_tcp_packets_retransmitted_count
BETA
(progetto)
Conteggio pacchetti TCP gRPC ritrasmessi |
|
CUMULATIVE, INT64, 1
gce_instance |
Conteggio totale dei pacchetti ritrasmessi. |
tpu/multislice/network/grpc_tcp_packets_sent_count
BETA
(progetto)
Conteggio pacchetti TCP gRPC inviati |
|
CUMULATIVE, INT64, 1
gce_instance |
Conteggio totale dei pacchetti inviati da TCP. |
tpu/slice/capacity/available_chips
BETA
(progetto)
Conteggio chip TPU disponibili |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
Il conteggio attuale dei chip TPU della prenotazione estesa che sono attivamente disponibili e pronti all'uso. Campionamento eseguito ogni 60 secondi. Dopo il campionamento, i dati non sono visibili per un massimo di 360 secondi.
accelerator_type:
Tipo e generazione dell'acceleratore.
reservation_id:
L'ID della prenotazione della macchina fisica.
block_id:
L'ID blocco associato alla sezione.
subblock_id:
L'ID del sottoblocco associato alla sezione.
provisioning_model:
Il modello di provisioning associato.
protection_tier:
Il modello di protezione associato.
|
tpu/slice/capacity/committed_chips
BETA
(progetto)
Conteggio chip TPU acquistati |
|
GAUGE, INT64, 1
compute.googleapis.com/AcceleratorSlice |
Il conteggio attuale dei chip TPU acquistati della prenotazione estesa. Campionamento eseguito ogni 60 secondi. Dopo il campionamento, i dati non sono visibili per un massimo di 360 secondi.
accelerator_type:
Tipo e generazione dell'acceleratore.
reservation_id:
L'ID della prenotazione della macchina fisica.
block_id:
L'ID blocco associato alla sezione.
subblock_id:
L'ID del sottoblocco associato alla sezione.
provisioning_model:
Il modello di provisioning associato.
protection_tier:
Il modello di protezione associato.
|
Per un elenco completo delle metriche generate da Compute Engine, consulta Metriche di Compute Engine.
AI Telemetry Collector
AI Telemetry Collector raccoglie e pubblica le metriche TPU nello spazio dei nomi compute.googleapis.com per le TPU create utilizzando l'API Compute Engine.
Queste metriche sono metriche di sistema integrate, che forniscono visibilità sull'integrità e sulle prestazioni.
L'architettura di AI Telemetry Collector è progettata come raccoglitore OpenTelemetry (OTEL) leggero e specializzato. Utilizza due ricevitori principali per acquisire i dati:
- Ricevitore runtime TPU: esegue lo scraping delle metriche di runtime e del carico di lavoro (come il ciclo di lavoro e la memoria utilizzata) direttamente dal runtime TPU quando un carico di lavoro di machine learning è attivo.
- Ricevitore host TPU: acquisisce le metriche di utilizzo dell'hardware, ad esempio l'utilizzo di TensorCore e l'utilizzo della larghezza di banda della memoria, direttamente dal dispositivo, indipendentemente dal fatto che sia in esecuzione un workload.
Il raccoglitore di dati di telemetria AI utilizza quindi i processori per applicare automaticamente i tag delle risorse necessari (ad esempio project_id, instance_id e zone) ed esporta in modo sicuro i dati di telemetria direttamente in Cloud Monitoring.
AI Telemetry Collector è preinstallato nelle immagini Ubuntu LTS ottimizzate per TPU di Google e viene eseguito automaticamente all'avvio della VM. Per utilizzare questa configurazione, specifica il progetto e la famiglia di immagini dell'acceleratore Google ufficiali quando crei un'istanza VM TPU o un modello di istanza. Una volta avviata la VM, AI Telemetry Collector invia automaticamente le metriche alle dashboard di Cloud Monitoring.
Se crei immagini del sistema operativo personalizzate, puoi utilizzare AI Telemetry Collector dopo aver installato ed eseguito l'immagine Docker ai-telemetry-collector. Per saperne di più, vedi Utilizzare un'immagine
del sistema operativo personalizzata.
Configurazione
AI Telemetry Collector invia automaticamente le metriche alle dashboard di Cloud Monitoring e non richiede ulteriori passaggi di configurazione. Tuttavia, puoi configurare il pacchetto Snap o l'immagine Docker per aggiungere destinazioni di esportazione esterne, modificare gli intervalli di raccolta delle metriche e includere opzioni di debug.
Puoi sostituire la configurazione predefinita con un nuovo file di configurazione oppure aggiungere un file di configurazione aggiuntivo alla configurazione predefinita esistente. Quando aggiungi configurazioni, le chiavi che non esistono già vengono aggiunte e le chiavi che esistono già vengono sovrascritte. Tuttavia, gli array e gli elenchi non sono additivi, pertanto i nuovi elenchi devono includere sia i valori esistenti sia quelli nuovi.
Il seguente file YAML configura AI Telemetry Collector per inviare metriche a Prometheus, un toolkit di avviso e monitoraggio dei sistemi open source. Inoltre, attiva l'opzione di debug, che stampa le metriche all'interno della console.
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
exporters:
- prometheus # For more: https://prometheus.io/docs/introduction/overview/
- googlecloud # If you do not include this, you'll lose Google Cloud Monitoring
- debug # print metrics within the console
Sistema operativo predefinito
Se utilizzi le immagini Ubuntu LTS ottimizzate per le TPU di Google, esegui il seguente comando Snap per aggiungere il nuovo file di configurazione alla configurazione esistente:
sudo snap set \
ai-telemetry-collector \
extra-flags="--config /home/username/additional-config.yaml"
Se vuoi sovrascrivere e sostituire la configurazione esistente, utilizza il flag
config-path anziché extra-flags:
sudo snap set \
ai-telemetry-collector \
config-path="/home/username/new-config.yaml"
Il comando snap set dovrebbe attivare il riavvio automatico del raccoglitore di telemetria AI. Per verificare che l'agente di raccolta sia stato riavviato e abbia applicato correttamente
le configurazioni, utilizza il seguente comando per visualizzare i log:
sudo snap logs -f ai-telemetry-collector
Sistema operativo personalizzato
Se utilizzi un sistema operativo personalizzato, esegui il seguente comando Docker per aggiungere il nuovo file di configurazione alla configurazione esistente:
# First apply the default configs via `--config=/etc/ai-telemetry-collector/config.yaml`
# Then apply your additional config by volume mount.
docker run --privileged --net=host \
-v <path>/additional-config.yaml:/etc/ai-telemetry-collector/additional-config.yaml \
ai-telemetry-collector:latest \
--config=/etc/ai-telemetry-collector/config.yaml \
--config=/etc/ai-telemetry-collector/additional-config.yaml
Se vuoi sovrascrivere e sostituire la configurazione esistente, utilizza il seguente comando Docker:
# Mount a volume (your config file) to `/etc/ai-telemetry-collector/config.yaml`
# The binary automatically picks up this file.
docker run --privileged --net=host \
-v <path>/my-config.yaml:/etc/ai-telemetry-collector/config.yaml \
ai-telemetry-collector:latest
Audit log
I serviziGoogle Cloud generano audit log che registrano le attività amministrative e di accesso all'interno delle tue risorse Google Cloud . Per saperne di più, consulta Logging di controllo di Compute Engine.