Acerca de la segmentación dinámica de GKE

En este documento, se describe la segmentación dinámica en Google Kubernetes Engine (GKE) para Cloud TPU. La segmentación dinámica mejora la eficiencia y la flexibilidad de las TPU, ya que desvincula el aprovisionamiento de TPU de las necesidades de porciones de TPU de la carga de trabajo. La segmentación dinámica ayuda a mejorar el uso de los recursos TPU, ya que reduce el tiempo de inicio de la carga de trabajo hasta cinco veces y el tiempo de recuperación hasta 4.5 veces.

La segmentación dinámica está dirigida a ingenieros de aprendizaje automático (AA) y de plataformas que desean optimizar el uso de TPU, reducir el tiempo de aprovisionamiento y mejorar la tolerancia a errores para las cargas de trabajo de inferencia y entrenamiento a gran escala.

Antes de leer este documento, debes estar familiarizado con lo siguiente:

¿Qué es la segmentación dinámica?

La segmentación dinámica es una función de optimización de TPU de GKE que separa el aprovisionamiento de hardware de TPU físico y estático de la asignación de porciones de TPU en el entorno de ejecución cuando se programan las cargas de trabajo.

Cuando usas topologías de TPU estáticas, los grupos de nodos de GKE se vinculan a la topología específica que configuraste durante la creación. Debido a esta limitación, si falla algún nodo de un grupo estático, se verá afectado todo el grupo de nodos. La topología de tu carga de trabajo también debe coincidir exactamente con la topología de TPU del grupo de nodos para que se programe, lo que puede requerir un reaprovisionamiento frecuente de la infraestructura de TPU para diferentes cargas de trabajo.

La segmentación dinámica permite que GKE configure porciones de TPU en el entorno de ejecución cuando se programan las cargas de trabajo. En lugar de crear grupos de nodos de forma manual con la topología de TPU exacta que se requiere para cada carga de trabajo nueva, aprovisionas previamente toda tu capacidad de TPU en grupos de nodos detallados y de tamaño fijo. Para Ironwood (TPU7x), cada grupo de nodos consta de una topología 4x4x4, también conocida como subbloque. Un subbloque representa un grupo de 16 nodos de VMs de TPU sin una malla de topología de interconexión entre chips (ICI) activa. En el entorno de ejecución, cuando se programan las cargas de trabajo, la segmentación dinámica de GKE reconfigura la interconexión de red de TPU para unir varios grupos de nodos en la porción de TPU grande requerida o subdividir los grupos de nodos para formar porciones de TPU más pequeñas. Esta reconfiguración crea la topología multidimensional precisa que solicita una carga de trabajo en segundos.

Beneficios de la segmentación dinámica

Implementar una arquitectura de TPU dinámica en GKE proporciona las siguientes ventajas:

  • Recuperación más rápida de las cargas de trabajo: Si se produce una falla de hardware físico, GKE aísla el problema en una sola partición. El controlador de porciones de GKE cambia automáticamente la forma de la porción activa y reconfigura la red para reemplazar la partición defectuosa por una de repuesto en buen estado. Este proceso mejora la resiliencia o el tiempo medio de recuperación (MTTR) hasta 4.5 veces en comparación con volver a crear un grupo de nodos completo.
  • Inicio acelerado de trabajos: Los segmentos de carga de trabajo se pueden formar de forma dinámica, lo que ofrece una mejora de hasta cinco veces en la latencia de inicio de los trabajos en comparación con la creación de grupos de nodos estáticos.
  • Aislamiento de fallas: Las fallas de hardware se aíslan en la partición específica en la que se produce la falla. Este aislamiento ayuda a proteger otros trabajos simultáneos en el clúster de fallas en cascada.
  • Uso de recursos optimizado: La segmentación dinámica ayuda a eliminar la capacidad varada o infrautilizada. Debido a que los segmentos se configuran para que coincidan con las demandas de las cargas de trabajo, la segmentación dinámica ayuda a maximizar el uso de la flota y minimizar el hardware inactivo.
  • Organización declarativa: La segmentación dinámica usa recursos y anotaciones personalizados nativos de Kubernetes, como JobSet y Kueue. Este enfoque administra automáticamente las redes de bajo nivel y la organización del hardware.

Parámetros de configuración de la segmentación dinámica

