Planifica las TPUs en GKE

En esta página, se describe cómo planificar el uso de las unidades de procesamiento de tensores (TPU) en Google Kubernetes Engine (GKE) para reducir el riesgo de una configuración incorrecta de las TPU, errores de no disponibilidad o interrupciones por falta de cuota.

Antes de usar las TPUs en GKE, asegúrate de estar familiarizado con las definiciones y la terminología de las TPUs en GKE.

Planifica tu configuración de TPU

Para trabajar con TPUs en los clústeres de GKE, debes planificar su configuración. Te recomendamos que sigas estos pasos:

  1. Elige un modo de operación de GKE: Ejecuta tus cargas de trabajo en TPU en un clúster de GKE Autopilot o Standard.

    Práctica recomendada:

    Usa un clúster de Autopilot para una experiencia de Kubernetes completamente administrada.

  2. Elige la versión de TPU: Los diferentes tipos de TPU tienen diferentes capacidades, como las relaciones precio-rendimiento, la capacidad de procesamiento de entrenamiento y la latencia de publicación. Los tipos de TPU afectan las capacidades de CPU y memoria disponibles.

  3. Valida la disponibilidad de las TPU: Las TPU están disponibles en regiones específicas de Google Cloud. Para usar un tipo de TPU en tu carga de trabajo de GKE, el clúster debe estar en una región compatible con ese tipo.

  4. Elige la topología de TPU: Es la disposición física de las TPU dentro de una porción de TPU. Selecciona una topología que coincida con los requisitos de paralelismo de tu modelo.

Usa las tablas de referencia de esta página para identificar si tus grupos de nodos son de nodos de porción de TPU de host único o de varios hosts.

Elige un modo de operación de GKE

Puedes usar TPUs en los modos de operación disponibles de GKE para los clústeres:

  • Modo Autopilot (recomendado): GKE administra la infraestructura subyacente, como la configuración del nodo, el ajuste de escala automático, las actualizaciones automáticas, la configuración de seguridad de referencia y la configuración de red de referencia. En Autopilot, eliges un tipo y una topología de TPU y, luego, los especificas en tu manifiesto de Kubernetes. GKE administra el aprovisionamiento de nodos con TPUs y la programación de tus cargas de trabajo.
  • Modo Standard: Administras la infraestructura subyacente, incluida la configuración de los nodos individuales.

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.

Elige una opción de consumo de TPU

Cuando planifiques tu configuración de TPU en GKE, selecciona una opción de consumo que se alinee con las necesidades de tu carga de trabajo. La opción de consumo que elijas afectará las versiones de TPU disponibles y la cuota que debes configurar. GKE ofrece las siguientes opciones de consumo de TPU para ayudarte a optimizar la asignación de recursos y el costo, y, al mismo tiempo, mantener el rendimiento de la carga de trabajo:

Para elegir la opción de consumo que satisfaga los requisitos de tu carga de trabajo, consulta Acerca de las opciones de consumo de aceleradores para cargas de trabajo de IA/AA en GKE.

Elige la versión de TPU

Las VMs de una porción de TPU tienen las siguientes características técnicas.

Autopilot

Versión de TPU Tipo de máquina Cantidad de CPU virtuales Memoria (GiB) Cantidad de nodos de NUMA Cantidad máxima de chips TPU en un nodo de porción de TPU
TPU Trillium (v6e) tpu-v6e-slice 44 a 180 De 176 a 1440 De 1 a 2 256
TPU v5p
tpu-v5p-slice 208 448 2 6,144
TPU v5e
tpu-v5-lite-podslice De 24 a 224 De 48 a 384 1 256
TPU v4
tpu-v4-podslice 240 407 2 4,096
TPU v3 (solo host único)
tpu-v3-device 96 340 2 8
TPU v3
tpu-v3-slice 48 340 1 256

Estándar

