En este instructivo, se muestra cómo implementar y entregar el modelo de mezcla de
expertos multimodal
Gemma 4 26B (google/gemma-4-26B-A4B-it)
en Google Kubernetes Engine (GKE) con aceleradores de
Cloud TPU v6e (Trillium) de varios hosts y
vLLM TorchTPU.
Debido a que la carga de trabajo abarca varios hosts de TPU en una topología 2x4, usas la
API de LeaderWorkerSet de Kubernetes y Ray para coordinar la inferencia distribuida paralela de tensores
en ocho chips TPU.
Objetivos
- Configura tu clúster de GKE y el grupo de nodos de TPU v6e de varios hosts.
- Implementa el servidor de vLLM de varios hosts con LeaderWorkerSet.
- Enviar solicitudes de inferencia multimodales y de texto
- Ejecuta una carga de trabajo de comparativas de entrega.
- Realizar una limpieza
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
Necesitas un token de acceso de Hugging Face para usar este instructivo. Puedes registrarte para obtener una cuenta gratuita en Hugging Face. Después de tener una cuenta, genera un token de acceso:
- En la página Welcome to Hugging Face, haz clic en el avatar de tu cuenta y selecciona Tokens de acceso.
- En la página Tokens de acceso, haz clic en Crear token nuevo.
- Selecciona el tipo de token Lectura y, luego, ingresa un nombre para el token.
- Se mostrará tu token de acceso. Guarda el token en un lugar seguro.
- Instala y, luego, inicializa Google Cloud CLI, y, luego, instala
kubectl. Si usas Cloud Shell, ambas herramientas están preinstaladas.
Si quieres obtener los permisos que necesitas para completar este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
- Administrador de Kubernetes Engine (
roles/container.admin) - Administrador de Compute (
roles/compute.admin) - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Configura tus variables de entorno
Configura las variables de entorno:
Reemplaza lo siguiente:
YOUR_PROJECT_ID: Es el ID de tu proyecto de Google Cloud.YOUR_RESERVATION_NAME: Es el nombre de tu reserva.YOUR_REGION: Es la región en la que deseas implementar tu clúster de GKE.YOUR_ZONE: Es la zona en la que deseas implementar tu grupo de nodos de TPU v6e.YOUR_CLUSTER_NAME: el nombre del clúster de GKE.YOUR_HF_TOKEN: Es tu token de acceso de Hugging Face.YOUR_VLLM_TPU_IMAGE: Es la imagen de TPU de vLLM que se usará. Para obtener imágenes públicas, consulta el repositorio de vLLM TorchTPU.
Crea el clúster de GKE
Para crear el clúster de GKE y conectar un grupo de nodos de TPU v6e de varios hosts, completa los siguientes pasos:
Crea un clúster de GKE regional que use nodos
e2-standard-4para el grupo de nodos predeterminado y un grupo de nodos TPU v6e con dos nodosct6e-standard-4torganizados en una topología2x4(ocho chips TPU en total). El tipo de máquina predeterminado de GKE (e2-medium) no proporciona suficientes recursos de CPU para el controlador LeaderWorkerSet, por lo que este instructivo especificae2-standard-4:En lugar de usar una reserva específica, también puedes crear el grupo de nodos con capacidad Spot o VMs de inicio flexible pasando las siguientes marcas:
- VMs Spot: Reemplaza las marcas
--reservation-affinityy--reservationpor--spotpara usar la capacidad de Spot. Las instancias que usan la capacidad de Spot pueden tardar en crearse después de que se crea el grupo de nodos y se pueden interrumpir durante las ejecuciones de las cargas de trabajo. Si tus Pods tardan en crearse o las cargas de trabajo se detienen en medio de la ejecución, esta podría ser la causa. - VMs de inicio flexible: Pasa
--flex-startpara aprovisionar el grupo de nodos con la opción de consumo Flex-start. Para obtener más información, consulta Ejecuta una carga de trabajo por lotes pequeña con TPU y VMs de inicio flexible.
- VMs Spot: Reemplaza las marcas
Configura las credenciales de
kubectlpara comunicarte con tu clúster:
Configura las credenciales e instala LeaderWorkerSet
Para preparar tu clúster para la implementación de varios hosts, completa los siguientes pasos:
Exporta tu token de Hugging Face y crea un Secret de Kubernetes llamado
hf-secret:Instala la CustomResourceDefinition y el controlador de LeaderWorkerSet en tu clúster:
Implementa el servidor de vLLM de varios hosts
El manifiesto de la carga de trabajo (gemma4-26b-multihost-v6e-2x4.yaml) define dos
recursos:
- Un recurso LeaderWorkerSet (
vllm-tpu-gemma4-26b) consize: 2(un Pod líder y un Pod trabajador) programado en los dos nodosct6e-standard-4ten la porción de TPU2x4. Cada Pod ejecuta un InitContainer que recupera previamente los pesos del modelogoogle/gemma-4-26B-A4B-itde Hugging Face en un volumen en la memoria antes de iniciar Ray y el servidor de la API de OpenAI de vLLM con las marcas--tensor-parallel-size=8,--kv-cache-dtype=fp8,--max-model-len=5248y--max-num-seqs=128. - Un Service ClusterIP (
vllm-service) que expone el puerto8000en el Pod líder.
Para implementar y supervisar la carga de trabajo, completa los siguientes pasos:
Recupera el manifiesto de LeaderWorkerSet de GitHub:
Como alternativa, crea un archivo llamado
gemma4-26b-multihost-v6e-2x4.yamlcon el siguiente contenido:Aplica el manifiesto de LeaderWorkerSet:
Supervisa el estado y los registros del Pod líder hasta que se complete el inicio de la aplicación:
El inicio inicial del servicio tarda alrededor de 9 minutos mientras los Pods recuperan previamente los pesos del modelo, forman el clúster de Ray de dos nodos en los ocho chips TPU y compilan el modelo. Espera hasta que los registros informen
Application startup completeantes de enviar tráfico.En una segunda sesión de terminal, reenvía el puerto local
8000avllm-service:Deja la redirección de puertos en ejecución en esta sesión de terminal.
Envía solicitudes de inferencia
Regresa a tu primera sesión de terminal y prueba el modelo implementado con solicitudes de finalización de chat de texto y multimodales:
Envía una solicitud de finalización de chat de texto al extremo
/v1/chat/completions:Envía una solicitud multimodal que contenga una URL de imagen y una instrucción de texto:
Ejecuta una carga de trabajo de comparativas
Para comparar el modelo implementado, ejecuta el siguiente comando:
Realiza una limpieza
Para evitar que se apliquen cargos adicionales continuos a tu cuenta de Google Cloud por los recursos que se usaron en este instructivo, borra las cargas de trabajo de Kubernetes, el grupo de nodo TPU y el clúster de GKE:
Borra la implementación del servidor de vLLM y el secreto de Hugging Face:
Borra el grupo de nodos TPU v6e y el clúster de GKE:
Regresa a tu segunda sesión de terminal y detén la redirección de puertos.
¿Qué sigue?
- Obtén más información sobre vLLM TorchTPU.
- Más información sobre Cloud TPU.