Acerca de las GPUs en Google Kubernetes Engine (GKE)

En esta página se describen las GPUs de Google Kubernetes Engine (GKE) para ayudarte a seleccionar la configuración de GPU óptima para tus cargas de trabajo. Si quieres desplegar cargas de trabajo de GPU que usen Slurm, consulta Crear un clúster de Slurm optimizado para IA.

Puedes usar GPUs para acelerar tareas que consuman muchos recursos, como el aprendizaje automático y el procesamiento de datos. La información de esta página puede ayudarte a hacer lo siguiente:

  • Asegúrate de que las GPUs estén disponibles cuando las necesites.
  • Decide si quieres usar GPUs en clústeres del modo Autopilot de GKE o del modo Estándar de GKE.
  • Elige funciones relacionadas con la GPU para usar de forma eficiente su capacidad.
  • Monitoriza las métricas de los nodos de GPU.
  • Mejora la fiabilidad de las cargas de trabajo de la GPU gestionando las interrupciones de forma más eficaz.

Esta página está dirigida a administradores y operadores de plataformas y a ingenieros de aprendizaje automático (ML) que quieran asegurarse de que la infraestructura de aceleradores esté optimizada para sus cargas de trabajo.

Antes de leer esta página, asegúrese de que conoce los siguientes conceptos:

Selección de GPU en GKE

En GKE, la forma de solicitar hardware de GPU depende de si utilizas el modo Autopilot o el modo Estándar. En Autopilot, puedes solicitar hardware de GPU especificando recursos de GPU en tus cargas de trabajo. En el modo Estándar de GKE, puedes conectar hardware de GPU a los nodos de tus clústeres y, a continuación, asignar recursos de GPU a las cargas de trabajo contenerizadas que se ejecutan en esos nodos. Para obtener instrucciones detalladas sobre cómo asociar y usar GPUs en tus cargas de trabajo, consulta Desplegar cargas de trabajo de GPU en Autopilot o Ejecutar GPUs en grupos de nodos estándar.

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

En esta página se describen las opciones para solicitar GPUs en GKE, entre las que se incluyen las siguientes:

Modelos de GPU disponibles

El hardware de GPU que se puede usar en GKE es un subconjunto de los modelos de GPU disponibles en Compute Engine. El hardware específico que está disponible depende de la región o la zona de Compute Engine de tu clúster. Para obtener más información sobre la disponibilidad específica, consulta Regiones y zonas de las GPUs.

Para obtener información sobre los precios de las GPUs, consulta las Google Cloud SKUs y la página de precios de las GPUs.

Cuota de GPUs del plan

Tu cuota de GPU es el número máximo de GPUs que pueden ejecutarse en tuGoogle Cloud proyecto. Para usar GPUs en tus clústeres de GKE, tu proyecto debe tener suficiente cuota de GPU. Consulta la página Cuotaspara comprobar que tienes suficientes GPUs disponibles en tu proyecto.

Tu cuota de GPU debe ser al menos igual al número total de GPUs que quieras ejecutar en tu clúster. Si habilitas el autoescalado de clústeres, debes solicitar una cuota de GPU que sea al menos equivalente al número máximo de nodos de tu clúster multiplicado por el número de GPUs por nodo.

Por ejemplo, si tienes previsto usar tres nodos con dos GPUs cada uno, la cuota de GPUs que necesita tu proyecto es seis.

Para solicitar una cuota de GPU adicional, sigue las instrucciones para solicitar un ajuste de cuota y usa gpus como métrica.

Elegir la compatibilidad con GPUs mediante Autopilot o Standard

Las GPUs están disponibles en los clústeres Autopilot y Standard.

Práctica recomendada:

Usa clústeres de Autopilot para disfrutar de una experiencia de Kubernetes totalmente gestionada. En Autopilot, GKE gestiona la instalación de controladores, el escalado de nodos, el aislamiento de pods y el aprovisionamiento de nodos.

En la siguiente tabla se resumen las diferencias entre la compatibilidad con GPU de Autopilot y la estándar:

Descripción Autopilot Estándar
Solicitar hardware de GPU Especifica los recursos de GPU en tus cargas de trabajo. Monta hardware de GPU en los nodos de tus clústeres y, a continuación, asigna recursos de GPU a las cargas de trabajo contenerizadas 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 80 GB
  • NVIDIA H200 141 GB
  • NVIDIA B200
  • NVIDIA GB200
Todos los tipos de GPU compatibles con Compute Engine
Seleccionar una GPU Solicitas una cantidad y un tipo de GPU en la especificación de tu carga de trabajo. De forma predeterminada, Autopilot instala el controlador predeterminado para esa versión de GKE y gestiona tus nodos. Para seleccionar una versión específica del controlador en Autopilot, consulta Selección de controladores de NVIDIA para pods de GPU de Autopilot. Sigue los pasos descritos en Ejecutar GPUs en grupos de nodos Standard:
  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 manualmente los controladores de la GPU en los nodos si no has usado la instalación automática.
  3. Solicita cantidades de GPU en la especificación del pod.
Mejorar el uso de la GPU
Seguridad
Precios Precios de los pods de GPU de Autopilot Precios de GPUs de Compute Engine

Para elegir el modo de funcionamiento de GKE que mejor se adapte a tus cargas de trabajo, consulta Elegir un modo de funcionamiento de GKE.

Consumir GPUs

GKE ofrece opciones de consumo de GPUs que varían en función de los requisitos de tu carga de trabajo. Consulta la página Acerca de las opciones de consumo de aceleradores para cargas de trabajo de IA y aprendizaje automático en GKE para elegir la opción que mejor se adapte a tu caso práctico.

Gestionar la pila de GPU a través de GKE o del operador de GPU de NVIDIA en GKE

De forma predeterminada, GKE gestiona todo el ciclo de vida de los nodos de GPU, lo que incluye la instalación automática de los controladores de GPU, la monitorización de las cargas de trabajo de GPU en GKE con NVIDIA Data Center GPU Manager (DCGM) y las estrategias de uso compartido de GPU.

Práctica recomendada:

Usa GKE para gestionar tus nodos de GPU, ya que GKE gestiona por completo el ciclo de vida de los nodos de GPU.

Para empezar a usar GKE para gestionar nodos de GPU, elige una de las siguientes opciones:

El operador de GPU NVIDIA se puede usar como alternativa a la compatibilidad con GPU totalmente gestionada en GKE tanto en imágenes de nodo de Container-Optimized OS (COS) como de Ubuntu. Selecciona esta opción si quieres disfrutar de una experiencia coherente en varios proveedores de servicios en la nube, si ya usas el operador de GPU de NVIDIA o si usas software que depende de él. Para obtener más información, consulta Gestionar la pila de GPU con el operador de GPU de NVIDIA.

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

Descripción Usar GKE para gestionar nodos de GPU Usar el operador de GPU de NVIDIA en GKE
Gestión del ciclo de vida de los nodos de GPU (instalación y actualización) Totalmente gestionado por GKE. Gestionado por el usuario.
Instalación de controladores 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 GPU
  • Servicio multiproceso: no admitido.
Comprobación del estado de los nodos de GPU
  • Activa la reparación de nodos en 15 minutos si el número de GPUs asignables no es igual a la capacidad y la reparación automática está habilitada.
  • Monitorizar todos los códigos de error de forma predeterminada.
  • Activa la reparación de nodos en 15 minutos si el número de GPUs asignables no es igual a la capacidad y la reparación automática está habilitada.
Métricas y observabilidad
  • Si métricas del sistema está habilitado, las siguientes métricas de GPU estarán disponibles en Cloud Monitoring: ciclo de trabajo, uso de memoria y capacidad de memoria.
  • DCGM autogestionado proporcionado por el operador de GPU.
  • Aunque las métricas del sistema de GPU de GKE estén habilitadas, no se recogen las métricas del sistema relacionadas con la GPU, como el ciclo de trabajo, el uso de memoria y la capacidad de memoria.

Optimizar el uso de recursos con las funciones de GPU en GKE

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

GKE ofrece las siguientes funciones para reducir la cantidad de recursos de GPU infrautilizados:

Funciones de GPU
GPUs con varias instancias

Disponible en: Autopilot y Standard

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

GPUs de tiempo compartido

Disponible en: Autopilot y Standard