Versión de TPU Tipo de máquina Cantidad de CPU virtuales Memoria (GiB) Cantidad de nodos de NUMA Probabilidad de ser adelantado
TPU Trillium (v6e) ct6e-standard-1t 44 448 2 Superior
TPU Trillium (v6e) ct6e-standard-4t 180 720 1 Medio
TPU Trillium (v6e) ct6e-standard-8t 180 1440 2 Inferior
TPU v5p
ct5p-hightpu-4t 208 448 2
TPU v5e
ct5lp-hightpu-1t 24 48 1 Mayor
TPU v5e
ct5lp-hightpu-4t 112 192 1 Media
TPU v5e
ct5lp-hightpu-8t 224 384 1 Menor
TPU v4
ct4p-hightpu-4t 240 407 2
TPU v3 (solo host único)
ct3-hightpu-4t 96 340 2
TPU v3
ct3p-hightpu-4t 48 340 1

Los tipos de máquinas ct5lp- de varios hosts son más adecuados para la entrega de entrenamiento o modelos grandes. Las máquinas ct5lp- de varios hosts están interconectadas con vínculos de alta velocidad.

Revisa las especificaciones y los precios de las TPU en la documentación de precios de Cloud TPU para decidir qué configuración de TPU usar.

Limitaciones

Ten en cuenta estas limitaciones cuando elijas la TPU que usarás:

  • La TPU Trillium está disponible en las siguientes versiones:
    • Clústeres estándar en la versión 1.31.1-gke.1846000 y posteriores
    • Clústeres de Autopilot en la versión 1.31.2-gke.1115000 y posteriores
  • La TPU Trillium no admite la configuración de SMT establecida en 2 en ct6e-standard-8t.
  • El ajuste de escala automático de TPU v5p es compatible con los clústeres de GKE con planos de control que ejecutan al menos la versión 1.29.2-gke.1035000 o 1.28.7-gke.1020000.
  • Para las reservas de capacidad, usa una reserva específica.
  • Puedes ejecutar un máximo de 256 Pods en una sola VM de TPU.
  • La asignación de costos de GKE y la medición del uso no incluyen ningún dato sobre el uso o los costos de las TPU.
  • El escalador automático de clústeres cancela las operaciones de escalamiento vertical del grupo de nodo TPU que permanecen en estado de espera durante más de 10 horas. El escalador automático del clúster vuelve a intentar esas operaciones de escalamiento vertical cuando hay recursos disponibles. Este comportamiento puede reducir la capacidad de obtención de TPU si no usas reservas.
  • No se admiten nodos de Ubuntu.
  • La arquitectura de nodo TPU está obsoleta. La TPU v3 es la única versión de TPU que aún admite la arquitectura de nodos TPU en GKE.

Valida la disponibilidad de TPU en GKE

Las TPU están disponibles en Google Cloud regiones específicas. Para usar un tipo de TPU en tu clúster de GKE, este debe estar en una región compatible con ese tipo.

Autopilot

Versión de TPU cloud.google.com/gke-tpu-accelerator Versión mínima de GKE Disponibilidad Zona
TPU Trillium (v6e) tpu-v6e-slice 1.31.2-gke.1384000 DG
  • asia-northeast1-b
  • europe-west4-a
  • southamerica-west1-a
  • us-central1-b
  • us-east1-d
  • us-east5-a
  • us-east5-b
TPU v5e tpu-v5-lite-podslice 1.27.2-gke.2100 DG
  • europe-west4-b
  • us-central1-a
  • us-south1-a
  • us-west1-c
  • us-west4-a
TPU v5p tpu-v5p-slice 1.28.3-gke.1024000 DG
  • europe-west4-b
  • us-central1-a
  • us-east5-a
TPU v4 tpu-v4-podslice 1.26.1-gke.1500 DG
  • us-central2-b
TPU v3 tpu-v3-slice 1.31.1-gke.1146000 DG
  • europe-west4-a
  • us-central1-a
  • us-central1-b
TPU v3 tpu-v3-device 1.31.0-gke.1500 DG
  • europe-west4-a
  • us-central1-a
  • us-central1-b

