En esta guía, se muestra cómo optimizar el aprovisionamiento de unidad de procesamiento tensorial (TPU) con la reserva futura en el modo de calendario. La reserva futura en modo de calendario es un asesor y recomendador de calendario integrado que puede ayudarte a encontrar capacidad de TPU y planificar con anticipació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 (AA), administradores y operadores de plataformas, y especialistas en datos y en IA que estén interesados en usar las capacidades de organización de contenedores de Kubernetes para ejecutar cargas de trabajo por lotes. Para obtener más información sobre los roles comunes y las tareas de ejemplo a los que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas comunes de los usuarios de GKE.
Para obtener más información, consulta Acerca de las reservas futuras en el modo de calendario.
Casos de uso
La reserva futura en el modo de calendario funciona mejor para las 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 alta disponibilidad en la hora de inicio solicitada.
Si tu carga de trabajo requiere recursos aprovisionados de forma dinámica según sea necesario, durante un máximo de 7 días sin reservas a largo plazo ni administración compleja de cuotas, considera usar la opción de consumo de inicio flexible. Para obtener más información, consulta Acerca del aprovisionamiento de GPU y TPU con inicio flexible.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components updatepara obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
- Asegúrate de tener una de las siguientes opciones:
- Un clúster estándar existente que ejecute la versión 1.28.3-gke.1098000 o posterior.
- Un clúster de Autopilot existente que ejecute la versión 1.30.3-gke.1451000 o posterior
Solicita una reserva futura en el modo de calendario para las TPU
El proceso para solicitar TPU con reserva futura en el modo de calendario incluye los siguientes pasos:
- Asegúrate de tener 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 futura en modo de calendario no requieren cuota de Compute Engine.
- Completa los pasos en crea una solicitud en el modo de 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 TPU.
- Espera a que Google Cloud apruebe tu solicitud.
- Crea un grupo de nodo TPU que use tu reserva.
Crea 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 según las cargas de trabajo.
Puedes usar tu reserva cuando crees grupos de nodos de porciones de TPU de host único o de varios hosts.
Crea un grupo de nodos de porción de TPU de host único
Puedes crear un grupo de nodos de porción de TPU de host único 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
Reemplaza lo siguiente:
NODE_POOL_NAME: el nombre del grupo de nodos nuevoCONTROL_PLANE_LOCATION: Es el nombre de la zona en función de la versión de TPU que deseas usar. Para identificar una ubicación disponible, consulta Disponibilidad de TPU en GKE.CLUSTER_NAME: el nombre del clústerNODE_ZONES: La lista separada por comas de una o más zonas en las que GKE crea el grupo de nodos.MACHINE_TYPE: Es el tipo de máquina que se usará para los nodos. Para obtener más información sobre los tipos de máquinas compatibles con TPU, usa la tabla en Elige la versión de TPU.RESERVATION: Es el nombre de la reserva de calendario que se consumirá.
Para obtener una lista completa de todas las marcas que puedes especificar, consulta la referencia de gcloud container clusters create.
Después de crear un grupo de nodos con la reserva de calendario, puedes implementar tu carga de trabajo como cualquier otro grupo de nodo TPU. El consumo de una reserva futura en el modo de calendario funciona de la misma manera que para cualquier otro tipo de reserva. Para obtener más información, consulta Consume recursos zonales reservados.
Crea un grupo de nodos de porción de TPU de varios hosts
Los pasos para crear un grupo de nodos de porción de TPU de varios hosts difieren según si usas Ironwood (TPU7x) o una versión anterior de la TPU.Ironwood (TPU7x)
Puedes crear un grupo de nodos de porción de TPU de varios hosts en la versión Ironwood (TPU7x) con Google Cloud CLI o Terraform:
gcloud
Para crear un grupo de nodos de porción de TPU de varios hosts con Ironwood (TPUv7), primero debes crear una política de carga de trabajo.
Crea una política de carga de trabajo:
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGIONReemplaza lo siguiente:
WORKLOAD_POLICY_NAME: Es un nombre para tu política de carga de trabajo.TPU_TOPOLOGY: Es la topología de la TPU Ironwood (TPU7x). Por ejemplo,2x2x2Para ver todas las topologías compatibles con Ironwood (TPU7x), consulta la sección de topología.PROJECT_ID: El ID de tu proyecto Google Cloud .REGION: Es la región de la política de carga de trabajo. Una política de carga de trabajo es un recurso regional y se puede volver a usar en grupos de nodos que comparten la misma topología.
Crea el grupo de nodos con la política de cargas 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_POLICYReemplaza lo siguiente:
NODE_POOL_NAME: El nombre del grupo de nodos nuevo.WORKLOAD_POLICY: Es el nombre de la política de cargas de trabajo que creaste.FUTURE_RESERVATION_NAME: Es 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 carga de trabajo:
resource "google_compute_resource_policy" { name = "WORKLOAD_POLICY_NAME" region = CLUSTER_LOCATION workload_policy { type = "HIGH_THROUGHPUT" accelerator_topology = "TPU_TOPOLOGY" } }Reemplaza lo siguiente:
WORKLOAD_POLICY_NAME: Es un nombre para tu política de carga de trabajo.CLUSTER_LOCATION: la ubicación de procesamiento del clúster. Recomendamos tener un clúster regional para obtener una mayor confiabilidad del plano de control de Kubernetes. También puedes usar un clúster zonal. Para obtener más información, consulta Selecciona una versión y una topología de TPU.TPU_TOPOLOGY: Es la topología de la TPU Ironwood (TPU7x). Por ejemplo,2x2x2Para ver todas las topologías compatibles con Ironwood (TPU7x), consulta Planifica las TPU.
Para obtener más información sobre la referencia de
google_compute_resource_policy, consulta Proveedor de Terraform.En la configuración de Terraform, agrega 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 } }Reemplaza lo siguiente:
NODE_POOL_RESOURCE_NAME: El nombre del recurso del grupo de nodos en la plantilla de Terraform.PROJECT_ID: el ID de tu proyectoCLUSTER_NAME: Es el nombre del clúster existente al que se agregará el grupo de nodos.POOL_NAME: el nombre del grupo de nodos que se creará.NODE_ZONES: La lista separada por comas de una o más zonas en las que GKE crea el grupo de nodos.NUM_NODES: Es la cantidad de nodos en el grupo de nodos. Debe ser cero o el producto de la cantidad de chips TPU dividido por cuatro, ya que en las porciones de TPU multihost cada nodo de porción de TPU tiene cuatro chips. Por ejemplo, siTPU_TOPOLOGYes4x8, entonces hay 32 chips, lo que significa queNUM_NODESdebe ser 8. Para obtener más información sobre las topologías de TPU, usa la tabla de Elige la versión de TPU.TPU_TOPOLOGY: Indica la topología física seleccionada para la porción de TPU. El formato de la topología depende de la versión de la TPU que usas. Para obtener más información sobre las topologías de TPU, usa la tabla de Elige una topología.
De manera opcional, también puedes usar las siguientes variables:
RESERVATION_NAME: Si usas una reserva de TPU, proporciona una lista de etiquetas de recursos de reserva para usar cuando crees el grupo de nodos. Para obtener más información sobre cómo completarRESERVATION_LABEL_VALUESen el camporeservation_affinity, consulta Proveedor de Terraform Beta.autoscaling: Crea un grupo de nodos con el ajuste de escala automático habilitado. Cuando GKE escala un grupo de nodos de porción de TPU de varios hosts, escala de forma atómica desde el cero hasta el tamaño máximo.MAX_NODES: Es el 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}) divididos por la cantidad de chips en cada VM. Por ejemplo, siTPU_TOPOLOGYes2x2x2, el producto es 8. Dado que cada VM entpu7x-standard-4ttiene 4 chips, la cantidad de nodos es 2.
spot: Es el grupo de nodos que usará VMs Spot para los nodos de porción de TPU. Este parámetro de configuración no se puede cambiar después de crear el grupo de nodos. Para obtener más información, consulta VMs Spot.flex_start: Es el grupo de nodos que usará la opción de consumo de flex-start. Este parámetro de configuración no se puede establecer entruesispotestá habilitado.
Otras versiones de TPU
Puedes crear un grupo de nodos de porción de TPU de varios hosts en las versiones v3, v4, v5p, v5e y Trillium (v6e) con Google Cloud CLI, Terraform o la consola de Google Cloud .
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
Reemplaza lo siguiente:
NODE_POOL_NAME: El nombre del grupo de nodos nuevo.CLUSTER_NAME: el nombre del clústerCONTROL_PLANE_LOCATION: Es el nombre de la zona en función de la versión de TPU que deseas usar. Para identificar una ubicación disponible, consulta Disponibilidad de TPU en GKE.NODE_ZONES: La lista separada por comas de una o más zonas en las que GKE crea el grupo de nodos.MACHINE_TYPE: Es el tipo de máquina que se usará para los nodos. Para obtener más información sobre los tipos de máquinas compatibles con TPU, usa la tabla en Elige la versión de TPU.TPU_TOPOLOGY: Es la topología de la TPU. Por ejemplo,2x2x2Para ver todas las topologías de TPU compatibles, consulta la sección de topologías.FUTURE_RESERVATION_NAME: Es el nombre de tu reserva futura.
Terraform
- Asegúrate de usar la versión 4.84.0 o una posterior del proveedor
google. Agrega el siguiente bloque a la 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 } }Reemplaza lo siguiente:
NODE_POOL_RESOURCE_NAME: El nombre del recurso del grupo de nodos en la plantilla de Terraform.PROJECT_ID: el ID de tu proyectoCLUSTER_NAME: Es el nombre del clúster existente al que se agregará el grupo de nodos.POOL_NAME: el nombre del grupo de nodos que se creará.CLUSTER_LOCATION: Es la ubicación de procesamiento del clúster. Recomendamos tener un clúster regional para obtener una mayor confiabilidad del plano de control de Kubernetes. También puedes usar un clúster zonal. Para obtener más información, consulta Selecciona una versión y una topología de TPU.NODE_ZONES: La lista separada por comas de una o más zonas en las que GKE crea el grupo de nodos.NUM_NODES: Es la cantidad de nodos en el grupo de nodos. Debe ser cero o el producto del número de chips TPU dividido por cuatro, ya que en las porciones de TPU multihost cada nodo de porción de TPU tiene 4 chips. Por ejemplo, siTPU_TOPOLOGYes4x8, entonces hay 32 chips, lo que significa queNUM_NODESdebe ser 8. Para obtener más información sobre las topologías de TPU, usa la tabla de Elige la versión de TPU.TPU_TOPOLOGY: Indica la topología física de la porción de TPU. El formato de la topología depende de la versión de la TPU que usas. Para obtener más información sobre las topologías de TPU, usa la tabla de Elige una topología.
De manera opcional, también puedes usar las siguientes variables:
RESERVATION_NAME: Si usas la reserva de TPU, esta es la lista de etiquetas de los recursos de reserva que se usarán cuando se cree el grupo de nodos. Para obtener más información sobre cómo completarRESERVATION_LABEL_VALUESen el camporeservation_affinity, consulta Proveedor de Terraform Beta.autoscaling: Crea un grupo de nodos con el ajuste de escala automático habilitado. Cuando GKE escala un grupo de nodos de porción de TPU de varios hosts, escala de forma atómica desde el cero hasta el tamaño máximo.MAX_NODES: Es el tamaño máximo del grupo de nodos. Debe ser igual al producto de los valores definidos enTPU_TOPOLOGY({A}x{B}x{C}) divididos por la cantidad de chips en cada VM.
spot: Permite que el grupo de nodos use VMs Spot para los nodos de porción de TPU. Esto no se puede cambiar después de la creación del grupo de nodos. Para obtener más información, consulta VMs Spot.flex_start: Configura el grupo de nodos para usar la opción de consumo flex-start. No se puede establecer entruesispotestá habilitado.
Console
Para crear un grupo de nodos con TPUs, haz lo siguiente:
Ve a la página de Google Kubernetes Engine en la consola de Google Cloud .
En la lista de clústeres, haz clic en el nombre del clúster que deseas modificar.
Haz clic en add_box Agregar grupo de nodos.
En la sección Detalles del grupo de nodos, marca la casilla Especificar las ubicaciones de los nodos.
Selecciona el nombre de la zona según la versión de TPU que deseas usar. Para identificar una ubicación disponible, consulta Disponibilidad de TPU en GKE.
Desde el panel de navegación, haz 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 host único
- CT3P: TPU v3, porción de Pod de varios hosts
- CT4P: TPU v4
- CT5LP: TPU v5e
- CT5P: TPU v5p
- CT6E: TPU Trillium (v6e)
En el menú desplegable Tipo de máquina, elige el nombre de la máquina que se usará para los nodos. Usa la tabla Elige la versión de TPU para saber cómo definir el tipo de máquina y la topología de TPU que crean un grupo de nodos de porción de TPU de varios hosts.
En el menú desplegable Topología de TPU, elige la topología física para la porción de TPU.
En el diálogo Cambios necesarios, haz clic en Hacer cambios.
Asegúrate de que el Tipo de disco de arranque sea Disco persistente estándar o Disco persistente SSD.
De manera opcional, selecciona la casilla de verificación Habilitar nodos en VMs Spot a fin de usar VMs Spot para los nodos en el grupo de nodos.
Haz clic en Crear.
Después de crear un grupo de nodos con la reserva de calendario, puedes implementar tu carga de trabajo como cualquier otro grupo de nodo TPU. El consumo de una reserva futura en el modo de calendario funciona de la misma manera que para cualquier otro tipo de reserva. Para obtener más información, consulta Consume recursos zonales reservados.
¿Qué sigue?
Prueba los ejemplos de implementación de GKE para los modelos de IA generativa que usan los recursos de TPU que reservaste:
- Entrega un LLM con TPU Trillium en GKE con vLLM
- Entrega un LLM con TPU en GKE con KubeRay
- Entrega un LLM con TPU en GKE con JetStream y PyTorch
- Entrega Gemma con TPU en GKE con JetStream
- Entrega Stable Diffusion XL (SDXL) con TPU en GKE con MaxDiffusion
- Entrega modelos de código abierto con TPUs en GKE con Optimum TPU
Explora muestras experimentales para aprovechar GKE y acelerar tus iniciativas de IA/AA en GKE AI Labs.