Diseña para la obtención de recursos en GKE con Gemini

En este documento, se explica cómo diseñar clústeres de Google Kubernetes Engine (GKE) resistentes y estrategias de programación de cargas de trabajo que te ayuden a obtener recursos, como GPUs, TPUs y CPUs de alto rendimiento. Si aprovechas Gemini en Cloud de Confiance by S3NS y Compute Advisor (vista previa), puedes evitar los Pods pendientes y mejorar la programación confiable para las cargas de trabajo de IA.

Este documento está dirigido a arquitectos de Cloud y administradores y operadores de plataformas que administran la infraestructura de GKE y desean optimizar la planificación y la programación de la capacidad.

Descripción general de la disponibilidad de recursos en GKE

La programación de Kubernetes se basa en las solicitudes de recursos declaradas. Cuando se programan aceleradores a gran escala, como GPUs o TPUs, las solicitudes de recursos estrictas pueden provocar que los clústeres no se escalen verticalmente si no hay hardware específico disponible. Puedes optimizar la disponibilidad de capacidad en GKE con las siguientes funciones:

  • Creación automática de grupos de nodos: Creación dinámica de grupos de nodos de varias familias
  • Conmutación por error a nivel de la carga de trabajo: Tolerancias y selectores de nodos configurados para aceptar hardware alternativo
  • Programación geográfica y regional: Capacidades multizona y multirregionales de GKE
  • Administración de reservas: Consumo de capacidad comprada previamente antes de solicitar recursos a pedido

Prácticas recomendadas para la disponibilidad de recursos en GKE

En esta sección, se proporcionan recomendaciones para aumentar la disponibilidad de capacidad cuando se programan cargas de trabajo en GKE. Estas prácticas recomendadas abarcan estrategias como el diseño de requisitos de hardware flexibles, la configuración de la creación automática de grupos de nodos y el aprovechamiento de la distribución geográfica para adaptarse a las restricciones de recursos. La creación automática de grupos de nodos administra automáticamente los grupos de nodos en función de las especificaciones de Pods. En lugar de definir previamente los grupos de nodos, especifica los requisitos de recursos en tus manifiestos de Pods y permite que GKE cree nodos de forma dinámica.

También puedes descubrir e implementar las siguientes prácticas recomendadas con Compute Advisor. Para obtener más información, consulta Usa Compute Advisor.

Opciones de flexibilidad de hardware

Para optimizar la disponibilidad de capacidad, puedes indicarle a GKE que evite vincular las cargas de trabajo a una sola familia de máquinas estática o tipo de acelerador. Los siguientes son ejemplos de cómo puedes configurar grupos de nodos flexibles y reglas de afinidad de Pods para diferentes clases de cargas de trabajo. Las alternativas específicas que elijas dependen de las demandas de recursos de tu aplicación:

  • Grupos de nodos de CPU de uso general:

    • Ejemplo principal: N2 (de uso general basado en Intel)
    • Alternativas de muestra: N2D (AMD EPYC), C2 o C2D (optimizadas para procesamiento) o E2 (optimizadas para costos)
    • Patrón de implementación: Configura las especificaciones de Pods con afinidad de nodos o tolerancias que permitan la programación en varias etiquetas de familias de máquinas, por ejemplo, cloud.google.com/machine-family en ["n2", "n2d", "c2d"]. Esta configuración permite que GKE aprovisione el grupo que tenga capacidad disponible.
  • Grupos de nodos de GPU:

    • Ejemplo principal: Serie A2 (GPUs NVIDIA A100)
    • Alternativas de muestra: L4 (IA/ML universal) o T4 (inferencia)
    • Patrón de implementación: Configura grupos de nodos o ComputeClasses separados para diferentes niveles de GPU. Para las cargas de trabajo que se pueden ejecutar sin funciones específicas de A100, permite que los Pods vuelvan a los grupos L4 o T4 si el aprovisionamiento de A2 está restringido.
  • Grupos de nodo TPU:

    • Ejemplo principal: TPU Ironwood (TPU7x)
    • Alternativas de muestra: TPU v6 (Trillium) o TPU v5 (v5e o v5p)
    • Patrón de implementación: El aprovisionamiento de segmentos de TPU puede estar muy restringido. Diseña cargas de trabajo de entrenamiento con flexibilidad a nivel del framework (por ejemplo, configuraciones de JAX o PyTorch que admitan topologías de segmentos variables) para implementarlas en segmentos v6 o v5 cuando la capacidad de TPU Ironwood (TPU7x) no esté disponible.

En la siguiente tabla, se resumen las selecciones principales y las alternativas de hardware para diferentes tipos de cargas de trabajo:

