Diseña para la flexibilidad y eficiencia de la capacidad en GKE con Gemini

En este documento, se explica cómo diseñar clústeres de Google Kubernetes Engine (GKE) resilientes y estrategias de programación de cargas de trabajo que te ayuden a obtener recursos, como GPUs, TPUs y CPUs de alto rendimiento. Aprovechando Gemini en Cloud de Confiance by S3NS y Compute Advisor (versión preliminar), puedes evitar los Pods pendientes y mejorar la programación confiable de 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 flexibilidad, la eficiencia y la disponibilidad de la capacidad de procesamiento en GKE

La programación de Kubernetes se basa en las solicitudes de recursos declaradas. Cuando se programan aceleradores a gran escala, como GPU o TPU, 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 la 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.
  • Resguardos a nivel de la carga de trabajo: tolerancias y selectores de nodos configurados para aceptar hardware alternativo.
  • Programación geográfica y regional: Capacidades multizonales y multirregionales de GKE.
  • Administración de reservas: Consumir la capacidad comprada anticipadamente antes de solicitar recursos on demand.

Prácticas recomendadas para la flexibilidad, la eficiencia y la disponibilidad de la capacidad de procesamiento en GKE

En esta sección, se proporcionan recomendaciones para aumentar la disponibilidad de la 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 según las especificaciones de los Pods. En lugar de predefinir grupos de nodos, especifica los requisitos de recursos en tus manifiestos de Pods y deja que GKE cree nodos de forma dinámica.

También puedes descubrir y, luego, implementar las siguientes prácticas recomendadas con Compute Advisor (versión preliminar). Para obtener más información, consulta Usa Compute Advisor.

Opciones para aumentar la disponibilidad de la capacidad de procesamiento

Para optimizar la disponibilidad de la capacidad, puedes indicarle a GKE que evite vincular las cargas de trabajo a una sola familia de máquinas estática o un tipo de acelerador. A continuación, se muestran 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 dependerán de las demandas de recursos de tu aplicación:

  • Grupos de nodos de CPU de uso general:

    • Ejemplo principal: N4 (de uso general basado en Intel).
    • Alternativas de muestra: N4D (AMD EPYC de uso general), C4 o C3 (Intel de uso general) o C4D o C3D (AMD EPYC de uso general).
    • Patrón de implementación: Configura las especificaciones de los Pods con una ComputeClass personalizada o reglas de afinidad de nodos que permitan la programación en varias etiquetas de familias de máquinas, por ejemplo, cloud.google.com/machine-family en ["n4", "n4d", "c4", "c4d"]. Esta configuración permite que GKE aprovisione cualquier grupo que tenga capacidad disponible.
  • Grupos de nodos de GPU:

    • Ejemplo principal: Serie A3 (GPU NVIDIA H100) o serie A4 (GPU NVIDIA B200).
    • Alternativas de muestra: Serie G2 (GPU NVIDIA L4) o niveles de acelerador alternativos.
    • Patrón de implementación: Configura grupos de nodos o ComputeClasses independientes para diferentes niveles de GPU. Para las cargas de trabajo de inferencia o entrega que se pueden ejecutar en generaciones de aceleradores, permite que los Pods recurran a G2 (L4) o a grupos de GPU alternativos si el aprovisionamiento del acelerador principal 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 porciones de TPU puede ser muy restringido. Diseña cargas de trabajo de entrenamiento con flexibilidad a nivel del framework (por ejemplo, parámetros de configuración de JAX o PyTorch que admitan topologías de porciones variables) para implementarlas en porciones de 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 N4 N4D, C4, C4D, C3, C3D Abarca grupos de hardware modernos de Intel y AMD para la creación automática de grupos de nodos.
Inferencia y procesamiento de GPU A3 (H100) o A4 (B200) G2 (L4) 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 porciones.

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