La segmentación dinámica ofrece los siguientes parámetros de configuración:

  • Super-slicing dinámico: Combina varios grupos de nodo TPU aprovisionados previamente y separados físicamente para formar una sola porción virtual en el momento de la programación de la carga de trabajo. Por ejemplo, puedes combinar dos grupos de nodos 4x4x4 para formar una topología 4x4x8. Esta capacidad te permite crear porciones que sean iguales o superiores a una topología 4x4x4. Esta configuración requiere la versión 1.35.2-gke.1842000 o una posterior. Puedes usar el super-slicing dinámico para entrenar modelos de base grandes que superen la capacidad de un solo bloque de hardware físico.

    El controlador de porciones organiza las reconfiguraciones físicas dentro de la estructura de red del interruptor de circuito óptico (OCS). Cuando se reconfigura de forma dinámica el OCS, GKE extiende la red de interconexión entre chips (ICI) en bastidores de hardware independientes. Desde la perspectiva de las cargas de trabajo, los subbloques combinados funcionan como una sola malla toroidal. En una malla toroidal, las conexiones se unen en los extremos. Los chips del borde derecho se conectan directamente con los chips del borde izquierdo, y la parte superior se conecta con la inferior. Si visualizaras esta disposición, formaría un toroide (una forma de anillo).

  • Subdivisión dinámica: Divide un solo grupo de nodo TPU aprovisionado previamente en varias unidades más pequeñas e independientes a nivel de la carga de trabajo. La división dinámica en subporciones te permite crear topologías más pequeñas dentro de un solo subbloque, específicamente 2x2x1, 2x2x2, 2x2x4 y 2x4x4. Por ejemplo, puedes particionar un subbloque 4x4x4 en un subsegmento 2x2x4 y dos subsegmentos 2x2x2. Esta configuración requiere la versión 1.36.0-gke.3712000 o posterior en el canal rápido.

    Con la división dinámica en porciones, ejecutas varias cargas de trabajo en un solo grupo de nodos físico. Por ejemplo, puedes ejecutar el ajuste, la experimentación y la inferencia en línea de forma simultánea. La división secundaria proporciona aislamiento eléctrico y de red entre estas divisiones secundarias, lo que ayuda a aislar las fallas o los impactos en el rendimiento entre las cargas de trabajo.

Características clave de los parámetros de configuración de la segmentación dinámica

Los parámetros de configuración de la segmentación dinámica tienen las siguientes características:

  • Aprovisionamiento incremental de grupos de nodos: La segmentación dinámica usa el aprovisionamiento incremental, que es un modelo de aprovisionamiento tolerante a errores de grupos de nodos. Este modelo convierte toda tu capacidad de TPU en grupos de nodos que comprenden grupos de 16 nodos de VMs de Ironwood (TPU7x), lo que te permite seguir aprovisionando y usando incluso cubos parcialmente en mal estado.
  • Controlador de porciones: Es un controlador de recursos personalizados de Kubernetes que se ejecuta dentro del plano de control de GKE y que administra la segmentación dinámica. El controlador de porciones administra el ciclo de vida de un recurso personalizado de porción, que representa una porción dinámica (controla la creación, la supervisión continua y la eliminación). También propaga los datos de estado de la infraestructura (host, ICI y OCS) a las etiquetas de los nodos para ayudar a identificar los nodos candidatos en buen estado.
  • Recurso personalizado Slice: Representa la porción lógica y, además, inicia la configuración dinámica de los vínculos entre nodos (ICI y OCS) para formar la topología de TPU solicitada. Este proceso une varios subbloques (supersegmentación) o aísla una topología más pequeña dentro de un solo subbloque (subsegmentación). Puedes inspeccionar el progreso o el estado de la formación de segmentos dinámicos inspeccionando los campos de estado del recurso personalizado Slice.

Requisitos

Para usar la segmentación dinámica en GKE, debes cumplir con los siguientes requisitos:

  • Usa un clúster de Standard en el canal rápido en una de las siguientes versiones:
    • Para la configuración de super-slicing dinámico (topologías iguales o superiores a 4x4x4), usa la versión 1.35.2-gke.1842000 o una posterior.
    • Para la configuración de subsegmentación dinámica (topologías más pequeñas que 4x4x4), usa la versión 1.36.0-gke.3712000 o una posterior.
  • Usa la versión Ironwood (TPU7x).
  • Usa la imagen de Container-Optimized OS para tus nodos.
  • Para usar el aprovisionamiento incremental, usa las reservas del modo All Capacity. El modo All Capacity es una función habilitada por Cluster Director de TPU.
  • Para la división dinámica en porciones secundarias, asegúrate de que tus nodos tengan eventos de mantenimiento pendientes. Supervisa tus instancias para detectar eventos de mantenimiento pendientes. Si alguno de tus nodos tiene un evento de mantenimiento pendiente con una hora de finalización entre el 18 de septiembre de 2026 y el 30 de septiembre de 2026, debes activar el evento de mantenimiento del host de forma manual en esos nodos antes de poder usar la división en porciones secundarias.

Usa programadores para la segmentación dinámica

Para usar la segmentación dinámica, puedes usar cualquiera de las siguientes opciones:

¿Qué sigue?