En esta guía se muestra cómo optimizar el aprovisionamiento de unidades de procesamiento de tensor (TPUs) mediante la reserva futura en modo calendario. La reserva futura en el modo Calendario es un asesor y recomendador de calendario integrado que puede ayudarte a localizar capacidad de TPU y planificar con antelación. Puedes solicitar capacidad para una hora de inicio y una duración específicas, entre 1 y 90 días, y el recomendador te proporcionará fechas sugeridas.
Esta guía está dirigida a ingenieros de aprendizaje automático, administradores y operadores de plataformas, y especialistas en datos e IA que estén interesados en usar las funciones de orquestación de contenedores de Kubernetes para ejecutar cargas de trabajo por lotes. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Para obtener más información, consulta Acerca de la reserva futura en el modo Calendario.
Casos prácticos
La reserva futura en modo de calendario es la opción más adecuada para cargas de trabajo con solicitudes programadas, a corto plazo y de alta demanda, como el entrenamiento o los modelos de inferencia por lotes que requieren una alta disponibilidad a la hora de inicio solicitada.
Si tu carga de trabajo requiere recursos aprovisionados dinámicamente según sea necesario, durante un máximo de 7 días sin reservas a largo plazo ni una gestión compleja de cuotas, te recomendamos que uses la opción de consumo inicio flexible. Para obtener más información, consulta Acerca del aprovisionamiento de GPU y TPU con flex-start.
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 una de las siguientes opciones:
- Un clúster estándar que ejecute la versión 1.28.3-gke.1098000 o una posterior.
- un clúster de Autopilot que ejecute la versión 1.30.3-gke.1451000 o una posterior.
Solicitar una reserva futura en el modo de calendario para las TPUs
El proceso para solicitar TPUs con reserva futura en modo Calendario implica los siguientes pasos:
- Asegúrate de que tienes suficiente cuota para los recursos que no forman parte de una reserva cuando se crean las VMs, como los discos o las direcciones IP. Las solicitudes de reserva futuras en modo calendario no requieren cuota de Compute Engine.
- Sigue los pasos que se indican en Crear una solicitud en el modo Calendario. Estos pasos incluyen lo siguiente:
- Consulta la disponibilidad futura de las TPU.
- Crea y envía una solicitud de reserva futura en el modo de calendario para las TPUs.
- Espera a que Google Cloud apruebe tu solicitud.
- Crea un grupo de nodos de TPU que use tu reserva.
Crear un grupo de nodos
Esta sección solo se aplica a los clústeres estándar, ya que el modo Autopilot crea nodos automáticamente en función de las cargas de trabajo.
Puedes usar tu reserva al crear grupos de nodos de porciones de TPU de un solo host o de varios hosts.
Crear un grupo de nodos de segmento de TPU de un solo host
Puedes crear un grupo de nodos de segmento de TPU de un solo host con Google Cloud CLI.
gcloud container node-pools create NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--reservation-affinity=specific \ This is required
--reservation=RESERVATION
Haz los cambios siguientes:
NODE_POOL_NAME: el nombre del nuevo grupo de nodos.CONTROL_PLANE_LOCATION: el nombre de la zona en función de la versión de TPU que quieras usar. Para identificar una ubicación disponible, consulta Disponibilidad de las TPUs en GKE.CLUSTER_NAME: el nombre del clúster.NODE_ZONES: lista separada por comas de una o varias zonas en las que GKE crea el grupo de nodos.MACHINE_TYPE: el tipo de máquina que se va a usar en los nodos. Para obtener más información sobre los tipos de máquinas compatibles con TPU, consulta la tabla de la sección Elegir la versión de TPU.RESERVATION: el nombre de la reserva de calendario que se va a usar.
Para ver una lista completa de todas las marcas que puedes especificar, consulta la referencia de gcloud container clusters create.
Una vez que hayas creado un grupo de nodos con la reserva de calendario, podrás implementar tu carga de trabajo como con cualquier otro grupo de nodos de TPU. Consumir una reserva futura en el modo Calendario funciona igual que con cualquier otro tipo de reserva. Para obtener más información, consulta el artículo sobre cómo consumir recursos de zona reservados.
Crear un grupo de nodos de un slice de TPU de varios hosts
Los pasos para crear un grupo de nodos de un slice de TPU de varios hosts varían en función de si usas Ironwood (TPU7x) o una versión anterior de TPU.Ironwood (TPU7x)
Puedes crear un grupo de nodos de slice de TPU multihost en la versión Ironwood (TPU7x) mediante Google Cloud CLI o Terraform:
gcloud
Para crear un grupo de nodos de un segmento de TPU de varios hosts con Ironwood (TPU7x), primero debes crear una política de carga de trabajo.
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 de Ironwood (TPU7x) admitidas, consulta la sección de topología.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.
Crea el grupo de nodos con la política de carga de trabajo:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=us-central1 \ --node-locations=us-central1-c \ --machine-type=tpu7x-standard-4t \ --reservation-affinity=specific \ --reservation=FUTURE_RESERVATION_NAME \ --placement-policy=WORKLOAD_POLICYHaz los cambios siguientes:
NODE_POOL_NAME: el nombre del nuevo grupo de nodos.WORKLOAD_POLICY: el nombre de la política de carga de trabajo que has creado.FUTURE_RESERVATION_NAME: el nombre de tu reserva futura.
Este comando crea un grupo de nodos llamado NODE_POOL_NAME con las siguientes características:
--machine-type=tpu7x-standard-4tespecifica el tipo de máquina Ironwood (TPU7x).
Terraform
- Asegúrate de usar la versión 4.84.0 o una posterior del proveedor
google. Crea una política de cargas de trabajo:
resource "google_compute_resource_policy" { name = "WORKLOAD_POLICY_NAME" region = CLUSTER_LOCATION workload_policy { type = "HIGH_THROUGHPUT" accelerator_topology = "TPU_TOPOLOGY" } }Haz los cambios siguientes:
WORKLOAD_POLICY_NAME: un nombre para tu política de carga de trabajo.CLUSTER_LOCATION: ubicación de cálculo del clúster. Te recomendamos que tengas un clúster regional para aumentar la fiabilidad del plano de control de Kubernetes. También puedes usar un clúster zonal. Para obtener más información, consulta Seleccionar una versión y una topología de TPU.TPU_TOPOLOGY: la topología de la TPU Ironwood (TPU7x). Por ejemplo,2x2x2. Para ver todas las topologías de Ironwood (TPU7x) compatibles, consulta Planificar TPUs.
Para obtener más información sobre la referencia de
google_compute_resource_policy, consulta Proveedor de Terraform.En tu configuración de Terraform, añade el siguiente bloque:
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { policy_name = WORKLOAD_POLICY_NAME } }Haz los cambios siguientes:
NODE_POOL_RESOURCE_NAME: el nombre del recurso de grupo de nodos en la plantilla de Terraform.PROJECT_ID: tu ID de proyecto.CLUSTER_NAME: el nombre del clúster al que quieres añadir el grupo de nodos.POOL_NAME: el nombre del grupo de nodos que se va a crear.NODE_ZONES: lista separada por comas de una o varias zonas en las que GKE crea el grupo de nodos.NUM_NODES: número de nodos del grupo de nodos. Debe ser cero o el producto del número de chips de TPU dividido entre cuatro, ya que en las porciones de TPU de varios hosts, cada nodo de la porción de TPU tiene cuatro chips. Por ejemplo, siTPU_TOPOLOGYes4x8, hay 32 chips, lo que significa queNUM_NODESdebe ser 8. Para obtener más información sobre las topologías de TPU, consulta la tabla de la sección Elegir la versión de TPU.TPU_TOPOLOGY: indica la topología física seleccionada del segmento de TPU. El formato de la topología depende de la versión de TPU que estés usando. Para obtener más información sobre las topologías de TPU, consulta la tabla de la sección Elegir una topología.
También puedes usar las siguientes variables:
RESERVATION_NAME: si usas una reserva de TPU, proporciona una lista de etiquetas de recursos de reserva que se usarán al crear el grupo de nodos. Para obtener más información sobre cómo rellenar el campoRESERVATION_LABEL_VALUESenreservation_affinity, consulta Proveedor de Terraform.autoscaling: crea un grupo de nodos con el autoescalado habilitado. Cuando GKE escala un grupo de nodos de un segmento de TPU multihost, escala el grupo de nodos de forma atómica de cero al tamaño máximo.MAX_NODES: tamaño máximo del grupo de nodos. El valor debe ser igual al producto de los valores definidos enTPU_TOPOLOGY({A}x{B}x{C}) dividido por el número de chips de cada máquina virtual. Por ejemplo, siTPU_TOPOLOGYes2x2x2, el producto es 8. Como cada VM detpu7x-standard-4ttiene 4 chips, el número de nodos es 2.
spot: el grupo de nodos que usará Spot VMs para los nodos de la porción de TPU. Este ajuste no se puede cambiar después de crear el grupo de nodos. Para obtener más información, consulta Máquinas virtuales de acceso puntual.flex_start: el grupo de nodos que usará la opción de consumo flex-start. Este ajuste no se puede definir entruesispotestá habilitado.
Otras versiones de TPU
Puedes crear un grupo de nodos de slice de TPU multihost en las versiones v3, v4, v5p, v5e y Trillium (v6e) mediante la CLI de Google Cloud, Terraform o la Google Cloud consola.
gcloud
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--reservation-affinity=specific \
--reservation=FUTURE_RESERVATION_NAME
Haz los cambios siguientes:
NODE_POOL_NAME: el nombre del nuevo grupo de nodos.CLUSTER_NAME: el nombre del clúster.CONTROL_PLANE_LOCATION: el nombre de la zona en función de la versión de TPU que quieras usar. Para identificar una ubicación disponible, consulta Disponibilidad de las TPUs en GKE.NODE_ZONES: lista separada por comas de una o varias zonas en las que GKE crea el grupo de nodos.MACHINE_TYPE: el tipo de máquina que se va a usar en los nodos. Para obtener más información sobre los tipos de máquinas compatibles con TPU, consulta la tabla de la sección Elegir la versión de TPU.TPU_TOPOLOGY: la topología de la TPU. Por ejemplo,2x2x2. Para ver todas las topologías de TPU admitidas, consulta la sección de topología.FUTURE_RESERVATION_NAME: el nombre de tu reserva futura.
Terraform
- Asegúrate de usar la versión 4.84.0 o una posterior del proveedor
google. Añade el siguiente bloque a tu configuración de Terraform:
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } placement_policy { type = "COMPACT" tpu_topology = TPU_TOPOLOGY } }Haz los cambios siguientes:
NODE_POOL_RESOURCE_NAME: el nombre del recurso de grupo de nodos en la plantilla de Terraform.PROJECT_ID: tu ID de proyecto.CLUSTER_NAME: el nombre del clúster al que quieres añadir el grupo de nodos.POOL_NAME: el nombre del grupo de nodos que se va a crear.CLUSTER_LOCATION: calcula la ubicación del clúster. Te recomendamos que tengas un clúster regional para aumentar la fiabilidad del plano de control de Kubernetes. También puedes usar un clúster zonal. Para obtener más información, consulta Seleccionar una versión y una topología de TPU.NODE_ZONES: lista separada por comas de una o varias zonas en las que GKE crea el grupo de nodos.NUM_NODES: número de nodos del grupo de nodos. Debe ser cero o el resultado de dividir el número de chips de TPU entre cuatro, ya que en las porciones de TPU multihost, cada nodo de la porción de TPU tiene cuatro chips. Por ejemplo, siTPU_TOPOLOGYes4x8, hay 32 chips, lo que significa queNUM_NODESdebe ser 8. Para obtener más información sobre las topologías de TPU, consulta la tabla de la sección Elegir la versión de TPU.TPU_TOPOLOGY: indica la topología física del segmento de TPU. El formato de la topología depende de la versión de TPU que estés usando. Para obtener más información sobre las topologías de TPU, consulta la tabla de la sección Elegir una topología.
También puedes usar las siguientes variables:
RESERVATION_NAME: si usas reservas de TPU, esta es la lista de etiquetas de los recursos de reserva que se usarán al crear el grupo de nodos. Para obtener más información sobre cómo rellenar el campoRESERVATION_LABEL_VALUESenreservation_affinity, consulta Proveedor de Terraform.autoscaling: crea un grupo de nodos con el escalado automático habilitado. Cuando GKE escala un grupo de nodos de un segmento de TPU multihost, escala el grupo de nodos de forma atómica de cero al tamaño máximo.MAX_NODES: es el tamaño máximo del pool de nodos. Debe ser igual al producto de los valores definidos enTPU_TOPOLOGY({A}x{B}x{C}) dividido entre el número de chips de cada máquina virtual.
spot: permite que el grupo de nodos use máquinas virtuales de Spot para los nodos de la porción de TPU. No se puede cambiar después de crear el grupo de nodos. Para obtener más información, consulta Máquinas virtuales de acceso puntual.flex_start: define que el grupo de nodos use la opción de consumo inicio flexible. No se puede definir comotruesispotestá habilitado.
Consola
Para crear un grupo de nodos con TPUs, sigue estos pasos:
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.
Haz clic en add_box Añadir grupo de nodos.
En la sección Detalles del grupo de nodos, marca la casilla Especificar ubicaciones de nodos.
Selecciona el nombre de la zona en función de la versión de TPU que quieras usar. Para identificar una ubicación disponible, consulta Disponibilidad de las TPUs en GKE.
En el panel de navegación, haga clic en Nodos.
En la sección Configuración de la máquina, selecciona TPUs.
En el menú desplegable Serie, selecciona una de las siguientes opciones:
- CT3 TPU v3, dispositivo de un solo host
- CT3P: TPU v3, porción de pod multihost
- CT4P: TPU v4
- CT5LP: TPU v5e
- CT5P: TPU v5p
- CT6E: TPU Trillium (v6e)
En el menú desplegable Tipo de máquina, selecciona el nombre de la máquina que quieras usar para los nodos. Consulta la tabla Elegir la versión de TPU para saber cómo definir el tipo de máquina y la topología de TPU que crean un bloque de nodos de TPU multihost.
En el menú desplegable Topología de TPU, selecciona la topología física del slice de TPU.
En el cuadro de diálogo Cambios necesarios, haga clic en Hacer cambios.
Asegúrate de que el Tipo de disco de arranque sea Disco persistente estándar o Disco persistente SSD.
Si quieres, marca la casilla Habilitar nodos en VMs Spot para usar VMs Spot en los nodos del grupo de nodos.
Haz clic en Crear.
Una vez que hayas creado un grupo de nodos con la reserva de calendario, podrás implementar tu carga de trabajo como con cualquier otro grupo de nodos de TPU. Consumir una reserva futura en el modo Calendario funciona igual que con cualquier otro tipo de reserva. Para obtener más información, consulta el artículo sobre cómo consumir recursos de zona reservados.
Siguientes pasos
Prueba ejemplos de despliegue de GKE para modelos de IA generativa que usen los recursos de TPU que hayas reservado:
- Servir un LLM mediante TPU Trillium en GKE con vLLM
- Servir un LLM mediante TPUs en GKE con KubeRay
- Servir un LLM mediante TPUs en GKE con JetStream y PyTorch
- Sirve Gemma mediante TPUs en GKE con JetStream
- Servir Stable Diffusion XL (SDXL) mediante TPUs en GKE con MaxDiffusion
- Servir modelos de código abierto mediante TPUs en GKE con Optimum TPU
Descubre ejemplos experimentales para aprovechar GKE y acelerar tus iniciativas de IA y aprendizaje automático en GKE AI Labs.