Tipo de carga de trabajo Ejemplo de selección principal Alternativas de muestra Consideraciones de la arquitectura
Cargas de trabajo del sistema o principales N2 N2D, C2D, E2 Abarca grupos de hardware de Intel y AMD para la creación automática de grupos de nodos.
Inferencia y procesamiento de GPU A2 (A100) L4, T4 Se orienta de forma flexible a grupos de nodos de GPU de menor costo o mayor disponibilidad.
Entrenamiento de modelos de TPU TPU Ironwood (TPU7x) TPU v6, TPU v5 (v5e o v5p) Utiliza topologías flexibles para la programación basada en segmentos.

Implementa la creación automática de grupos de nodos y ComputeClasses

Para optimizar la disponibilidad de capacidad, combina la creación automática de grupos de nodos con ComputeClasses. En la siguiente lista, se incluyen las prácticas recomendadas:

  • Define ComputeClasses: Crea recursos de ComputeClass que especifiquen una lista priorizada de familias de máquinas, tipos de GPU o modelos de aprovisionamiento. GKE intenta aprovisionar nodos con la configuración de prioridad más alta disponible en la clase. Una lista de conmutación por error priorizada te ayuda significativamente a obtener los recursos que requieren tus cargas de trabajo. Por ejemplo, para evitar que GKE vuelva a las máquinas de uso general cuando no esté disponible un acelerador especializado preferido, agrega la configuración whenUnsatisfiable: DoNotScaleUp a tu configuración de ComputeClass. Para obtener más información, consulta Controla los atributos de nodos con ajuste de escala automático con ComputeClasses personalizadas.

  • Haz referencia a ComputeClasses en las especificaciones de Pods: En las especificaciones de Pods de tu carga de trabajo, usa la etiqueta cloud.google.com/compute-class para orientar tu ComputeClass personalizada en lugar de una familia de máquinas o un tipo de GPU específicos. Para obtener más información, consulta Solicita una ComputeClass en una carga de trabajo.

  • Define varias tolerancias: Si no usas ComputeClasses, usa reglas de afinidad de nodos en las especificaciones de Pods que permitan un rango de familias de máquinas (como cloud.google.com/machine-family en ["n2", "n2d"]). Para obtener más información, consulta Configura la creación automática de grupos de nodos.

Flexibilidad geográfica y multirregional en GKE

Para aumentar la disponibilidad de capacidad, implementa clústeres de GKE que abarquen varias zonas o ejecuta arquitecturas de varios clústeres:

  • Clústeres multizona: Asegúrate de que los grupos de nodos estén configurados para ajustarse automáticamente en todas las zonas disponibles de una región.

  • Federación de clústeres multirregionales: Para trabajos asíncronos grandes (como la inferencia por lotes sin conexión o el entrenamiento distribuido), implementa un orquestador de varios clústeres (como Kueue o Cluster Director) para poner en cola las cargas de trabajo de forma global y enviarlas a una región con capacidad disponible.

  • Pods que se ejecutan en VMs Spot: Ejecuta cargas de trabajo interrumpibles en VMs Spot agregando tolerancias y dando instrucciones a GKE para que distribuya el exceso de capacidad en diferentes zonas.

Prácticas recomendadas adicionales para la disponibilidad de GKE

Además de la diversificación del hardware, incorpora estas prácticas recomendadas de GKE para optimizar el éxito del ajuste de escala del clúster:

  • Implementa el sobreaprovisionamiento de Pods (búferes de capacidad): Implementa Pods de "pausa" de baja prioridad que reserven la capacidad de nodos con anticipación. Cuando se envían cargas de trabajo de IA de alta prioridad y la capacidad regional está restringida, Kubernetes interrumpe de inmediato los Pods de pausa, lo que permite que los contenedores se inicien sin esperar el aprovisionamiento de nodos nuevos. Para obtener más información, consulta Acerca de los búferes de capacidad.
  • Usa el inicio flexible con aprovisionamiento en cola: Para trabajos grandes de entrenamiento de modelos de IA y por lotes, usa el inicio flexible con aprovisionamiento en cola, que se integra con Kueue y el programador dinámico de cargas de trabajo. El inicio flexible con aprovisionamiento en cola asigna nodos atómicos de todo o nada, lo que evita fallas parciales de ajuste de escala vertical del clúster. Para obtener más información, consulta Ejecuta una carga de trabajo a gran escala con el inicio flexible con aprovisionamiento en cola.
  • Habilita la transmisión de imágenes y la precarga de imágenes de contenedor: Para imágenes de contenedores de IA grandes (como imágenes de PyTorch o TensorFlow que superen los 10 GB), habilita la transmisión de imágenes de GKE o usa discos de arranque secundarios para la precarga de imágenes. Esta configuración reduce el tiempo de calentamiento de los nodos, lo que permite que los nodos recién aprovisionados comiencen a ejecutar cargas de trabajo en segundos. Para obtener más información, consulta Usa la transmisión de imágenes para extraer imágenes de contenedor y Usa discos de arranque secundarios para precargar datos o imágenes de contenedor.
  • Configura la política de ubicación del escalador automático del clúster en ANY: configura los grupos de nodos (en especial para VMs Spot o inicio flexible) con la ANY política de ubicación. Este parámetro de configuración le indica al escalador automático del clúster que busque la capacidad solicitada en todas las zonas especificadas. El escalador automático del clúster encuentra capacidad sobre el balanceo de recuentos de nodos. Para obtener más información, consulta Descripción general del escalador automático del clúster.
  • Optimiza el uso del acelerador con el uso compartido de GPU: Para las cargas de trabajo que no requieren una GPU dedicada, usa el uso de tiempo compartido de GPU, las GPUs de instancias múltiples (MIG) o NVIDIA MPS para permitir que varios contenedores compartan un solo acelerador. Este enfoque optimiza la capacidad efectiva en los grupos de nodos. Para obtener más información, consulta Acerca de las estrategias de uso compartido de GPU en GKE.

