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 hardware de GPU depende de si usas el modo Autopilot o Standard. En Autopilot, solicitas hardware de GPU especificando recursos de GPU en tus cargas de trabajo. En modo 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.

Administra la pila de GPU a través de GKE o el operador de GPU de NVIDIA en GKE

De forma predeterminada, GKE administra todo el ciclo de vida de los nodos de GPU, incluida la instalación automática de controladores de GPU, la supervisión de cargas de trabajo de GPU en GKE con el administrador de GPU del centro de datos (DCGM) de NVIDIA y las estrategias de uso compartido de GPU.

Te recomendamos que uses GKE para administrar tus nodos de GPU, ya que GKE administra por completo el ciclo de vida de los nodos de GPU. Para comenzar a usar GKE para la administración de nodos de GPU, elige una de las siguientes opciones:

El operador de GPU de NVIDIA se puede usar como alternativa a la compatibilidad con GPU completamente administrada en GKE en imágenes de nodos de Container-Optimized OS (COS) y Ubuntu. Selecciona esta opción si buscas una experiencia coherente entre varios proveedores de servicios en la nube, si ya usas el operador de GPU de NVIDIA o si usas el software que depende del operador de GPU de NVIDIA. Para obtener más información, consulta Administra la pila de GPU con el operador de GPU de NVIDIA.

Para seleccionar la mejor opción para tu caso de uso, consulta la siguiente tabla en la que se comparan los dos métodos para administrar nodos de GPU en GKE.

Descripción Usa GKE para administrar nodos de GPU Cómo usar el operador de GPU de NVIDIA en GKE
Administración del ciclo de vida del nodo de GPU (instalación, actualización) GKE lo administra por completo. Administrada por el usuario.
Instalación del controlador Instalación automática y manual de controladores de GPU Instalación manual de controladores de GPU
Selectores de nodos cloud.google.com/gke-gpu=true nvidia.com/gpu=true
Estrategias de uso compartido de la GPU
  • Servicio de varios procesos: No se admite.
Verificación del estado de los nodos de GPU
  • Activa la reparación de nodos en 15 minutos si el recuento de GPU asignable no es igual a la capacidad y la reparación automática está habilitada.
  • Supervisa todos los códigos de error de forma predeterminada.
  • Activa la reparación de nodos en 15 minutos si el recuento de GPU asignable no es igual a la capacidad y la reparación automática está habilitada.
Métricas y observabilidad
  • Con las métricas del sistema habilitadas, las siguientes métricas de GPU están disponibles en Cloud Monitoring: ciclo de trabajo, uso de memoria y capacidad de memoria.
  • DCGM autoadministrado proporcionado por el operador de GPU
  • Incluso cuando se habilitan las métricas del sistema de GPU de GKE, no se recopilan las métricas del sistema relacionadas con la GPU, como el ciclo de trabajo, el uso de memoria y la capacidad de memoria.

Optimiza el uso de recursos con 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, puedes compilar y usar tu propia imagen. Para ello, incluye los siguientes valores en la variable de entorno LD_LIBRARY_PATH en la especificación de tu contenedor:

  • /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.

    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.

  • /usr/local/nvidia/lib64: la ubicación de los controladores del dispositivo NVIDIA.
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 GPUs 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 el rendimiento de la carga de trabajo del nodo 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 a través de Google Cloud Managed Service para Prometheus. Para los clústeres de Autopilot, GKE instala los controladores. Para los clústeres de Standard, debes instalar los controladores NVIDIA.

Para obtener instrucciones sobre cómo implementar el paquete de DCGM administrado por GKE, consulta Recopila y visualiza métricas del administrador de GPU del centro de datos de NVIDIA (DCGM).

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 versiones posteriores, puedes configurar GKE para finalizar tus cargas de trabajo de forma ordenada y reducir las interrupciones.

Para comprender, configurar y supervisar los eventos de interrupción que pueden ocurrir en los nodos de GKE que ejecutan cargas de trabajo de IA/AA, consulta Administra la interrupción de nodos de GKE para GPUs y TPUs.

¿Qué sigue?