Puedes supervisar el uso, el rendimiento y el estado de la GPU configurando GKE para que envíe métricas del administrador de GPU del centro de datos de NVIDIA (DCGM) a Cloud Monitoring.
Cuando habilitas las métricas de DCGM, GKE instala la herramienta DCGM-Exporter, instala los controladores de GPU administrados por Google y, luego, implementa un recurso ClusterPodMonitoring para enviar métricas a Google Cloud Managed Service para Prometheus. En el caso de los clústeres nuevos de GKE creados con la versión 1.32.1-gke.1357000 o posterior, el paquete de métricas de DCGM está habilitado de forma predeterminada. En el caso de los clústeres que ejecutan versiones anteriores, puedes habilitar la recopilación de métricas de DCGM con la consola de Google Cloud , gcloud CLI o Terraform.
También puedes configurar DCGM autoadministrado si deseas personalizar el conjunto de métricas de DCGM o si tienes un clúster que no cumple con los requisitos para las métricas de DCGM administradas.
¿Qué es DCGM?
El administrador de GPU del centro de datos de NVIDIA (DCGM) es un conjunto de herramientas de NVIDIA que te permiten administrar y supervisar las GPU de NVIDIA. DCGM expone varias estructuras y contadores de observabilidad a través de lo que denomina fields
. Cada campo tiene un identificador simbólico y un número de campo.
Puedes encontrar una lista completa de ellos en NVIDIA DCGM list of Field IDs.
Si habilitas las métricas de DCGM en GKE, las métricas admitidas estarán disponibles automáticamente en Cloud Monitoring. Estas métricas proporcionan una vista integral de la utilización, el rendimiento y el estado de la GPU.
- Las métricas de uso de GPU son una indicación de lo ocupada está la GPU supervisada y si se usa de manera eficaz para procesar tareas. Esto incluye métricas para el procesamiento central, la memoria, las E/S y el uso de energía.
- Las métricas de rendimiento de la GPU hacen referencia a la eficacia y eficiencia con las que una GPU puede realizar una tarea de procesamiento. Esto incluye métricas para la velocidad de reloj y la temperatura.
- Las métricas de E/S de la GPU, como NVLink y PCIe, miden el ancho de banda de transferencia de datos.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components update
para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
Requisitos para las métricas del administrador de GPU del centro de datos de NVIDIA (DCGM)
Para recopilar métricas del administrador de GPU del centro de datos de NVIDIA (DCGM), tu clúster de GKE debe cumplir con los siguientes requisitos:
- Los clústeres deben ejecutar la versión 1.30.1-gke.1204000 de GKE o una posterior.
- Se debe habilitar la recopilación de métricas del sistema.
- Debe estar habilitada la recopilación administrada de Google Cloud Managed Service para Prometheus.
- Los grupos de nodos deben ejecutarse en controladores de GPU administrados por GKE. Esto significa que debes crear tus grupos de nodos con
default
olatest
para--gpu-driver-version
. - En la versión 1.32.0-gke.1764000 de GKE o versiones posteriores, se recopilan métricas de generación de perfiles para todos los tipos de GPU compatibles con GKE. En versiones anteriores de GKE, las métricas de generación de perfiles solo se recopilan para las GPU NVIDIA H100 de 80 GB.
Limitaciones
Si ejecutas un paquete de métricas del administrador de GPU del centro de datos de NVIDIA (DCGM) autoimplementado, debes dejar de recopilarlo antes de habilitar las métricas administradas del administrador de GPU del centro de datos de NVIDIA (DCGM). De lo contrario, podrías obtener métricas duplicadas o incorrectas.
Las métricas de DCGM administradas, incluidos sus manifiestos y sus imágenes de contenedor subyacentes, están diseñadas para funcionar solo en clústeres de GKE. No uses las métricas de DCGM administradas de forma independiente ni las ejecutes fuera de GKE.
Configura la recopilación de métricas de DCGM
Puedes habilitar GKE para que recopile métricas de DCGM para un clúster existente con la consola de Google Cloud , gcloud CLI o Terraform.
Console
Crea un grupo de nodos de GPU.
Debes usar Predeterminado o Más reciente para la instalación del controlador de GPU.
Ve a la página de Google Kubernetes Engine en la consola de Google Cloud .
Haz clic en el nombre de tu clúster.
Junto a Cloud Monitoring, haz clic en edit.
Selecciona
SYSTEM
yDCGM
.Haz clic en Guardar.
gcloud
Crea un grupo de nodos de GPU.
Debes usar
default
olatest
para--gpu-driver-version
.Actualiza tu clúster:
gcloud container clusters update CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --enable-managed-prometheus \ --monitoring=SYSTEM,DCGM
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clúster existente.COMPUTE_LOCATION
: la ubicación de Compute Engine del clúster.
Terraform
Para configurar la colección de métricas de DCGM mediante Terraform, consulta el bloque monitoring_config
en el registro de Terraform para google_container_cluster
.
Para obtener información general sobre el uso de Google Cloud con Terraform, consulta Terraform con Google Cloud.
Usa las métricas de DCGM
Puedes ver las métricas de DCGM con los paneles de la consola deGoogle Cloud o directamente en las páginas de descripción general y detalles del clúster. Para obtener más información, consulta Visualiza métricas de observabilidad.
Puedes ver las métricas con el panel de métricas de DCGM de Grafana. Para obtener más información, consulta Realiza consultas con Grafana. Si encuentras algún error, consulta Compatibilidad de la API.
Precios
Las métricas de DCGM usan Google Cloud Managed Service para Prometheus para cargar métricas en Cloud Monitoring. Cloud Monitoring cobra por la transferencia de estas métricas según la cantidad de muestras transferidas.
Para obtener más información, consulta los precios de Cloud Monitoring.
Cuota
Las métricas de DCGM consumen la cuota de solicitudes de transferencia de series temporales por minuto de la API de Cloud Monitoring. Antes de habilitar los paquetes de métricas, verifica tu uso máximo reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te acercaste al límite de esa cuota, puedes solicitar un aumento del límite de cuota antes de habilitar cualquiera de los paquetes de observabilidad.
Métricas de DCGM
Los nombres de las métricas de Cloud Monitoring en esta tabla deben tener el prefijo prometheus.googleapis.com/
. Este prefijo se omitió en las entradas de la tabla.
Junto con las etiquetas del recurso supervisado prometheus_target
, todas las métricas de DCGM recopiladas en GKE tienen las siguientes etiquetas adjuntas:
Etiquetas de GPU:
UUID
: Es el UUID del dispositivo de GPU.device
: Es el nombre del dispositivo de GPU.-
gpu
: Es el número de índice como un número entero del dispositivo de GPU en el nodo. Por ejemplo, si hay 8 GPUs adjuntas, este valor puede variar de0
a7
. modelName
: Es el nombre del modelo del dispositivo de GPU, comoNVIDIA L4
.
Etiquetas de Kubernetes:
container
: Es el nombre del contenedor de Kubernetes que usa el dispositivo de GPU.-
namespace
: Es el espacio de nombres de Kubernetes del Pod y el contenedor que usan el dispositivo de GPU. pod
: Es el Pod de Kubernetes que usa el dispositivo de GPU.
Nombre de la métrica de PromQL Nombre de la métrica de Cloud Monitoring |
|
---|---|
Categoría, tipo, unidad
Recursos supervisados Versión de GKE requerida |
Descripción |
DCGM_FI_DEV_FB_FREE DCGM_FI_DEV_FB_FREE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Búfer de fotogramas libre en MB. |
DCGM_FI_DEV_FB_TOTAL DCGM_FI_DEV_FB_TOTAL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es el búfer de fotogramas total de la GPU en MB. |
DCGM_FI_DEV_FB_USED DCGM_FI_DEV_FB_USED/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es el búfer de fotogramas utilizado en MB. |
DCGM_FI_DEV_GPU_TEMP DCGM_FI_DEV_GPU_TEMP/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Son las lecturas de temperatura actuales del dispositivo (en °C). |
DCGM_FI_DEV_GPU_UTIL DCGM_FI_DEV_GPU_UTIL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es el porcentaje de uso de la GPU. |
DCGM_FI_DEV_MEM_COPY_UTIL DCGM_FI_DEV_MEM_COPY_UTIL/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Porcentaje de uso de memoria. |
DCGM_FI_DEV_MEMORY_TEMP DCGM_FI_DEV_MEMORY_TEMP/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la temperatura de la memoria del dispositivo (en °C). |
DCGM_FI_DEV_POWER_USAGE DCGM_FI_DEV_POWER_USAGE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Uso de energía del dispositivo (en vatios). |
DCGM_FI_DEV_SM_CLOCK DCGM_FI_DEV_SM_CLOCK/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Frecuencia de reloj de SM (en MHz). |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter |
|
CUMULATIVE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Consumo total de energía de la GPU en mJ desde la última vez que se volvió a cargar el controlador. |
DCGM_FI_PROF_DRAM_ACTIVE DCGM_FI_PROF_DRAM_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que la interfaz de memoria del dispositivo está activa enviando o recibiendo datos. |
DCGM_FI_PROF_GR_ENGINE_ACTIVE DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de tiempo en que el motor de gráficos está activo. |
DCGM_FI_PROF_NVLINK_RX_BYTES DCGM_FI_PROF_NVLINK_RX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la tasa de datos de recepción (lectura) de NvLink activos en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_NVLINK_TX_BYTES DCGM_FI_PROF_NVLINK_TX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la tasa de datos activos de transmisión (tx) de NvLink en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_PCIE_RX_BYTES DCGM_FI_PROF_PCIE_RX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la tasa de datos activos de PCIe rx (lectura) en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_PCIE_TX_BYTES DCGM_FI_PROF_PCIE_TX_BYTES/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la tasa de datos de transmisión (tx) de PCIe activos en bytes, incluidos el encabezado y la carga útil. |
DCGM_FI_PROF_PIPE_FP16_ACTIVE DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que la canalización de fp16 está activa. |
DCGM_FI_PROF_PIPE_FP32_ACTIVE DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que la canalización de fp32 está activa. |
DCGM_FI_PROF_PIPE_FP64_ACTIVE DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que la canalización de FP64 está activa. |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que cualquier canalización de tensor está activa. |
DCGM_FI_PROF_SM_ACTIVE DCGM_FI_PROF_SM_ACTIVE/gauge |
|
GAUGE , DOUBLE , 1
prometheus_target
1.30.1-gke.1204000 |
Es la proporción de ciclos en los que un SM tiene al menos 1 warp asignado. |
Para ayudarte a comprender cómo se pueden usar estas métricas, las agrupamos de la siguiente manera:
Uso de procesamiento o de núcleos
Estas métricas te permiten identificar los dispositivos subutilizados y ajustar la asignación de GPU o de procesamiento para optimizar la utilización. Un uso bajo significa que es posible que estés pagando por más capacidad de GPU de la que necesitas. Estas métricas pueden ayudar a ahorrar costos, ya que consolidan el procesamiento en menos dispositivos.
DCGM_FI_DEV_GPU_UTIL
Esta métrica representa la fracción de tiempo que estuvo activa la GPU.
Uso esperado: Proporciona una descripción general de la utilización promedio de la GPU. Esta métrica es similar a DCGM_FI_PROF_GR_ENGINE_ACTIVE, que podría ser una métrica más precisa para el uso de la GPU.
DCGM_FI_PROF_GR_ENGINE_ACTIVE
Esta métrica representa qué tan ocupado estuvo el motor de gráficos en cada intervalo de muestreo. El valor se deriva de la cantidad promedio de ciclos activos en comparación con la cantidad máxima posible de ciclos disponibles durante el intervalo de muestreo. Por ejemplo, si, durante un intervalo de muestreo de un segundo, había 1,000 ciclos disponibles y, en promedio, 324 ciclos estaban activos (realizando trabajo), el valor de la métrica resultante sería 0.324. Esto se puede interpretar aproximadamente como un uso del (0.324 x 100) 32.4%.
Uso esperado: Proporciona una descripción general de la utilización promedio de la GPU. Los valores de uso constantemente altos indican que la GPU podría ser un cuello de botella que causa problemas de rendimiento del sistema. Los valores de utilización bajos de forma constante indican que la aplicación no está usando por completo la potencia de procesamiento disponible.
DCGM_FI_PROF_PIPE_FP16_ACTIVE
, DCGM_FI_PROF_PIPE_FP32_ACTIVE
,
DCGM_FI_PROF_PIPE_FP64_ACTIVE
, DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
Estas métricas representan la proporción de ciclos en los que cualquier canalización de GPU determinada está activa en relación con los ciclos máximos continuos transcurridos.
Uso esperado: Mide la eficacia con la que se usan las distintas canalizaciones de procesamiento de la GPU.
DCGM_FI_PROF_SM_ACTIVE
Esta métrica representa la fracción de tiempo en que al menos un warp estuvo activo en un SM(Streaming Multiprocessor), promediada en todos los SM. Por ejemplo, si la GPU tiene 80 SM disponibles y, durante el período de muestreo, 16 SM ejecutaron una warp, el valor de sm_active
resultante sería (16/80) 0.20, lo que se puede interpretar como que el 20% de los SM disponibles tenían una warp en ejecución.
Uso esperado: Proporciona una medida de cómo se utiliza el paralelismo de la GPU.
Uso de memoria
El uso principal de estas métricas es detectar cuándo los dispositivos de GPU no tienen suficiente memoria para las aplicaciones. Es posible que esas aplicaciones se beneficien de la asignación de más capacidad de GPU.
DCGM_FI_DEV_FB_FREE
, DCGM_FI_DEV_FB_USED
, DCGM_FI_DEV_FB_TOTAL
Estas métricas son para la memoria del búfer de fotogramas, que es la memoria de la GPU. Las métricas informan la memoria libre y la memoria utilizada, que suman el total. Y también la memoria total disponible.
Uso esperado: Determina los patrones de uso de la memoria de GPU. Esto te permite correlacionar el uso real de la memoria en la GPU con el uso esperado para determinar la eficiencia de la memoria de tu aplicación.
DCGM_FI_DEV_MEM_COPY_UTIL
Esta métrica representa la fracción de tiempo durante el último período de muestra en el que se leyó o escribió en la memoria global (dispositivo).
Uso esperado: Determina los patrones de transferencia de datos hacia y desde la memoria de la GPU. Los valores altos de esta métrica, combinados con valores bajos de las métricas de utilización de procesamiento, pueden indicar que la transferencia de memoria es el cuello de botella en las aplicaciones en ejecución.
DCGM_FI_PROF_DRAM_ACTIVE
Esta métrica representa la proporción de ciclos en los que la interfaz de memoria de la GPU envía o recibe datos. Esto incluye cargas y almacenamientos de subprocesos que se ejecutan en SM, así como copias de memoria hacia y desde la memoria de la GPU. Los valores más altos indican niveles más altos de tráfico de memoria.
Uso esperado:
Esta métrica es similar a la métrica DCGM_FI_DEV_MEM_COPY_UTIL
y podría ser más precisa.
Utilización de E/S
Las siguientes métricas proporcionan información sobre el uso de la transmisión de datos entre la GPU y el host, o entre varios dispositivos de GPU. Una forma de usar esas métricas es detectar cuándo una aplicación sobrecarga la interconexión. Debido a la naturaleza inherentemente repentina de este tipo de transmisión, podría valer la pena explorar datos de mayor resolución (p.ej., una distribución) para obtener una imagen más detallada del comportamiento de la interconexión.
DCGM_FI_PROF_NVLINK_RX_BYTES
, DCGM_FI_PROF_NVLINK_TX_BYTES
Estas métricas representan la capacidad de procesamiento de transmisión (tx) y recepción (rx) de NVLink en bytes.
Uso esperado: Haz un seguimiento de la carga en los conectores NVLink (entre chips de GPU). Si el valor de estas métricas se acerca al ancho de banda total disponible de NVLink y las métricas de utilización de procesamiento son bajas, esto podría indicar que NVLink es un cuello de botella en las aplicaciones en ejecución.
DCGM_FI_PROF_PCIE_RX_BYTES
, DCGM_FI_PROF_PCIE_TX_BYTES
Estas métricas representan la capacidad de procesamiento de transmisión (tx) y recepción (rx) de PCIe en bytes, donde tx es la GPU que transmite datos y rx es la GPU que recibe datos.
Uso esperado: Haz un seguimiento de la carga en el bus PCIe (entre la CPU y la GPU). Si los valores de estas métricas se acercan al ancho de banda total del bus PCIe y las métricas de utilización de procesamiento son bajas, esto podría indicar que el bus PCIe es un cuello de botella en las aplicaciones en ejecución.
Utilización de energía
Las siguientes métricas proporcionan información sobre el uso de energía de la GPU, que a veces es fundamental para el rendimiento y la eficiencia de la carga de trabajo.
DCGM_FI_DEV_GPU_TEMP
Esta métrica representa la temperatura promedio en todos los núcleos de GPU.
Uso esperado: Realiza un seguimiento de cuándo la GPU está cerca de sobrecalentarse, principalmente para correlacionar con la regulación de la velocidad del reloj. También puedes usar esta métrica para identificar las GPUs propensas al sobrecalentamiento para una carga más ligera en aplicaciones más avanzadas.
DCGM_FI_DEV_POWER_USAGE
Esta métrica representa el consumo de energía de la GPU en vatios. Es posible que desees hacer un seguimiento del uso de energía como una métrica de GPU ocupada. Las GPU de NVIDIA ajustan los relojes del motor según la cantidad de trabajo que realizan. A medida que aumenta la velocidad del reloj (y, por lo tanto, la utilización), también aumenta el consumo de energía.
Uso esperado: Realiza un seguimiento de la cantidad de energía que usa la GPU para las aplicaciones del usuario.
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
Esta métrica representa el consumo total de energía de la GPU en milijulios (mJ) después de la última recarga del controlador. La tasa calculada para esta métrica debe corresponder a la métrica de consumo de energía.
Uso esperado: Realiza un seguimiento de la cantidad de energía que usa la GPU para las aplicaciones del usuario.
Métricas de rendimiento de la GPU
El rendimiento de la GPU se refiere a la eficacia y eficiencia con las que una GPU puede realizar una tarea de procesamiento.
DCGM_FI_DEV_MEMORY_TEMP
Esta métrica indica la temperatura promedio del bloque de memoria.
Uso esperado: Para mostrar la temperatura del bloque de memoria y correlacionarla con la temperatura de la GPU
DCGM_FI_DEV_SM_CLOCK
Esta métrica representa la velocidad de reloj promedio en todos los SM. Esta métrica se calcula en un intervalo de tiempo especificado.
Uso esperado: Haz un seguimiento de la velocidad de reloj para detectar el límite y correlacionarlo con el rendimiento de la aplicación.
¿Qué sigue?
- Obtén más información sobre cómo ver las métricas de observabilidad.