Estándar

Versión de TPU Tipo de máquina que comienza con Versión mínima de GKE Disponibilidad Zona
TPU Trillium (v6e) ct6e- 1.31.2-gke.1115000 DG
  • asia-northeast1-b
  • europe-west4-a
  • southamerica-west1-a
  • us-central1-b
  • us-east1-d
  • us-east5-a
  • us-east5-b
TPU v5e ct5lp- 1.27.2-gke.2100 DG
  • europe-west4-b
  • us-central1-a
  • us-south1-a
  • us-west1-c
  • us-west4-a
TPU v5p ct5p- 1.28.3-gke.1024000 DG
  • europe-west4-b
  • us-central1-a
  • us-east5-a
TPU v4 ct4p- 1.26.1-gke.1500 DG
  • us-central2-b
TPU v3 ct3p- 1.31.1-gke.1146000 DG
  • europe-west4-a
  • us-central1-a
  • us-central1-b
TPU v3 ct3- 1.31.0-gke.1500 DG
  • europe-west4-a
  • us-central1-a
  • us-central1-b

Elige una topología

Después de elegir una versión de TPU, selecciona una topología que sea compatible con ese tipo de TPU. Según el tipo de TPU, la topología es de dos o tres dimensiones. Los requisitos de paralelismo de tu modelo te ayudan a decidir una topología. Para identificar la cantidad de chips TPU en la porción, calcula el producto de cada tamaño en la topología. Por ejemplo:

  • 2x2x2 es una porción de TPU v4 de varios hosts de 8 chips.
  • 2x2 es una porción de TPU v5e de host único de 4 chips.

Si una topología específica admite nodos de porción de TPU de host único y de varios hosts, la cantidad de chips TPU que solicita tu carga de trabajo determina el tipo de host.

Por ejemplo, TPU v5e (tpu-v5-lite-podslice) admite la topología 2x4 como de host único y de varios hosts. Si:

  • Si solicitas 4 chips en tu carga de trabajo, obtendrás un nodo de varios hosts que tiene 4 chips.
  • Si solicitas 8 chips en tu carga de trabajo, obtienes un nodo de host único que tiene 8 chips de TPU.

Usa la siguiente tabla para elegir el tipo de máquina y la topología de TPU para tu caso de uso:

  • Para el entrenamiento o la inferencia de modelos a pequeña escala, usa TPU v4 o TPU v5e con grupos de nodos de porción de TPU de host único.
  • Para el entrenamiento o la inferencia de modelos a gran escala, usa TPU v4 o TPU v5e con grupos de nodos de porción de TPU de varios hosts.
  • Para el entrenamiento o la inferencia a gran escala, usa Pathways. Pathways simplifica los cálculos de aprendizaje automático a gran escala, ya que permite que un solo cliente de JAX organice cargas de trabajo en varias porciones de TPU grandes. Para obtener más información, consulta Pathways.

Autopilot

Después de elegir un tipo y una topología de TPU, especifícalos en el manifiesto de la carga de trabajo. Para obtener instrucciones, consulta Implementa cargas de trabajo de TPU en GKE Autopilot.

Versión de TPU Tipo de máquina Tipo de grupo de nodos Especificaciones técnicas
TPU Trillium (v6e) tpu-v6e-slice Host único
  • Topología: 1 x 1
  • Cantidad de chips TPU: 1
  • Cantidad de VMs: 1
TPU Trillium (v6e) tpu-v6e-slice Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 4
TPU Trillium (v6e) tpu-v6e-slice Host único
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 8
TPU Trillium (v6e) tpu-v6e-slice Varios hosts
  • Topología: 4x4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU Trillium (v6e) tpu-v6e-slice Varios hosts
  • Topología: 4x8
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU Trillium (v6e) tpu-v6e-slice Varios hosts
  • Topología: 8 x 8
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU Trillium (v6e) tpu-v6e-slice Varios hosts
  • Topología: 8x16
  • Cantidad de chips TPU: 128
  • Cantidad de VMs: 32
