Questa pagina illustra le metriche della GPU supportate in Dataflow. Puoi utilizzare queste metriche per monitorare l'integrità e l'utilizzo della GPU. La maggior parte delle metriche è supportata in tutti i job Dataflow, ma alcune richiedono una configurazione aggiuntiva per molti modelli di GPU.
Prerequisiti
Le metriche GPU vengono raccolte solo dai job Dataflow che hanno richiesto esplicitamente le GPU. Per saperne di più, consulta la sezione Supporto GPU.
Panoramica
Sebbene Dataflow riporti molte metriche GPU, le principali sono memoria totale e utilizzata, che sono equivalenti alle metriche RAM, e attività del multiprocessore streaming (SM) e occupazione SM, che sono gli equivalenti più vicini alle metriche CPU di Dataflow. Altre metriche sono trattate nelle sezioni Metriche comuni e Metriche GPM.
Per impostazione predefinita, vengono segnalate la memoria totale e utilizzata di ogni dispositivo GPU nel job. Nell'interfaccia di monitoraggio di Dataflow, questi valori vengono visualizzati nella sezione "Utilizzo GPU di base". Queste metriche non sono uguali alla "Percentuale di accesso alla memoria", che si trova anche nelle metriche GPU di base, ma riporta la percentuale di tempo in cui è stata eseguita l'accesso alla memoria del dispositivo GPU.
Attività SM e Occupazione SM sono metriche GPM. Queste metriche non sono supportate sui dispositivi P4 e P100 e sono supportate per impostazione predefinita sui dispositivi H100 e successivi. Per tutti gli altri dispositivi, come i dispositivi T4 e L4, è necessaria una configurazione aggiuntiva. Per i passaggi per attivarli, vedi Raccolta GPM. Se raccolte nel job, queste metriche si trovano in "Utilizzo GPU GPM" nell'interfaccia di monitoraggio Dataflow.
Nozioni di base sulle metriche GPU di Dataflow
Tutte le metriche GPU vengono inviate dai worker Dataflow a
Cloud Monitoring. Le metriche per dispositivo sono disponibili nella sezione
dataflow.googleapis.com/worker/accelerator/gpu. Tutte queste metriche sono
raggruppate in categorie generali, come utilizzo o temperatura, e
hanno tutte le seguenti etichette:
- device_uuid: identifica in modo univoco il dispositivo GPU indipendentemente dal worker o dalla pipeline.
- device_number: il numero assegnato al dispositivo sul worker nell'intervallo [0, N), dove N è il numero di dispositivi GPU sul worker.
- device_model: il modello della GPU, ad esempio "Tesla T4".
Sia device_uuid che device_model sono indipendenti dal lavoratore e sono
sempre uguali per lo stesso dispositivo fisico. device_number è legato al modo in cui
viene identificato sul lavoratore.
Metriche GPU comuni per Dataflow
Le metriche comuni vengono segnalate da ogni job Dataflow con GPU. In Monitoring, tutti utilizzano il seguente formato:
dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME
La seguente tabella mostra ogni metrica e la relativa categoria, nome, unità e scopo.
| Metrica | Categoria | Nome | Unità | Descrizione |
|---|---|---|---|---|
| Percentuale in esecuzione del kernel | utilizzo | device_kernel_runtime | Percentuale | La percentuale di tempo in cui almeno un kernel è stato eseguito sulla GPU. Questo mostra solo che la GPU è stata utilizzata, non se le sue risorse di elaborazione vengono utilizzate in modo efficiente. |
| Percentuale di accesso alla memoria | utilizzo | device_memory_access | Percentuale | Percentuale di tempo in cui è stata letta o scritta la memoria del dispositivo. Mostra solo che è stato eseguito l'accesso alla memoria, non la percentuale di memoria in uso. |
| Limite di memoria | memoria | device_limit | MiB | La quantità di memoria disponibile sulla GPU. |
| Utilizzo memoria | memoria | device_usage | MiB | La quantità di memoria in uso da parte della GPU. Ciò include sia la memoria utilizzata dal job Dataflow sia la memoria riservata al firmware, quindi è previsto un certo utilizzo anche se non è ancora stata trasferita memoria alla GPU. |
| Errori ECC volatili correggibili | memory/ecc/volatile | device_correctable_total | Conteggio | Il numero di errori ECC correggibili (a un bit) dall'ultimo ricaricamento del driver. Per Dataflow, il ricaricamento del driver avviene solo all'avvio del worker, quindi equivale agli errori durante il ciclo di vita del worker. |
| Errori ECC volatili non correggibili | memory/ecc/volatile | device_uncorrectable_total | Conteggio | Il numero di errori ECC non correggibili (a doppio bit) dall'ultimo ricaricamento del driver. Per Dataflow, il ricaricamento del driver avviene solo all'avvio del worker, quindi equivale agli errori durante il ciclo di vita del worker. |
| Limite di potenza | power | device_limit | Watts | La quantità massima di energia che il dispositivo è impostato per utilizzare. Dataflow non modifica questo valore predefinito. |
| Utilizzo avanzato | power | device_usage | Watts | La quantità di energia utilizzata dal dispositivo. |
| Temperatura attuale | temperatura | device_current | Celsius | La temperatura attuale della GPU. |
| Temperatura di funzionamento massima | temperatura | device_max_op | Celsius | La temperatura al di sotto della quale deve rimanere la GPU. Se la temperatura attuale supera questo valore, i driver della GPU tenteranno di raffreddarla finché non scende al di sotto di questa temperatura. Dataflow non controlla questa impostazione. |
| Temperatura di rallentamento | temperatura | device_slowdown | Celsius | La temperatura alla quale la GPU inizierà a ridurre le prestazioni. Se la temperatura attuale supera questo valore, dovresti aspettarti un calo delle prestazioni finché non si raffredda. Dataflow non controlla questo aspetto. |
| Temperatura di spegnimento | temperatura | device_shutdown | Celsius | La temperatura alla quale la GPU si spegnerà. Se la temperatura attuale supera questo valore, il dispositivo non sarà più disponibile. Dataflow non controlla questa temperatura e non tenta attivamente di recuperare le GPU che si sono arrestate a causa di una temperatura eccessivamente elevata. |
| Clock SM attuale | orologio | device_sm_current | MHz | La velocità attuale del clock SM. Se la temperatura supera la soglia di rallentamento, questo valore potrebbe diminuire nell'ambito della limitazione correlata al raffreddamento. |
| Clock SM massimo | orologio | device_sm_max | MHz | La velocità massima del clock SM. |
| Current Memory Clock | orologio | device_memory_current | MHz | La velocità attuale del clock della memoria. Se la temperatura supera la soglia di rallentamento, questo valore potrebbe diminuire nell'ambito della limitazione correlata al raffreddamento. |
| Max Memory Clock | orologio | device_memory_max | MHz | La velocità massima del clock della memoria. |
Metriche GPM per Dataflow
Dataflow offre un certo supporto per le metriche GPM. Il livello di supporto dipende dal modello di GPU e dalla configurazione dell'acceleratore. Per impostazione predefinita, la maggior parte dei job Dataflow con GPU richiede una configurazione aggiuntiva.
Le metriche GPM seguono gli stessi principi di base delle metriche comuni.
Metriche supportate
Analogamente ai percorsi delle metriche comuni, i percorsi delle metriche GPM hanno il seguente formato:
dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME
Alcune di queste metriche rientrano nella stessa categoria di alcune metriche comuni.
| Metrica | Categoria | Nome | Unità | Descrizione |
|---|---|---|---|---|
| Attività SM | utilizzo | device_sm_activity | Percentuale | La percentuale di tempo in cui un warp è stato attivo sull'SM, calcolata in media in tutti gli SM sul dispositivo. È simile alla percentuale di esecuzione del kernel, ma offre un quadro più granulare che mostra meglio se le risorse della GPU vengono utilizzate in modo efficiente. NVIDIA definisce l'utilizzo efficace come pari o superiore all'80%, mentre l'utilizzo inefficace come pari o inferiore al 50%. |
| Occupazione SM | utilizzo | device_sm_occupancy | Percentuale | Percentuale di warp attivi sul dispositivo rispetto al massimo. I job con limiti di memoria dovrebbero avere un'occupazione superiore rispetto a quelli con limiti di calcolo e la metrica Percentuale di accesso alla memoria può fornire informazioni al riguardo. Per ulteriori dettagli, consulta la documentazione NVIDIA sull'occupazione raggiunta. |
| Attività di Tensor Pipe | utilizzo | device_tensor_pipe_activity | Percentuale | La percentuale di tempo in cui è stato utilizzato il canale Tensor Core. Valori più elevati indicano un maggiore utilizzo dei Tensor Core della GPU, che sono importanti per le operazioni con le matrici. |
| Attività della pipeline FP64 | utilizzo | device_fp64_pipe_activity | Percentuale | La percentuale di tempo in cui è stata utilizzata la pipeline del core FP64. Valori più elevati indicano un maggiore utilizzo dei core FP64 della GPU, che gestiscono operazioni scalari di valori in virgola mobile a 64 bit. |
| Attività pipe FP32 | utilizzo | device_fp32_pipe_activity | Percentuale | La percentuale di tempo durante il quale è stata utilizzata la pipeline del core FP32. Valori più elevati indicano un maggiore utilizzo dei core FP32 della GPU, che gestiscono operazioni scalari di valori in virgola mobile a 32 bit. |
| Attività pipe FP16 | utilizzo | device_fp16_pipe_activity | Percentuale | La percentuale di tempo in cui è stata utilizzata la pipeline FP16. A differenza di FP64 e FP32, che sono associati rispettivamente ai core CUDA a 64 bit e 32 bit, FP16 è associato allo sfruttamento delle funzionalità di mezza precisione dei Tensor Core. |
| Lettura PCIe | pcie | device_read | MiB/s | La velocità di lettura dei dati da parte della GPU dalla VM host tramite PCIe. |
| Trasferimento PCIe | pcie | device_transfer | MiB/s | La velocità di trasferimento dei dati dalla GPU alla VM host tramite PCIe. |
| Lettura NVLink | nvlink | device_read | MiB/s | La velocità di lettura dei dati da parte della GPU tramite NVLink. Poiché NVLink copre solo la comunicazione da GPU a GPU, questo non è pertinente se ogni worker ha una sola GPU. |
| Trasferimento NVLink | nvlink | device_transfer | MiB/s | La velocità di trasferimento dei dati dalla GPU tramite NVLink. Poiché NVLink copre solo la comunicazione da GPU a GPU, questo non è pertinente se ogni worker ha una sola GPU. |
Raccolta delle metriche GPM
Qualsiasi job Dataflow con GPU che utilizzano l'architettura Hopper o versioni successive (ad es. H100, H100 Mega) raccoglie le metriche GPM per impostazione predefinita, quindi non è necessaria alcuna configurazione aggiuntiva. Tuttavia, i job che utilizzano l'architettura Pascal o versioni precedenti (come P4 e P100) non supportano queste metriche.
Per tutti gli altri modelli, la raccolta di queste metriche richiede l'aggiunta di
install-gke-dcgm-exporter alla configurazione dell'acceleratore worker. Ad esempio:
--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"
Questo flag installa un equivalente gestito da GKE di NVIDIA DCGM-exporter. I seguenti tipi supportano questa opzione:
- nvidia-l4
- nvidia-tesla-a100
- nvidia-a100-80gb
- nvidia-tesla-t4
- nvidia-tesla-v100
Se viene fornito un altro tipo, il servizio Dataflow restituisce un errore durante la creazione del job. Questo controllo ti aiuta a evitare di eseguire il contenitore su job in cui non è utile per la raccolta delle metriche.
Metriche legacy
In Monitoring, potresti visualizzare due metriche denominate
dataflow.googleapis.com/job/gpu_utilization e
dataflow.googleapis.com/job/gpu_memory_utilization. Queste metriche sono simili
rispettivamente a Percentuale di esecuzione del kernel e Percentuale di accesso alla memoria, ma i worker le segnalano calcolando la media tra le GPU del worker. Ti
consigliamo di utilizzare gli equivalenti per dispositivo, soprattutto se i worker sono configurati
per avere più di una GPU.
UI di Dataflow
Se il job Dataflow ha GPU collegate ai suoi worker, le metriche dovrebbero essere visualizzate nella scheda "Metriche del job" nella pagina del job, nella categoria "Dataflow ML". Questa categoria non viene visualizzata nei job senza GPU e richiede alcuni secondi per il caricamento, perché verifica prima che le metriche siano pertinenti al job.
Le seguenti sottocategorie vengono visualizzate nella sezione "Dataflow ML":
| Sottocategoria | Metriche | Condizioni |
|---|---|---|
| Utilizzo GPU di base | Percentuale di esecuzione del kernel Percentuale di accesso alla memoria Memoria totale/utilizzata |
Tutti i job GPU |
| Prestazioni GPU | Assorbimento/limite di potenza Lettura/limiti di temperatura Clock SM attuale/massimo Clock di memoria attuale/massimo Errori ECC volatili correggibili/non correggibili |
Tutti i job GPU |
| Utilizzo GPM GPU | Attività SM Occupazione SM Attività pipe CUDA/Tensor |
Metriche GPM abilitate |
| I/O GPM GPU | Lettura/trasferimento PCIe Lettura/trasferimento NVLink |
Metriche GPM abilitate |
| Utilizzo GPU legacy | Metriche legacy | Tutti i job GPU |
Quando visualizzi le metriche non legacy, puoi filtrare i grafici in base a un nome di worker e a un numero del dispositivo GPU specifici. Il nome del worker è lo stesso della VM se visualizzato in Compute Engine. Il numero del dispositivo GPU è lo stesso delle etichette delle metriche. Puoi utilizzare questo filtro per controllare le metriche su un dispositivo GPU specifico, ad esempio per vedere quanto è vicino il suo consumo energetico al limite:
