Acerca de las GPU en Google Kubernetes Engine (GKE)


En esta página, se proporciona información sobre las opciones para solicitar GPU en Google Kubernetes Engine (GKE), incluidas las siguientes:

En GKE, la forma en que solicitas el hardware de GPU depende de si usas Autopilot o Standard. En Autopilot, debes solicitar el hardware de GPU mediante la especificación de los recursos de GPU en tus cargas de trabajo. En GKE Standard, puedes conectar hardware de GPU a nodos en tus clústeres y, luego, asignar recursos de GPU a cargas de trabajo alojadas en contenedores que se ejecutan en esos nodos. Para obtener instrucciones para conectar y usar las GPUs en tus cargas de trabajo, consulta Implementa cargas de trabajo de GPU en Autopilot o Ejecuta GPU en grupos de nodos estándar.

El hardware de GPU disponible para su uso en GKE es un subconjunto de las GPUs de Compute Engine para cargas de trabajo de procesamiento. El hardware específico disponible depende de la región o zona de Compute Engine del clúster. Para obtener información sobre la disponibilidad específica, consulta Regiones y zonas de GPU.

GKE ofrece algunas funciones específicas de la GPU para mejorar el uso eficiente de los recursos de GPU de las cargas de trabajo que se ejecutan en tus nodos, incluido el uso compartido de tiempo, las GPUs de varias instancias y de varias instancias, y las GPUs con NVIDIA MPS.

Planifica la cuota de GPU

Tu cuota de GPU es la cantidad máxima de GPU que puedes ejecutar en tu proyecto de Google Cloud. Para usar GPU en tus clústeres de GKE, tu proyecto debe tener una cuota de GPU suficiente.

Tu cuota de GPU debe ser, al menos, equivalente a la cantidad total de GPU que quieres ejecutar en tu clúster. Si habilitas el ajuste de escala automático del clúster, debes solicitar una cuota de GPU que sea, al menos, equivalente a la cantidad máxima de nodos de tu clúster multiplicado por la cantidad de GPU por nodo.

Por ejemplo, si esperas usar tres nodos con dos GPU cada uno, seis es la cuota de GPU requerida para tu proyecto.

Para solicitar una cuota de GPU adicional, sigue las instrucciones en Solicita un límite de cuota más alto con gpus como la métrica.

Elige la compatibilidad con GPU mediante Autopilot o Standard

Las GPU están disponibles en clústeres de Autopilot y Standard. Te recomendamos que uses los clústeres de Autopilot para obtener una experiencia de Kubernetes completamente administrada. En Autopilot, GKE administra la instalación del controlador, el escalamiento de nodos, el aislamiento de Pods y el aprovisionamiento de nodos.

En la siguiente tabla, se proporciona una descripción general de las diferencias entre la asistencia de Autopilot y Standard GPU:

Descripción Autopilot Estándar
Solicita hardware de GPU Especifica los recursos de GPU en tus cargas de trabajo. Adjunta el hardware de GPU a los nodos de tus clústeres y, luego, asigna los recursos de GPU a las cargas de trabajo en contenedores que se ejecutan en esos nodos.
Disponibilidad del hardware de GPU
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 (40 GB)
  • NVIDIA A100 (80 GB)
  • NVIDIA H100 de 80 GB
Todos los tipos de GPU compatibles con Compute Engine
Selecciona una GPU Solicitas una cantidad y un tipo de GPU en la especificación de la carga de trabajo. De forma predeterminada, Autopilot instala el controlador predeterminado para esa versión de GKE y administra tus nodos. Si deseas seleccionar una versión de controlador específica en Autopilot, consulta Selección de controladores NVIDIA para Pods de GPU de Autopilot. Realiza los pasos descritos en Ejecuta GPU en grupos de nodos estándar:
  1. Crea un grupo de nodos con el tipo de GPU específico y el tipo de máquina de Compute Engine correspondiente, y elige un controlador para instalar.
  2. Instala de forma manual los controladores de GPU en los nodos si no usaste la instalación automática
  3. Solicita las cantidades de GPU en la especificación del Pod
Mejora el uso de GPU
Seguridad GPU con GKE Sandbox GPU con GKE Sandbox
Precios Precios del Pod de GPU de Autopilot Precios de GPU de Compute Engine

Para elegir el modo de operación de GKE que se adapte mejor a tus cargas de trabajo, consulta Elige un modo de operación de GKE.

Optimiza el uso de recursos mediante las funciones de GPU en GKE

De forma predeterminada, Kubernetes solo admite la asignación de GPU como unidades completas a los contenedores, pero GKE proporciona funciones adicionales que puedes usar para optimizar el uso de recursos de tus cargas de trabajo de GPU.

Las siguientes funciones están disponibles en GKE para reducir la cantidad de recursos de GPU con poco uso:

Características de las GPU
GPU de instancias múltiples

Disponible en: Autopilot y Standard

Divide una sola GPU en hasta siete instancias separadas por hardware que se puedan asignar como GPUs individuales a los contenedores de un nodo. Cada contenedor asignado obtiene los recursos disponibles para esa instancia.

GPU de tiempo compartido

Disponible en: Autopilot y Standard

Presenta una sola GPU como varias unidades a varios contenedores en un nodo. El controlador de GPU cambia de contexto y asigna los recursos de GPU completos a cada contenedor asignado según sea necesario con el tiempo.

NVIDIA MPS

Disponible en: Standard

Comparte una sola GPU física de NVIDIA en varios contenedores. NVIDIA MPS es una implementación alternativa y compatible con el objeto binario de la API CUDA, que está diseñada para habilitar de manera transparente las aplicaciones CUDA de procesos múltiples cooperativos para que se ejecuten de forma simultánea en un solo dispositivo de GPU.

Accede a las bibliotecas NVIDIA CUDA-X para las aplicaciones CUDA

CUDA es una plataforma de procesamiento paralela de NVIDIA y un modelo de programación para las GPU. Para usar aplicaciones CUDA, la imagen que uses debe tener las bibliotecas. Para agregar las bibliotecas NVIDIA CUDA-X, usa cualquiera de los siguientes métodos:

  • Recomendado: usa una imagen con las bibliotecas NVIDIA CUDA-X preinstaladas. Por ejemplo, puedes usar contenedores de aprendizaje profundo. Estos contenedores instalan previamente los frameworks de ciencia de datos clave, las bibliotecas y las herramientas NVIDIA CUDA-X. Como alternativa, la imagen CUDA de NVIDIA contiene solo las bibliotecas NVIDIA CUDA-X.
  • Compila y usa tu propia imagen. En este caso, incluye los siguientes valores en la variable de entorno LD_LIBRARY_PATH en la especificación de tu contenedor:
    1. /usr/local/cuda-CUDA_VERSION/lib64: la ubicación de las bibliotecas NVIDIA CUDA-X en el nodo. Reemplaza CUDA_VERSION por la versión con imágenes CUDA-X que usaste. Algunas versiones también contienen utilidades de depuración en /usr/local/nvidia/bin. Para obtener más información, consulta la imagen CUDA de NVIDIA en DockerHub.
    2. /usr/local/nvidia/lib64: la ubicación de los controladores del dispositivo NVIDIA.

Si deseas verificar el controlador de GPU mínimo necesario para tu versión de CUDA, consulta el kit de herramientas CUDA y las versiones de controladores compatibles. Asegúrate de que la versión del parche de GKE que se ejecuta en tus nodos incluya una versión del controlador de GPU compatible con la versión de CUDA elegida. Para obtener una lista de las versiones del controlador de GPU asociadas con la versión de GKE, consulta la página de Container-Optimized OS correspondiente vinculada en la tabla de versiones actuales de GKE.

En los clústeres Autopilot, GKE administra la selección y la instalación de la versión del controlador.

Supervisa los nodos de GPU

Si tu clúster de GKE tiene habilitadas las métricas del sistema, las siguientes métricas están disponibles en Cloud Monitoring para supervisar el rendimiento de tu carga de trabajo de GPU:

  • Ciclo de trabajo (container/accelerator/duty_cycle): Porcentaje de tiempo durante el último período de muestra (10 segundos) durante el cual el acelerador se procesaba de forma activa. Entre 1 y 100.
  • Uso de memoria (container/accelerator/memory_used): cantidad de memoria del acelerador asignada en bytes.
  • Capacidad de memoria (container/accelerator/memory_total): Memoria total del acelerador en bytes.

Puedes usar paneles predefinidos para supervisar tus clústeres con nodos de GPU. Para obtener más información, consulta Visualiza métricas de observabilidad. Para obtener información general sobre la supervisión de los clústeres y sus recursos, consulta Observabilidad para GKE.

Visualiza las métricas de uso de las cargas de trabajo

Puedes ver las métricas de uso de GPU de tu carga de trabajo desde el panel de Cargas de trabajo en la consola de Google Cloud.

Para ver el uso de GPU de tu carga de trabajo, realiza los siguientes pasos:

  1. Ve a la página Cargas de trabajo en la consola de Google Cloud.

    Ir a Cargas de trabajo
  2. Selecciona una carga de trabajo.

El panel de las cargas de trabajo muestra los gráficos para el uso y la capacidad de la memoria de GPU y el ciclo de trabajo de GPU.

Visualiza las métricas del administrador de GPU del centro de datos de NVIDIA (DCGM)

Puedes recopilar y visualizar métricas de NVIDIA DCGM mediante Google Cloud Managed Service para Prometheus. Para los clústeres de Standard, debes instalar los controladores NVIDIA. Para los clústeres de Autopilot, GKE instala los controladores.

Para obtener instrucciones sobre cómo implementar DCGM y el exportador de DCGM de Prometheus, consulta Administrador de GPU del centro de datos de NVIDIA (DCGM) en la documentación de Google Cloud Observability.

Controla las interrupciones debidas al mantenimiento de los nodos

Los nodos de GKE que alojan las GPU están sujetos a eventos de mantenimiento o demás interrupciones que pueden causar el cierre de los nodos.

En los clústeres de GKE con el plano de control que ejecuta la versión 1.29.1-gke.1425000 y posteriores, puedes reducir las interrupciones de las cargas de trabajo si configuras GKE para finalizar tus cargas de trabajo de forma correcta.

Puedes configurar GKE para que envíe una señal SIGTERM a los Pods en nodos que están a punto de cerrarse, lo que les permite un período de gracia para finalizar cualquier trabajo en curso antes de su expulsión. En el campo spec.terminationGracePeriodSeconds del manifiesto de tu Pod, especifica la cantidad de segundos hasta un máximo de 3600 segundos (una hora). GKE hace su mejor esfuerzo para finalizar estos Pods de forma correcta y ejecutar la acción de finalización que definiste, por ejemplo, guardar un estado de entrenamiento.

GKE respeta cualquier configuración de hasta 60 minutos para la configuración PodDisruptionBudget o terminationGracePeriodSeconds. Para obtener más información, incluida la forma en que interactúan esas dos opciones de configuración, consulta Configura la finalización ordenada de los nodos de GPU.

¿Qué sigue?