TPU Trillium (v6e) tpu-v6e-slice Varios hosts
  • Topología: 16x16
  • Cantidad de chips TPU: 256
  • Cantidad de VMs: 64
TPU v5p tpu-v5p-slice Host único
  • Topología: 2x2x1
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v5p tpu-v5p-slice Varios hosts
  • Topología: 2x2x2
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU v5p tpu-v5p-slice Varios hosts
  • Topología: 2 x 2 x 4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v5p tpu-v5p-slice Varios hosts
  • Topología: 2x4x4
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v5p tpu-v5p-slice Varios hosts
  • Topología: 4x4x4
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU v5p tpu-v5p-slice Varios hosts
  • Topología: {A} x {B} x {C}
  • Cantidad de chips TPU: {A}*{B}*{C}
  • Cantidad de VMs: (A*B*C/4)1
TPU v5e tpu-v5-lite-podslice Host único
  • Topología: 1 x 1
  • Cantidad de chips TPU: 1
  • Cantidad de VMs: 1
TPU v5e tpu-v5-lite-podslice Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v5e tpu-v5-lite-podslice Host único
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 1
TPU v5e tpu-v5-lite-podslice Varios hosts
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU v5e tpu-v5-lite-podslice Varios hosts
  • Topología: 4x4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v5e tpu-v5-lite-podslice Varios hosts
  • Topología: 4x8
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v5e tpu-v5-lite-podslice Varios hosts
  • Topología: 8 x 8
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU v5e tpu-v5-lite-podslice Varios hosts
  • Topología: 8x16
  • Cantidad de chips TPU: 128
  • Cantidad de VMs: 32
TPU v5e tpu-v5-lite-podslice Varios hosts
  • Topología: 16x16
  • Cantidad de chips TPU: 256
  • Cantidad de VMs: 64
TPU v5e (solo host único) tpu-v5-lite-device Host único
  • Topología: 1 x 1
  • Cantidad de chips TPU: 1
  • Cantidad de VMs: 1
TPU v5e (solo host único) tpu-v5-lite-device Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v5e (solo host único) tpu-v5-lite-device Host único
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 1
TPU v4 tpu-v4-podslice Host único
  • Topología: 2x2x1
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v4 tpu-v4-podslice Varios hosts
  • Topología: 2x2x2
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU v4 tpu-v4-podslice Varios hosts
  • Topología: 2 x 2 x 4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v4 tpu-v4-podslice Varios hosts
  • Topología: 2x4x4
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v4 tpu-v4-podslice Varios hosts
  • Topología: 4x4x4
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU v4 tpu-v4-podslice Varios hosts
  • Topología: {A} x {B} x {C}
  • Cantidad de chips TPU: {A}*{B}*{C}
  • Cantidad de VMs: (A*B*C/4)1
TPU v3 tpu-v3-slice Varios hosts
  • Topología: 4x4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 2
TPU v3 tpu-v3-slice Varios hosts
  • Topología: 4x8
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 4
TPU v3 tpu-v3-slice Varios hosts
  • Topología: 8 x 8
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 8
TPU v3 tpu-v3-slice Varios hosts
  • Topología: 8x16
  • Cantidad de chips TPU: 128
  • Cantidad de VMs: 16
TPU v3 tpu-v3-slice Varios hosts
  • Topología: 16x16
  • Cantidad de chips TPU: 256
  • Cantidad de VMs: 32
TPU v3 tpu-v3-device Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
  1. Calculado por el producto de topología dividido por cuatro.

    Se admiten topologías personalizadas para más de 64 chips. Se aplican las siguientes condiciones:

    • Para más de 64 chips, {A}, {B} y {C} deben ser múltiplos de 4.
    • La topología más grande es 16x16x24.
    • Los valores deben ser {A}{B}{C}, como 8x12x16.
  2. No se admiten las topologías personalizadas.

Estándar

