Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un posizionamento efficiente e l'ottimizzazione dei carichi di lavoro GPU spesso richiedono visibilità su utilizzo e prestazioni delle risorse. Le metriche della GPU gestite nel servizio Azure Kubernetes (anteprima) offrono raccolta e esposizione automatizzata di dati di utilizzo, memoria e prestazioni della GPU nei pool di nodi abilitati per GPU NVIDIA. In questo modo gli amministratori della piattaforma possono ottimizzare le risorse del cluster e gli sviluppatori per ottimizzare ed eseguire il debug dei carichi di lavoro con strumentazione manuale limitata.
In questo articolo vengono fornite informazioni sulle metriche GPU raccolte dall'utilità di esportazione NVIDIA Data Center GPU Manager (DCGM) con un pool di nodi completamente gestito e abilitato per le GPU (in anteprima) in Servizio Azure Kubernetes (AKS).
Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Prerequisiti
- Un cluster del servizio Azure Kubernetes con un pool di nodi abilitato per GPU completamente gestito (anteprima) e GPU programmabili confermate.
- Un carico di lavoro GPU di esempio distribuito nel pool di nodi.
- Azure Managed Prometheus abilitato nel cluster AKS.
Verificare che i componenti GPU gestiti siano installati
Dopo aver creato il pool di nodi GPU NVIDIA gestito (anteprima) seguendo queste istruzioni, verificare che i componenti software GPU siano stati installati con il comando az aks nodepool show :
az aks nodepool show \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--name <node-pool-name> \
L'output deve includere i valori seguenti:
...
"gpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
...
...
}
},
...
...
Personalizzare la raccolta delle metriche della GPU in Prometheus gestito da Azure
Creare e applicare un oggetto ConfigMap che abilita un profilo di scorporo per le metriche GPU NVIDIA da dcgm-exporter nell'agente di Monitoraggio di Azure nello spazio dei nomi kube-system, simile al seguente:
cat <<EOF | kubectl create -f -
kind: ConfigMap
apiVersion: v1
data:
schema-version:
v1
config-version:
ver1
default-scrape-settings-enabled: |-
dcgmexporter = true
metadata:
name: ama-metrics-settings-configmap
namespace: kube-system
EOF
Note
Dopo che questo oggetto ConfigMap viene applicato una volta nel cluster del servizio Azure Kubernetes, tutti i pool di nodi GPU NVIDIA esistenti e nuovi aggiunti al cluster vengono scorporati automaticamente.
Disabilitare lo scraping automatico delle metriche GPU in Azure Managed Prometheus
Per disabilitare lo scraping delle metriche di NVIDIA DCGM da parte dell'agente Prometheus gestito da Monitoraggio di Azure (AMA), modificare lo stesso file ConfigMap. I tuoi carichi di lavoro GPU non sono interessati.
Esegui questo comando:
kubectl edit configmap ama-metrics-settings-configmap -n kube-system
Aggiornare l'impostazione dcgmexporter da true a false:
...
...
default-scrape-settings-enabled: |-
dcgmexporter = false
...
...
Le metriche NVIDIA DCGM non vengono più visualizzate in Monitoraggio di Azure o In Esplora metriche.
Monitorare le metriche GPU nel portale di Azure
Dopo aver creato un'area di lavoro Monitoraggio di Azure per il cluster AKS, vai al portale Azure e apri Monitoraggio di Azure>Dashboard con Grafana nella tua area di lavoro Monitoraggio di Azure.
Usando la barra di ricerca, filtrare per la dashboard Grafana
Kubernetes | NVIDIA GPU DCGM Exportercon il tagAzure-managed.Selezionare questa dashboard e verificare che gli oggetti
ClusterePrometheus Datasourceselezionati corrispondano ai pool di nodi abilitati per GPU. È ora possibile visualizzare le metriche GPU in tempo reale, come illustrato nell'immagine seguente:
Informazioni sulle metriche GPU
Metriche di utilizzo GPU
Le metriche di utilizzo della GPU mostrano la percentuale di tempo in cui i core della GPU stanno elaborando attivamente il lavoro. I valori elevati indicano che la GPU viene usata molto, che in genere è consigliabile per carichi di lavoro come il training o l'elaborazione dei dati. L'interpretazione di questa metrica deve considerare il tipo di carico di lavoro: il training di intelligenza artificiale mantiene in genere un elevato livello di utilizzo, mentre l'inferenza può avere un livello di utilizzo intermittente a causa del traffico a scatti.
Utilizzo memoria: mostra la percentuale di memoria GPU in uso. Un utilizzo elevato della memoria senza un utilizzo elevato della GPU può indicare carichi di lavoro associati alla memoria in cui la GPU attende i trasferimenti di memoria. Un utilizzo ridotto della memoria con un utilizzo ridotto può suggerire che il carico di lavoro sia troppo piccolo per sfruttare completamente la GPU.
Efficienza sm (multiprocessore di streaming): misura l'efficienza con cui vengono usati i core della GPU. Un'efficienza SM bassa indica che i core sono inattivi o sottoutilizzati a causa dello squilibrio del carico di lavoro o di un kernel progettato in modo non ottimale. L'efficienza elevata è ideale per le applicazioni a elevato utilizzo di calcolo.
Metriche di memoria
Utilizzo della larghezza di banda della memoria: riflette la quantità di larghezza di banda teorica utilizzata. L'utilizzo elevato della larghezza di banda con un utilizzo di calcolo ridotto può indicare un carico di lavoro associato alla memoria. Viceversa, l'utilizzo elevato sia nella larghezza di banda di calcolo che nella larghezza di banda della memoria suggerisce un carico di lavoro ben bilanciato.
Errori di memoria: tiene traccia degli errori di codice di correzione (ECC) se vengono abilitati. Un numero elevato di errori può indicare problemi di riduzione dell'hardware o termica e deve essere monitorato per l'affidabilità.
Metriche relative alla temperatura e all'alimentazione
Temperatura GPU: indica la temperatura operativa della GPU. Temperature elevate sostenute possono attivare la limitazione termica, riducendo le prestazioni. L'interpretazione ideale di questa metrica implica l'osservazione della temperatura rispetto ai limiti di temperatura e alla capacità di raffreddamento della GPU.
Consumo di energia: Mostra il prelievo istantaneo di potenza. Il confronto dell'utilizzo di energia con TDP (Thermal Design Power) consente di capire se la GPU viene spinta ai limiti. Un calo improvviso di potenza può indicare limitazioni o sottoutilizzo.
Orologi e le metriche di frequenza
Clock GPU: frequenza operativa effettiva della GPU. In combinazione con l'utilizzo, ciò consente di determinare se la GPU è limitata o sottoperforma rispetto alle sue capacità.
Clock di memoria: frequenza operativa della memoria GPU. I carichi di lavoro associati alla memoria possono trarre vantaggio da clock di memoria più elevati; una mancata corrispondenza tra memoria e utilizzo di calcolo può evidenziare i colli di bottiglia.
Metriche PCIe e NVLink
Larghezza di banda PCIe: misura la velocità effettiva sul bus PCIe. Un basso utilizzo con carichi di lavoro pesanti può suggerire che la comunicazione CPU-GPU non sia un collo di bottiglia. Un utilizzo elevato può indicare limitazioni nel trasferimento dei dati che influenzano le prestazioni.
Larghezza di banda NVLink: questa metrica è simile alla larghezza di banda PCIe, ma specifica per le interconnessioni NVLink e pertinente nei sistemi multi-GPU per la comunicazione tra GPU. Un utilizzo NVLink elevato con un utilizzo ridotto di SM può indicare ritardi di sincronizzazione o trasferimento dei dati.
Metriche di errore e affidabilità
Pagine ritirate ed errori XID: tenere traccia degli errori di memoria GPU e degli errori critici. Le occorrenze frequenti segnalano potenziali errori hardware e richiedono attenzione per carichi di lavoro a esecuzione prolungata.
Linee guida per l'interpretazione
Le metriche DCGM devono essere interpretate contestualmente in base al tipo di carico di lavoro su AKS. Un carico di lavoro a elevato utilizzo di calcolo dovrebbe idealmente mostrare un utilizzo elevato della GPU e degli SM, un elevato utilizzo della larghezza di banda della memoria, temperature stabili al di sotto delle soglie di limitazione e un assorbimento di potenza vicino, ma inferiore al TDP.
I carichi di lavoro associati alla memoria potrebbero mostrare un utilizzo elevato della memoria e una larghezza di banda, ma un utilizzo di calcolo inferiore. Le anomalie, ad esempio un basso utilizzo con un consumo elevato di temperatura o energia, spesso indicano limitazioni, pianificazione inefficiente o colli di bottiglia a livello di sistema.
Il monitoraggio delle tendenze nel tempo anziché degli snapshot singoli è fondamentale. Un calo improvviso dell'utilizzo o dei picchi negli errori spesso rivela i problemi sottostanti prima di influire sui carichi di lavoro di produzione. Il confronto delle metriche tra più GPU può anche aiutare a identificare gli outlier o i dispositivi che si comportano in modo errato in un pool di nodi. Comprendere queste metriche in combinazione, anziché l'isolamento, offre informazioni più chiare sull'efficienza della GPU e sulle prestazioni del carico di lavoro.
Metriche GPU comuni
Le metriche NVIDIA DCGM seguenti vengono comunemente valutate per le prestazioni dei pool di nodi GPU in Kubernetes:
| Nome della metrica GPU | Meaning | Intervallo/indicatore tipico | Suggerimento sull'utilizzo |
|---|---|---|---|
DCGM_FI_DEV_GPU_UTIL |
Utilizzo della GPU (% tempo in cui i core GPU sono attivi) | 0-100% (superiore è migliore) | Monitorare su base di singolo nodo e pod; valori bassi possono indicare colli di bottiglia della CPU o dell'I/O |
DCGM_FI_DEV_SM_UTIL |
Efficienza del multiprocessore di streaming (% core attivi) | 0-100% | Valori bassi con utilizzo elevato della memoria indicano un carico di lavoro associato alla memoria |
DCGM_FI_DEV_FB_USED |
Memoria framebuffer usata (byte) | Da 0 alla memoria complessiva | Usare i limiti di memoria GPU dei pod e tenere traccia dell'utilizzo della memoria per pod |
DCGM_FI_DEV_FB_FREE |
Memoria GPU libera (byte) | Da 0 alla memoria complessiva | Utile per la pianificazione e per evitare errori OOM |
DCGM_FI_DEV_MEMORY_UTIL |
% utilizzo memoria | 0-100% | Combinare con l'utilizzo della GPU/SM per determinare i carichi di lavoro associati alla memoria |
DCGM_FI_DEV_MEMORY_CLOCK |
Frequenza di clock della memoria corrente (MHz) | Da 0 alla massima frequenza di memoria | Valori bassi con un'elevata utilizzazione della memoria possono indicare una limitazione |
DCGM_FI_DEV_POWER_USAGE |
Utilizzo istantaneo dell'energia (Watt) | Da 0 a TDP | Il calo delle prestazioni durante l'utilizzo elevato può indicare una limitazione |
DCGM_FI_DEV_TEMPERATURE |
Temperatura GPU (°C) | ~30-85°C normale | Avviso sulle temperature elevate sostenute |
DCGM_FI_DEV_NVLINK_RX |
Utilizzo della larghezza di banda di ricezione NVLink (%) | 0-100% | Collo di bottiglia della sincronizzazione con più GPU se elevato con un utilizzo ridotto di SM |
DCGM_FI_DEV_XID_ERRORS |
Errori critici della GPU segnalati dal driver | In genere 0 | È richiesta un'indagine immediata; applicare un taint al nodo in Kubernetes |
Per informazioni sulla suite completa di metriche GPU, vedere la documentazione upstream di NVIDIA DCGM .
Passaggi successivi
- Informazioni sulle procedure consigliate per l'osservabilità della GPU su AKS
- Monitora l'integrità del nodo GPU con Node Problem Detector (NPD)
- Creare pool di nodi GPU a più istanze nel cluster del servizio Azure Kubernetes