Usa Compute Advisor

Compute Advisor es una interfaz potenciada por IA en la Cloud de Confiance consola, con tecnología de Gemini, que te ayuda a diseñar arquitecturas resistentes para GKE. Compute Advisor proporciona orientación sobre la disponibilidad de VMs de inicio flexible y VMs Spot casi en tiempo real, mientras verifica las políticas de tu organización y las cuotas de recursos antes de la implementación. Compute Advisor no proporciona orientación sobre la disponibilidad para las cargas de trabajo que requieren recursos a pedido.

Para acceder a Gemini en la Cloud de Confiance consola, sigue estos pasos:

  1. En la Cloud de Confiance consola, ve a la página Descripción general.

    Ir a Descripción general

  2. En la sección Diseña tu infraestructura con Compute Advisor, envía una instrucción. Gemini comenzará a generar una respuesta.

  3. Para generar recomendaciones de arquitectura, ejecuta una de las siguientes instrucciones de ejemplo en Compute Advisor. Cuando haces clic en los botones Ejecutar instrucción en Compute Advisor, es posible que la Cloud de Confiance consola tarde más de 15 segundos en cargarse:

    • Estrategia general de aceleradores:

      Caso de uso: Usa esta instrucción para analizar los indicadores de capacidad regionales y recibir recomendaciones sobre los tipos de máquinas, las zonas y las estrategias de programación de conmutación por error cuando diseñes configuraciones de clústeres.

      Configure a GKE cluster to improve chances of obtaining scarce GPU or TPU capacity.
      

      Ejecutar instrucción en Compute Advisor

    • Flexibilidad geográfica y conmutaciones por error:

      Caso de uso: Usa esta instrucción cuando diseñes arquitecturas de varios clústeres o sistemas globales de puesta en cola de trabajos (por ejemplo, con Kueue) para cambiar la ejecución de cargas de trabajo en las regiones según la disponibilidad de recursos.

      Configure multi-region fallbacks and geographic scheduling on GKE to increase GPU availability.
      

      Ejecutar instrucción en Compute Advisor

    • Consumo de reservas prioritarias:

      Caso de uso: Usa esta instrucción para generar patrones de configuración de YAML para la afinidad de Pods y las reglas de ajuste de escala automático que priorizan la capacidad de reserva.

      Configure GKE autoscaling rules and Pod specs to prioritize consuming active reservations before scaling into on-demand pools.
      

      Ejecutar instrucción en Compute Advisor

    • ComputeClasses para la priorización de conmutación por error:

      Caso de uso: Usa esta instrucción para generar el manifiesto de YAML para una ComputeClass CustomResourceDefinition que priorice las GPUs de alto rendimiento, pero que incluya conmutaciones por error de nivel inferior para garantizar la programación de cargas de trabajo.

      Define a ComputeClass manifest for GKE to prioritize A2 GPU nodes with automatic fallbacks to L4 or T4 GPUs.
      

      Ejecutar instrucción en Compute Advisor

    • Creación automática de grupos de nodos para la diversificación:

      Caso de uso: Usa esta instrucción para escribir el manifiesto de YAML para los límites de recursos del escalador automático del clúster de GKE y las reglas de afinidad de Pods que permiten que NAP aprovisione automáticamente nodos alternativos de GPU o CPU.

      Configure GKE node pool auto-creation to diversify machine families and prevent pending pods when regional accelerator capacity is constrained.
      

      Ejecutar instrucción en Compute Advisor

¿Qué sigue?