Después de elegir un tipo y una topología de TPU, especifícalos en el manifiesto de la carga de trabajo. Para obtener instrucciones, consulta Implementa cargas de trabajo de TPU en GKE Standard.

Versión de TPU Tipo de máquina Tipo de grupo de nodos Especificaciones técnicas
TPU Trillium (v6e) ct6e-standard-1t Host único
  • Topología: 1 x 1
  • Cantidad de chips TPU: 1
  • Cantidad de VMs: 1
TPU Trillium (v6e) ct6e-standard-8t Host único
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 1
TPU Trillium (v6e) ct6e-standard-4t Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU Trillium (v6e) ct6e-standard-4t Varios hosts
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU Trillium (v6e) ct6e-standard-4t Varios hosts
  • Topología: 4x4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU Trillium (v6e) ct6e-standard-4t Varios hosts
  • Topología: 4x8
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU Trillium (v6e) ct6e-standard-4t Varios hosts
  • Topología: 8 x 8
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU Trillium (v6e) ct6e-standard-4t Varios hosts
  • Topología: 8x16
  • Cantidad de chips TPU: 128
  • Cantidad de VMs: 32
TPU Trillium (v6e) ct6e-standard-4t Varios hosts
  • Topología: 16x16
  • Cantidad de chips TPU: 256
  • Cantidad de VMs: 64
TPU v5p ct5p-hightpu-4t Host único
  • Topología: 2x2x1
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v5p ct5p-hightpu-4t Varios hosts
  • Topología: 2x2x2
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU v5p ct5p-hightpu-4t Varios hosts
  • Topología: 2 x 2 x 4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v5p ct5p-hightpu-4t Varios hosts
  • Topología: 2x4x4
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v5p ct5p-hightpu-4t Varios hosts
  • Topología: {A} x {B} x {C}
  • Cantidad de chips TPU: A*B*C
  • Cantidad de VMs: (A*B*C/4)1
TPU v5e ct5lp-hightpu-1t Host único
  • Topología: 1 x 1
  • Cantidad de chips TPU: 1
  • Cantidad de VMs: 1
TPU v5e ct5lp-hightpu-4t Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v5e ct5lp-hightpu-8t Host único
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 1
TPU v5e ct5lp-hightpu-4t Varios hosts
  • Topología: 2 x 4
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU v5e ct5lp-hightpu-4t Varios hosts
  • Topología: 4x4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v5e ct5lp-hightpu-4t Varios hosts
  • Topología: 4x8
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v5e ct5lp-hightpu-4t Varios hosts
  • Topología: 8 x 8
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU v5e ct5lp-hightpu-4t Varios hosts
  • Topología: 8x16
  • Cantidad de chips TPU: 128
  • Cantidad de VMs: 32
TPU v5e ct5p-hightpu-4t Varios hosts
  • Topología: 2x4x4
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v5e ct5p-hightpu-4t Host único
  • Topología: 2x2x1
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v4 ct4p-hightpu-4t Varios hosts
  • Topología: 2x2x2
  • Cantidad de chips TPU: 8
  • Cantidad de VMs: 2
TPU v4 ct4p-hightpu-4t Varios hosts
  • Topología: 2 x 2 x 4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v4 ct4p-hightpu-4t Varios hosts
  • Topología: 2x4x4
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v4 ct4p-hightpu-4t Varios hosts
  • Topología: {A} x {B} x {C}
  • Cantidad de chips TPU: A*B*C
  • Cantidad de VMs: (A*B*C/4)1
TPU v3 ct3-hightpu-4t Host único
  • Topología: 2x2
  • Cantidad de chips TPU: 4
  • Cantidad de VMs: 1
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 4x4
  • Cantidad de chips TPU: 16
  • Cantidad de VMs: 4
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 4x8
  • Cantidad de chips TPU: 32
  • Cantidad de VMs: 8
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 8 x 8
  • Cantidad de chips TPU: 64
  • Cantidad de VMs: 16
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 8x16
  • Cantidad de chips TPU: 128
  • Cantidad de VMs: 32
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 16x16
  • Cantidad de chips TPU: 256
  • Cantidad de VMs: 64
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 16 x 32
  • Cantidad de chips TPU: 512
  • Cantidad de VMs: 128