Para optimizar la disponibilidad de la capacidad, combina la creación automática de grupos de nodos con ComputeClasses. La siguiente lista incluye 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 mayor prioridad disponible en la clase. Una lista de resguardo priorizada te ayuda de forma significativa a obtener los recursos que requieren tus cargas de trabajo. Por ejemplo, para evitar que GKE recurra a máquinas de uso general cuando un acelerador especializado preferido no esté disponible, agrega el parámetro de configuración whenUnsatisfiable: DoNotScaleUp a tu configuración de ComputeClass. Para obtener más información, consulta Controla los atributos de los nodos con ajuste de escala automático con ComputeClasses personalizadas.

  • Habilita la migración activa (optimizeRulePriority: true) para cargas de trabajo sin estado o tolerantes a interrupciones: Configura la migración activa en tu ComputeClass para que GKE acordone, vacíe y reemplace automáticamente los nodos de resguardo por tu serie de máquinas de mayor prioridad cuando se recupere la capacidad en esa ubicación.

  • Usa StorageClasses dinámicas para el resguardo entre generaciones: En la versión 1.35.3-gke.1290000 y posteriores de GKE, cuando una ComputeClass abarca series solo de Hyperdisk (como C4, C4D y N4) y series de Persistent Disk (como N2 y N2D), configura las cargas de trabajo con estado para que GKE seleccione de forma dinámica un tipo de disco compatible. Para ello, usa una StorageClass con selección automática del tipo de disco (parameters.type: dynamic) y el parámetro de configuración volumeBindingMode: WaitForFirstConsumer.

  • Haz referencia a las 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 tus Pods que permitan un rango de familias de máquinas (como cloud.google.com/machine-family en ["n4", "n4d", "c4", "c4d"]). 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 la capacidad, implementa clústeres de GKE que abarquen varias zonas o ejecuta arquitecturas de varios clústeres:

  • Clústeres multizonales: Asegúrate de que los grupos de nodos estén configurados para escalar 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 organizador 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 ordenando a GKE que distribuya la capacidad excedente en diferentes zonas.

Prácticas recomendadas adicionales para la flexibilidad, la eficiencia y la disponibilidad de la capacidad de procesamiento en GKE

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

  • Usa búferes de capacidad: Reserva de forma proactiva la capacidad de nodos adicional para que las cargas de trabajo de IA de alta prioridad se puedan programar de inmediato sin esperar el aprovisionamiento de nodos nuevos. Puedes usar búferes de capacidad declarativos con la estrategia de búfer activo para las cargas de trabajo de GPU y TPU, de modo que el escalador automático del clúster mantenga automáticamente la capacidad de reserva.
  • Usa el inicio flexible con el aprovisionamiento en cola: Para trabajos de entrenamiento de modelos de IA y lotes grandes, usa el inicio flexible con el aprovisionamiento en cola, que se integra en 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 escalamiento vertical del clúster. Para obtener más información, consulta Ejecuta una carga de trabajo a gran escala con inicio flexible y aprovisionamiento en cola.
  • Habilita la transmisión de imágenes y la carga previa de imágenes de contenedor: Para imágenes de contenedor de IA grandes (como las imágenes de PyTorch o TensorFlow que superan los 10 GB), habilita la transmisión de imágenes de GKE o usa discos de arranque secundarios para la carga previa 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 como ANY: Configura los grupos de nodos (en especial para las VMs Spot o el inicio flexible) con la política de ubicación ANY. Este parámetro de configuración 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 por encima de los recuentos de nodos de balanceo. Para obtener más información, consulta Descripción general del escalador automático de clústeres.
  • Optimiza el uso de aceleradores con el uso compartido de GPU: Para las cargas de trabajo que no requieren una GPU dedicada, usa el uso compartido de tiempo de GPU, las GPU 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 consola deCloud de Confiance , con la tecnología de Gemini, que te ayuda a diseñar arquitecturas resilientes y rentables para GKE.

Compute Advisor proporciona orientación sobre la disponibilidad casi en tiempo real para las VMs de inicio flexible y las VMs Spot, a la vez que verifica las políticas y las cuotas de recursos de tu organización antes de la implementación. Compute Advisor no proporciona orientación sobre la disponibilidad para las cargas de trabajo que requieren recursos on demand.

Para acceder a Gemini en la consola de Cloud de Confiance , completa los siguientes pasos:

  1. En la consola de Cloud de Confiance , 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 comienza 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, la consola de Cloud de Confiance puede tardar más de 15 segundos en cargarse:

  • Estrategia general de aceleradores:

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

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

    Ejecuta una instrucción en Compute Advisor

  • Flexibilidad geográfica y resguardos:

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

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

    Ejecuta una 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 las reglas de afinidad de Pods y de escalado 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.
    

    Ejecuta una instrucción en Compute Advisor

  • ComputeClasses para la priorización de resguardo:

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

    Define a ComputeClass manifest for GKE to prioritize A3 GPU nodes with automatic fallbacks to G2 (L4) GPUs.
    

    Ejecuta una instrucción en Compute Advisor

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

    Caso de uso: Usa este mensaje para escribir el manifiesto YAML de los límites de recursos del escalador automático de clústeres de GKE y las reglas de afinidad de Pods que permiten que el NAP aprovisione nodos de GPU o CPU alternativos de forma automática.

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

    Ejecuta una instrucción en Compute Advisor

¿Qué sigue?