Presentar una sola GPU como varias unidades a varios contenedores de un nodo. El controlador de la GPU cambia de contexto y asigna todos los recursos de la GPU a cada contenedor asignado según sea necesario a lo largo del tiempo.

NVIDIA MPS

Disponible en: Estándar

Compartir una única GPU física de NVIDIA entre varios contenedores. MPS de NVIDIA es una implementación alternativa y compatible con binarios de la API de CUDA diseñada para permitir de forma transparente que las aplicaciones de CUDA multiproceso cooperativas se ejecuten simultáneamente en un solo dispositivo de GPU.

Acceder a las bibliotecas de NVIDIA CUDA-X para aplicaciones CUDA

CUDA es la plataforma de computación paralela y el modelo de programación de NVIDIA para GPUs. Para usar aplicaciones CUDA, la imagen que utilices debe tener las bibliotecas. Para añadir las bibliotecas NVIDIA CUDA-X, puedes crear y usar tu propia imagen incluyendo los siguientes valores en la variable de entorno LD_LIBRARY_PATH de la especificación de tu contenedor:

  • /usr/local/nvidia/lib64: la ubicación de los controladores de dispositivos NVIDIA.
  • /usr/local/cuda-CUDA_VERSION/lib64: la ubicación de las bibliotecas NVIDIA CUDA-X en el nodo.

    Sustituye CUDA_VERSION por la versión de la imagen de CUDA-X que has usado. Algunas versiones también contienen utilidades de depuración en /usr/local/nvidia/bin. Para obtener más información, consulta la imagen de NVIDIA CUDA en Docker Hub.

    Para comprobar la versión mínima del controlador de la GPU que se necesita para tu versión de CUDA, consulta CUDA Toolkit and Compatible Driver Versions (CUDA Toolkit y 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 la GPU que sea compatible con la versión de CUDA que hayas elegido. Para obtener más información sobre cómo asignar la versión del controlador de GPU a la versión de GKE, consulta el artículo Asignar la versión de GKE y la versión de la imagen de nodo de Container-Optimized OS a la versión del controlador de GPU.

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

Monitorizar el rendimiento de la carga de trabajo de los nodos de GPU

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

  • Ciclo de trabajo (container/accelerator/duty_cycle): Porcentaje del tiempo durante el último periodo de muestreo (10 segundos) en el que el acelerador ha estado procesando activamente. 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.

Estas métricas se aplican a nivel de contenedor (container/accelerator) y no se recogen en los contenedores programados en una GPU que usa el tiempo compartido de la GPU o NVIDIA MPS.

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

Ver métricas de uso de cargas de trabajo

Puedes ver las métricas de uso de GPU de tus cargas de trabajo en el panel de control Cargas de trabajo de la Google Cloud consola.

Para ver el uso de GPU de tu carga de trabajo, sigue estos pasos:

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

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

En el panel de control Cargas de trabajo se muestran gráficos sobre el uso y la capacidad de la memoria de la GPU, así como el ciclo de actividad de la GPU.

Ver métricas de NVIDIA Data Center GPU Manager (DCGM)

Puedes recoger y visualizar métricas de NVIDIA DCGM mediante Google Cloud Managed Service para Prometheus. En el caso de los clústeres de Autopilot, GKE instala los controladores. En los clústeres estándar, debes instalar los controladores de NVIDIA.

Para obtener instrucciones sobre cómo implementar el paquete DCGM gestionado por GKE, consulta el artículo Recoger y ver métricas de NVIDIA Data Center GPU Manager (DCGM).

Gestionar las interrupciones debidas al mantenimiento de nodos

Los nodos de GKE que alojan las GPUs están sujetos a eventos de mantenimiento u otras interrupciones que pueden provocar que se apaguen los nodos. En los clústeres de GKE con el plano de control que ejecutan la versión 1.29.1-gke.1425000 y posteriores, puedes reducir las interrupciones de las cargas de trabajo configurando GKE para que finalice tus cargas de trabajo correctamente.

Para comprender, configurar y monitorizar los eventos de interrupción que pueden producirse en los nodos de GKE que ejecutan cargas de trabajo de IA o aprendizaje automático, consulta Gestionar interrupciones de nodos de GKE para GPUs y TPUs.

Siguientes pasos