TPU v3 ct3p-hightpu-4t Varios hosts
  • Topología: 32 x 32
  • Cantidad de chips TPU: 1,024
  • Cantidad de VMs: 256
  1. Calculado por el producto de topología dividido por cuatro.

Configuración avanzada

En las siguientes secciones, se describen las prácticas recomendadas de programación para configuraciones avanzadas de TPU.

Ajuste de escala automático de TPU en GKE

GKE es compatible con unidades de procesamiento tensorial (TPU) para acelerar las cargas de trabajo de aprendizaje automático. El grupo de nodos de porción de TPU de host único y el grupo de nodos de porción de TPU de varios hosts admiten el ajuste de escala automático y el aprovisionamiento automático.

Con la marca --enable-autoprovisioning en un clúster de GKE, este último crea o borra grupos de nodos de porción de TPU de host único o multihost con una versión de TPU y una topología que cumple con los requisitos de las cargas de trabajo pendientes.

Cuando usas --enable-autoscaling, GKE escala el grupo de nodos según su tipo de la siguiente manera:

  • Grupo de nodos de porción de TPU de host único: GKE agrega o quita nodos TPU en el grupo de nodos existente. El grupo de nodos puede contener cualquier cantidad de nodos TPU entre cero y el tamaño máximo del grupo de nodos según lo determinado por --max-nodes y el valor --total-max-nodes. Cuando el grupo de nodos escala, todos los nodos TPU del grupo tienen el mismo tipo de máquina y topología. Para obtener más información sobre cómo crear un grupo de nodos de porción de TPU de host único, consulta Crea un grupo de nodos.

  • Grupo de nodos de porción de TPU de varios hosts: GKE escala verticalmente el grupo de nodos de forma atómica desde cero hasta la cantidad de nodos necesarios para satisfacer la topología de TPU. Por ejemplo, con un grupo de nodos TPU con un tipo de máquina ct5lp-hightpu-4t y una topología de 16x16, el grupo de nodos contiene 64 nodos. El escalador automático de GKE garantiza que este grupo de nodos tenga exactamente 0 o 64 nodos. Cuando se reduce la escala, GKE expulsa todos los Pods programados y vacía todo el grupo de nodos a cero. Para obtener más información sobre cómo crear un grupo de nodos de porción de TPU de varios hosts, consulta Crea un grupo de nodos.

Aprovisiona almacenamiento adicional para una porción de TPU

Una VM en una porción de TPU incluye un disco de arranque de 100 GiB. Si tu segmento de TPU necesita almacenamiento adicional para el entrenamiento o el preprocesamiento, o si necesitas guardar puntos de control, puedes usar el almacenamiento de Google Cloud Hyperdisk o Balanced Persistent Disk si está disponible para tu TPU. Para obtener más información sobre los tipos de discos compatibles con cada versión de TPU, consulta la compatibilidad de TPU con Hyperdisk y Persistent Disk.

CPU para clústeres estándar

Esta sección no se aplica a los clústeres de Autopilot, ya que GKE coloca cada porción de TPU en su propio nodo. Para obtener más información, consulta Cómo funcionan las TPUs en el modo Autopilot.

Para los clústeres estándar, considera las siguientes prácticas recomendadas de programación.

Para programar una carga de trabajo que no sea de TPU en una VM en un nodo de porción de TPU, asegúrate de que tu Pod de GKE pueda tolerar el taint google.com/tpu. Si deseas que la carga de trabajo se implemente en nodos específicos, usa selectores de nodos.

