En este documento se explica cómo implementar y gestionar cargas de trabajo con la función Modo de capacidad total de TPU en GKE. Todas las reservas en modo Capacidad te ofrecen un control mejorado de tus recursos de TPU, lo que te permite colocar tus cargas de trabajo con un control preciso dentro de tu capacidad reservada.
Este documento está dirigido a ingenieros de aprendizaje automático y administradores y operadores de plataformas que quieran usar la orquestación de contenedores de Kubernetes con un control granular sobre las implementaciones de TPU.
Antes de leer este documento, asegúrate de que conoces los siguientes conceptos:
¿Qué es el modo Capacidad total de la TPU?
El modo de capacidad total de TPU, habilitado por Cluster Director de TPU, te ofrece un control total sobre la capacidad de TPU reservada. TPU Cluster Director es un servicio de gestión que te permite controlar tus TPUs mediante reservas.
A diferencia del modo gestionado anterior, en el que Google Cloud reserva una parte de tu capacidad para gestionar los fallos de hardware, el modo Toda la capacidad te da acceso a todos los recursos de TPU que hayas reservado. Este modo ofrece visibilidad completa del estado del hardware, pero también te transfiere la responsabilidad de gestionar los fallos de los nodos y el mantenimiento programado.
Para obtener más información sobre las funciones clave del modo de capacidad total, consulta Modo de capacidad total en la descripción general de TPU Cluster Director.
Terminología relacionada con el modo Capacidad total en GKE
En la siguiente tabla se incluyen los términos y las equivalencias definidos por el tamaño de un bloque, un subbloque y un cubo en la versión Ironwood (TPU7x). Un cubo es una 4x4x4 topología de chips de TPU interconectados que solo se aplica a topologías en tuplas de 3 elementos ({A}x{B}x{C}).
| Recurso de TPU | Núcleos | Chips | Hosts | Cubos |
|---|---|---|---|---|
| 1 chip | 2 | 1 | - | - |
| 1 anfitrión | 8 | 4 | 1 | - |
| 1 subbloque | 128 | 64 | 16 | 1 |
| Un bloque contiene 144 subbloques | 18432 | 9216 | 2304 | 144 |
Para obtener más información sobre las topologías permitidas en un bloque, consulta Elegir una topología.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la CLI de gcloud, obtén la versión más reciente ejecutando el comando
gcloud components update. Es posible que las versiones anteriores de la interfaz de línea de comandos de gcloud no admitan la ejecución de los comandos de este documento.
- Asegúrate de que tienes un clúster estándar con la versión 1.34.0-gke.2201000 o una posterior. Para crear un clúster, consulta Crear un clúster regional.
- Asegúrate de que tienes suficiente cuota de TPUs en la región que quieras usar.
- Instala JobSet v0.2.3 o una versión posterior.
Limitaciones
El modo de capacidad total de TPU en GKE solo admite versiones de Ironwood (TPU7x).
Usar el modo de capacidad total de TPU en GKE
En esta sección se describe el flujo de trabajo para usar el modo de capacidad total de TPU en GKE.
- Familiarízate con Cluster Director de TPU.
- Solicitar capacidad de TPU en el modo Toda la capacidad.
- Consulta la topología y el estado de las reservas en el modo Toda la capacidad.
- Completa el paso que se indica en este documento:
- Gestionar eventos de mantenimiento con TPUs en el modo Capacidad total.
- Informa sobre los hosts defectuosos y repáralos con TPUs en el modo Capacidad total.
Crear un grupo de nodos en una reserva en modo Capacidad total
Con el modo Capacidad de GKE, puedes crear grupos de nodos de las siguientes formas:
- Un grupo de nodos en el que GKE selecciona el bloque o el subbloque de tu reserva de capacidad total de TPU.
- Un grupo de nodos que se dirige a un bloque o subbloque concreto de una reserva en el modo Capacidad total de TPU.
GKE selecciona el bloque o subbloque de tu reserva de capacidad total de TPU
En este modo, GKE selecciona la ubicación del grupo de nodos en tu reserva de capacidad total de TPU. Este proceso es similar al de crear grupos de nodos con otras opciones de aprovisionamiento de TPUs, como las VMs bajo demanda o las Spot VMs.
Para crear un grupo de nodos, usa el comando gcloud container node-pools create con la marca --reservation.
Especifica el nombre completo del recurso de tu reserva de TPU como valor de la marca --reservation.
Para ver un ejemplo de un comando de creación de un grupo de nodos, consulta Crear un grupo de nodos manualmente.
Orientar a un bloque o subbloque de una reserva
El modo Toda la capacidad de TPU te permite orientar cargas de trabajo paralelas a un bloque o subbloque específico de tu reserva de TPU. Esta función es útil para cargas de trabajo que requieren una proximidad entre los chips de TPU para minimizar la latencia.
Consulta las configuraciones de bloque, subbloque y host disponibles. Sigue los pasos que se indican en el artículo Ver la topología y el estado de salud de las reservas del modo Toda la capacidad.
Crea una política de cargas de trabajo:
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGIONHaz los cambios siguientes:
WORKLOAD_POLICY_NAME: un nombre para tu política de carga de trabajo.TPU_TOPOLOGY: la topología de la TPU Ironwood (TPU7x). Por ejemplo,2x2x2. Para ver todas las topologías compatibles con Ironwood (TPU7x), consulta el artículo Planificar TPUs en GKE.PROJECT_ID: tu ID de proyecto Google Cloud .REGION: la región de la política de cargas de trabajo. Una política de carga de trabajo es un recurso regional y se puede reutilizar en grupos de nodos que compartan la misma topología.
Para crear un grupo de nodos y orientarlo a un bloque o subbloque concreto de la reserva, usa la marca
--reservationpara especificar el nombre completo del recurso del bloque o subbloque de destino en la reserva.Para orientar tu reserva a un bloque específico, usa el siguiente comando:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=tpu7x-standard-4t \ --placement-policy=WORKLOAD_POLICY_NAME \ --zone=ZONE \ --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAMEPara orientar un sub-bloque específico dentro de un bloque, usa el siguiente comando:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=tpu7x-standard-4t \ --placement-policy=WORKLOAD_POLICY_NAME \ --zone=ZONE \ --reservation=project/PROJECT/reservation/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAMEHaz los cambios siguientes:
NODE_POOL_NAME: el nombre del nuevo grupo de nodos.CLUSTER_NAME: el nombre de tu clúster de GKE.WORKLOAD_POLICY_NAME: el nombre de la política de carga de trabajo que has creado.ZONE: la zona del grupo de nodos (por ejemplo,us-central1-a).PROJECT: tu ID de proyecto Google Cloud .RESERVATION_NAME: el nombre de tu reserva de TPU.BLOCK_NAME: el bloque específico de tu reserva.SUB_BLOCK_NAME: el subbloque específico de tu reserva.
En los comandos anteriores,
Programar cargas de trabajo
Después de crear un grupo de nodos con VMs de TPU en el modo Toda la capacidad, puedes implementar tu carga de trabajo como en cualquier otro grupo de nodos de TPU. En el modo Toda la capacidad de TPU, no hay diferencias adicionales en la programación de cargas de trabajo en comparación con los grupos de nodos que usan reservas estándar respaldadas por SLOs.
Para obtener más información y ejemplos de cargas de trabajo que usan TPUs, consulta Ejecutar una carga de trabajo en nodos de segmento de TPU y Ejecutar una carga de trabajo de varios segmentos.
Gestionar fallos de nodos
Las reservas del modo Toda la capacidad de TPU son reservas sin retención. Sin retención significa que recibes la capacidad total de la TPU, incluida la parte queGoogle Cloud suele retener para las conmutaciones por error en el modo de capacidad gestionada.
En el modo de capacidad total de TPU, si una VM falla debido a problemas como un fallo de hardware, Google Cloud se intenta recuperar la VM en el mismo host (reparación in situ). Por lo tanto, te recomendamos que mantengas una capacidad de reserva para poder reprogramar las cargas de trabajo durante los fallos de la infraestructura.
Fallo y recuperación de nodos
Cuando falla un nodo en una reserva del modo Capacidad total de TPU, se producen los siguientes eventos:
- Google Cloud
inicia un evento de reparación de la instancia de VM de Compute Engine que ha fallado. Este proceso intenta restaurar la VM a un estado
RUNNINGy devolver el estado del nodo de GKE aREADY. - La VM de TPU pasa al estado de reparación y es posible que falle cualquier carga de trabajo que se ejecute en ese nodo, en función de su política de conmutación por error. El estado del
grupo de nodos no cambia a
ERRORaunque una o varias de sus VMs tengan errores.
Para monitorizar el estado de salud de tus nodos, sigue estos pasos:
Lista los nodos del grupo de nodos:
kubectl get nodesLos nodos fallidos tienen el estado
NotReady.Monitoriza el estado del nodo de Compute Engine:
En el caso de las VMs de TPU en el modo Toda la capacidad, usa
gcloud compute instances describe. Este comando también proporciona el estado físico de la topología para encontrar detalles sobre el host, el subbloque y el bloque.gcloud compute instances describe VM_NAME \ --format="table[box,title=VM-Position](resourceStatus.physical_host_topology:label=location)" \ --zone=ZONEHaz los cambios siguientes:
VM_NAME: el nombre de la instancia de VM de TPU.ZONE: la zona de la VM, por ejemplo,us-central1-a.
Para obtener más información sobre cómo recuperar la información de topología y estado de tu capacidad del modo Capacidad total, consulta Ver la topología y el estado de las reservas del modo Capacidad total.
Gestionar el mantenimiento
Para gestionar posibles interrupciones y asegurarte de que tus cargas de trabajo sigan siendo resilientes, puedes gestionar el mantenimiento de nodos individuales mediante las políticas de mantenimiento de GKE. Para obtener más información, consulta el artículo sobre ventanas de mantenimiento y exclusiones de mantenimiento.
GKE no admite el mantenimiento de grupos para las VMs de TPU en una reserva en modo AllCapacity. Para llevar a cabo el mantenimiento de grupos a nivel de subbloque, bloque o reserva, usa las APIs de Compute Engine. Para obtener más información, consulta Gestionar eventos de mantenimiento con TPUs en el modo Capacidad total.
Limpieza
Para evitar que se apliquen cargos no deseados en tu cuenta Google Cloud , elimina los grupos de nodos de TPU que ya no tengan cargas de trabajo programadas. Si las cargas de trabajo en ejecución deben finalizar correctamente, usa el comando kubectl drain para limpiar las cargas de trabajo antes de eliminar el grupo de nodos.
Eliminar un grupo de nodos de TPU:
gcloud container node-pools delete NODE_POOL_NAME \ --location=LOCATION \ --cluster=CLUSTER_NAMEHaz los cambios siguientes:
NODE_POOL_NAME: el nombre del grupo de nodos.CLUSTER_NAME: el nombre del clúster.LOCATION: la ubicación de cálculo del clúster.
Siguientes pasos
- Consulta más información sobre las TPUs en GKE.
- Consulta cómo desplegar cargas de trabajo de TPU en GKE Standard.
- Consulta más información sobre TPU Cluster Director.