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. Por lo general, recomendamos que uses 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.

Te recomendamos que uses 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 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 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 v5e (solo host único)
tpu-v5-lite-device De 24 a 224 De 48 a 384 De 1 a 2 8
TPU v4
tpu-v4-podslice 240 407 2 4,096

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 v5p
ct5p-hightpu-4t 208 448 2
TPU v5e
ct5l-hightpu-1t 24 48 1 Mayor
TPU v5e
ct5l-hightpu-4t 112 192 1 Media
TPU v5e
ct5l-hightpu-8t 224 384 2 Menor
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

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 asignación de costos y la medición de uso de GKE no incluyen ningún dato sobre el uso o los costos de la TPU v4 reservada.
  • TPU v5p y v5e no admiten la transmisión de imágenes o de extracción en us-east5.
  • 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.

Valida la disponibilidad de TPU en GKE

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

Autopilot

Consulta Regiones y zonas de TPU en la documentación de Cloud TPU.

Estándar

En la siguiente tabla, se muestra la disponibilidad de las TPU para cada versión y tipo de máquina:

Versión de TPU Tipo de máquina que comienza con Versión mínima de GKE Disponibilidad Zona
TPU v5e ct5l- 1.27.2-gke.2100 Disponible de manera general europe-west4-b
us-central1-a
TPU v5e ct5lp- 1.27.2-gke.2100 Disponible de manera general europe-west4-a1
us-central1-a1
us-east1-c
us-east5-b1
us-west1-c
us-west4-a
us-west4-b1
TPU v5p ct5p- 1.28.3-gke.1024000 Disponible de manera general us-east1-d
us-east5-a
us-east5-c
TPU v4 ct4p- 1.26.1-gke.1500 Disponible de manera general us-central2-b
  1. Puedes crear un grupo de nodos TPU v5e de host único con un tipo de máquina que comienza con ct5lp-, pero no con ct5l-, en ciertas zonas (europe-west4-a, us-east5-b y us-west4-b). Puedes usar ct5lp-hightpu-4t con una topología de al menos 2x4 o superior en esas zonas. Para crear una TPU v5e de host único en la región us-west4, elige la zona us-west4-a y usa tipos de máquinas que comienzan con ct5lp-, como ct5lp-hightpu-1t. Para crear una TPU v5e de host único en las otras regiones que se indican en la tabla anterior, usa tipos de máquina que comiencen con ct5l- (como ct5l-hightpu-1t, ct5l-hightpu-4t o ct5l-hightpu-8t). Ten en cuenta que los tipos de máquina que comienzan con ct5l- requieren una cuota diferente que los tipos de máquina que comienzan con ct5lp-.

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.

Autopilot

Versión de TPU Tipo de máquina Topología Cantidad de chips TPU en una porción Cantidad de nodos Tipo de grupo de nodos
TPU v5p tpu-v5p-slice 2x2x1 4 1 Host único
2x2x2 8 2 Varios hosts
2x2x4 16 4 Varios hosts
2x4x4 32 8 Varios hosts
4x4x4 64 16 Varios hosts
{A}x{B}x{C} A*B*C (A*B*C/4)1 Varios hosts
TPU v5e tpu-v5-lite-podslice2 1x1 1 1 Host único
2x2 4 1
2x4 8 1
2x4 2 1 Varios hosts
4x4 16 4
4x8 32 8
8x8 64 16
8x16 128 32
16x16 256 64
TPU v5e (solo host único) tpu-v5-lite-device 1x1 1 1 Host único
2x2 4 1
2x4 8 1
TPU v4 tpu-v4-podslice2 2x2x1 4 1 Host único
2x2x2 8 2 Varios hosts
2x2x4 16 4 Varios hosts
2x4x4 32 8 Varios hosts
4x4x4 64 16 Varios hosts
{A}x{B}x{C} A*B*C (A*B*C/4)1 Varios hosts
  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.

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.

Estándar

Versión de TPU Tipo de máquina Topología Cantidad de chips TPU Cantidad de VM Tipo de grupo de nodos
TPU v5p ct5p-hightpu-4t 2x2x1 4 1 Host único
2x2x2 8 2 Varios hosts
2x2x4 16 4 Varios hosts
2x4x4 32 8 Varios hosts
{A}x{B}x{C} A*B*C (A*B*C/4)1 Varios hosts
TPU v5e ct5l-hightpu-1t 1x1 1 1 Host único
ct5l-hightpu-4t 2x2 4 1 Host único
ct5l-hightpu-8t 2x4 8 1 Host único
ct5lp-hightpu-1t 1x1 1 1 Host único
ct5lp-hightpu-4t 2x2 4 1 Host único
ct5lp-hightpu-8t 2x4 8 1 Host único
ct5lp-hightpu-4t 2x4 8 2 Varios hosts
4x4 16 4 Varios hosts
4x8 32 8 Varios hosts
8x8 64 16 Varios hosts
8x16 128 32 Varios hosts
16x16 256 64 Varios hosts
TPU v4 ct4p-hightpu-4t 2x2x1 4 1 Host único
2x2x2 8 2 Varios hosts
2x2x4 16 4 Varios hosts
2x4x4 32 8 Varios hosts
{A}x{B}x{C} A*B*C (A*B*C/4)1 Varios hosts
  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.

Reserva de TPU

Las reservas de TPU están disponibles cuando se compra un compromiso. Cualquier reserva de TPU se puede usar con GKE.

Cuando crees un grupo de nodos de porción de TPU, usa las marcas --reservation y --reservation-affinity=specific para consumir una instancia de TPU reservada.

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.

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.

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. Te recomendamos usar Kueue para ese caso de uso.

¿Qué sigue?