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:
- 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.
- 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.
- 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.
- 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-a 1 |
us-central1-a 1 |
||||
us-east1-c |
||||
us-east5-b 1 |
||||
us-west1-c |
||||
us-west4-a |
||||
us-west4-b 1 |
||||
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 |
-
Puedes crear un grupo de nodos TPU v5e de host único con un tipo de máquina que comienza con
ct5lp-
, pero no conct5l-
, en ciertas zonas (europe-west4-a
,us-east5-b
yus-west4-b
). Puedes usarct5lp-hightpu-4t
con una topología de al menos2x4
o superior en esas zonas. Para crear una TPU v5e de host único en la regiónus-west4
, elige la zonaus-west4-a
y usa tipos de máquinas que comienzan conct5lp-
, comoct5lp-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 conct5l-
(comoct5l-hightpu-1t
,ct5l-hightpu-4t
oct5l-hightpu-8t
). Ten en cuenta que los tipos de máquina que comienzan conct5l-
requieren una cuota diferente que los tipos de máquina que comienzan conct5lp-
. ↩
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-podslice 2 |
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-podslice 2 |
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 |
-
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}
, como8x12x16
.
- Para más de 64 chips,
-
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 |
-
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 de16x16
, 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:
- 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.
- 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.
- 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?
- Sigue las implementaciones de cargas de trabajo de TPU en GKE para configurar Cloud TPU con GKE.
- Obtener más recomendaciones sobre cómo usar Cloud TPU para tus tareas de aprendizaje automático.
- Compila aprendizaje automático a gran escala en Cloud TPU con GKE.
- Entrega modelos de lenguaje grande con KubeRay en TPU.