La administración de recursos y la prioridad de Kubernetes tratan a las VMs en las TPUs de la misma manera que a otros tipos de VM. Para dar prioridad de programación a los pods que requieren TPUs en lugar de otros pods en los mismos nodos, solicita la CPU o la memoria máximas para esas porciones de TPU. Las porciones de TPU de baja prioridad deben hacer lo siguiente:

  1. Establecer solicitudes de CPU y memoria bajas a fin de asegurarte de que el nodo tenga suficientes recursos asignables para las cargas de trabajo de TPU. Para obtener más información, consulta Cómo Kubernetes aplica solicitudes y límites de recursos.
  2. No establezcas un límite de CPU (ilimitado) para garantizar que los pods puedan tener aumentos de actividad a fin de usar todos los ciclos sin usar.
  3. Establece los límites de memoria adecuados para garantizar que los pods puedan funcionar correctamente sin correr el riesgo de expulsión por presión de nodos.

Si un pod de Kubernetes no solicita CPU ni memoria (incluso si solicita TPU), Kubernetes lo considera un pod de mejor esfuerzo, y no hay garantía de que necesite CPU ni memoria. Solo los pods que solicitan CPU y memoria de forma explícita tienen esas garantías. Para una programación específica de Kubernetes, configura las necesidades del pod con una solicitud de CPU y memoria explícita. Para obtener más información, consulta Administración de recursos para Pods y contenedores.

Para obtener más información sobre las prácticas recomendadas, consulta Prácticas recomendadas de Kubernetes: Solicitudes y límites de recursos.

Reduce la interrupción de la carga de trabajo

Si usas TPU para entrenar un modelo de aprendizaje automático y se interrumpe tu carga de trabajo, se pierde todo el trabajo realizado desde el último punto de control. Para disminuir la probabilidad de que se interrumpa tu carga de trabajo, haz lo siguiente:

  • Establece una prioridad más alta para este trabajo que para todos los demás trabajos: Si los recursos son escasos, el programador de GKE anula los trabajos de prioridad más baja para programar un trabajo de prioridad más alta. Esto también garantiza que tu carga de trabajo de prioridad más alta reciba todos los recursos que necesita (hasta el total de recursos disponibles en el clúster). Para obtener más información, consulta Interrupción y prioridad del pod.
  • Configurar exclusión de mantenimiento: Una exclusión de mantenimiento es un período no recurrente durante el cual se prohíbe el mantenimiento automático. Para obtener más información, consulta Exclusiones de mantenimiento.
  • Usa Pods de tiempo de ejecución extendido en Autopilot: Usa Pods de tiempo de ejecución extendido para un período de gracia de hasta siete días antes de que GKE finalice tus Pods para reducir la escala verticalmente o las actualizaciones de nodos.
  • Usa la programación de recopilación en TPU Trillium: Usa recopilaciones para indicar que un grupo de nodos de porción de TPU forma parte de una carga de trabajo de procesamiento. Google Cloud limita y optimiza las interrupciones en las operaciones de las cargas de trabajo de inferencia. Para obtener más información, consulta Cómo funciona la programación de la recopilación.

Estas recomendaciones ayudan a minimizar las interrupciones, pero no a evitarlas. Por ejemplo, aún puede ocurrir una usurpación debido a una falla de hardware o una interrupción para la desfragmentación. Del mismo modo, configurar una exclusión de mantenimiento de GKE no impide los eventos de mantenimiento de Compute Engine.

Práctica recomendada:

Guarda los puntos de control con frecuencia y agrega código a la secuencia de comandos de entrenamiento para que comience desde el último punto de control cuando se reanude.

Controla las interrupciones debidas al mantenimiento de los nodos

Los nodos de GKE que alojan las TPU 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.

Maximiza el uso de TPU

Para maximizar tu inversión en TPU, programa una combinación de prioridades de trabajo y colócalas en fila para maximizar la cantidad de tiempo que operan tus TPU. Para la programación y la interrupción a nivel del trabajo, debes usar un complemento de Kubernetes que organice los trabajos en colas.

Práctica recomendada:

Usa Kueue para organizar los trabajos en colas.

¿Qué sigue?