En este instructivo, se muestra cómo ejecutar el ajuste supervisado (SFT) en un clúster de unidad de procesamiento tensorial (TPU) v6e de varios hosts con MaxText y el Cluster Toolkit. Usa Cluster Toolkit para ejecutar una carga de trabajo de entrenamiento de varios hosts y exportar los resultados al formato de Hugging Face para la entrega.
Resumen de la carga de trabajo
La ejecución de esta carga de trabajo de SFT en Cloud TPU y GKE implica los siguientes componentes:
- Modelo: Gemma 4 31B (
google/gemma-4-31b-it), un modelo avanzado de pesos abiertos. En este instructivo, los pesos del modelo se descargan de Hugging Face, se convierten en un formato compatible con MaxText y se implementan en un clúster de GKE con la infraestructura de Cloud TPU v6e (v6e-32). - Método de entrenamiento: SFT con MaxText. La carga de trabajo ejecuta una canalización de ajuste fino escalable en Cloud TPU v6e con JAX. Optimiza los parámetros del modelo
en 1,000 pasos con el entrenador de SFT integrado de MaxText
(
maxtext.trainers.post_train.sft.train_sft) y los conjuntos de datos de ajuste de instrucciones. - Conjunto de datos y plantilla: UltraChat 200k (
HuggingFaceH4/ultrachat_200k), un conjunto de datos de diálogo de varios turnos de alta calidad y gran escala. La carga de trabajo usa este conjunto de datos para ajustar el modelo y mejorar sus capacidades de conversación y seguimiento de instrucciones. - Infraestructura y framework: GKE, administrado con
Cluster Toolkit, en Cloud TPU v6e (
v6e-32, con una topología4x8). El framework es MaxText (tpu_post_training:0.2.4) con un backend de JAX.
Objetivos
- Instala Cluster Toolkit y sus dependencias.
- Implementa un clúster de Cluster Toolkit.
- Convierte un modelo de Hugging Face al formato de MaxText.
- Ejecuta una carga de trabajo de entrenamiento de SFT en la TPU.
- Vuelve a convertir el modelo ajustado al formato de Hugging Face para entregarlo.
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 completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza 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.
- En la tarjeta del modelo
google/gemma-4-31b-iten Hugging Face, acepta el contrato de licencia del modelo.
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:
-
Para completar este instructivo, haz lo siguiente:
- Administrador de TPU (
roles/tpu.admin) - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) - Administrador de Compute (
roles/compute.admin) - Administrador de almacenamiento (
roles/storage.admin) - Administrador de Kubernetes Engine (
roles/container.admin) - Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin) - Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin) - Administrador de Service Usage ()
roles/serviceusage.serviceUsageAdmin
- Administrador de TPU (
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_REGION: Es la región en la que se encuentra tu reserva de TPU y en la que implementas tu clúster.YOUR_ZONE: Es la zona en la que se encuentra tu reserva de TPU y en la que implementas tu clúster.YOUR_CLUSTER_NAME: el nombre del clúster de GKE. El nombre debe comenzar con una letra minúscula, contener solo letras minúsculas, números y guiones, y tener 20 caracteres o menos, de modo que los IDs de cuenta de servicio basados en este se mantengan dentro del límite de 30 caracteres.YOUR_BUCKET_NAME: Es un nombre único a nivel global para un bucket de Cloud Storage.YOUR_RESERVATION_NAME: Es el nombre de tu reserva de TPU v6e.YOUR_HF_TOKEN: Es tu token de acceso de Hugging Face.
De forma predeterminada, la secuencia de comandos establece MODEL_NAME en gemma4-31b (el nombre del modelo de MaxText para google/gemma-4-31b-it).
Instala las dependencias de Cluster Toolkit
Para completar este instructivo desde un cliente o una estación de trabajo de Linux o macOS, sigue los pasos pertinentes en Instala dependencias en la documentación de Cluster Toolkit.
Si usas Cloud Shell, puedes omitir esta sección.
Instala Cluster Toolkit
Descarga y extrae el paquete compilado previamente para la versión específica de
Cluster Toolkit definida en CLUSTER_TOOLKIT_VERSION (v1.103.0) en
tu directorio de trabajo actual:
Autentica tu entorno
Para asegurarte de que Cluster Toolkit pueda aprovisionar recursos y enviar imágenes a Artifact Registry en tu nombre, autentica Google Cloud CLI y configura tus credenciales predeterminadas de la aplicación:
Crea tu clúster de Cluster Toolkit
Para crear e implementar un clúster de Cluster Toolkit con 32 chips TPU v6e,
completa los siguientes pasos:
Crea un bucket de Cloud Storage:
Prepara la configuración del plano y copia el plano de implementación de ejemplo en un directorio de trabajo aislado:
Actualiza
tmp/gke-tpu-v6e-advanced.yamlpara otorgar a la cuenta de servicio del grupo de nodos del clúster (gke-np-sa) el rol de administrador de almacenamiento (roles/storage.admin) para escribir puntos de control en tu bucket de Cloud Storage, cambia el tipo de máquina del grupo de nodos del sistema ae2-standard-8y fija el grupo de nodos del sistema en tu zona de destino para evitar que se agote el stock de tipos de máquinas regionales:Usa el comando
gcluster deploypara implementar tu clúster de Cluster Toolkit con el planotmp/gke-tpu-v6e-advanced.yamly pasar las variables requeridas con la marca--vars:
Convierte el modelo al formato de MaxText
Para entrenar el modelo en el formato de MaxText, debes convertirlo del formato de Hugging Face al formato de MaxText.
Para simplificar los comandos posteriores, usa el comando
gcluster job configpara configurar tu proyecto, clúster y ubicación predeterminados:Usa el comando
gcluster job submitpara convertir el modelo del formato de Hugging Face al formato de MaxText y almacenarlo en tu bucket de Cloud Storage:El comando incluye la marca
--await-job-completion, lo que significa que espera en tu terminal actual hasta que finalice la conversión.Opcional: Para transmitir los registros de conversión mientras se ejecuta el trabajo, abre una terminal independiente en el directorio de trabajo en el que extrajiste
gclustery ejecuta el comandogcluster job logs:En la terminal original, verifica que los archivos del modelo convertidos estén disponibles en tu bucket de Cloud Storage:
Inicia la carga de trabajo de entrenamiento
Una vez que se complete el proceso de conversión, inicia la carga de trabajo de SFT:
El comando incluye la marca
--await-job-completion, lo que significa que espera en tu terminal actual hasta que finalice el trabajo de entrenamiento.Opcional: Para transmitir los registros de entrenamiento en vivo mientras se ejecuta el trabajo, abre una terminal independiente en el directorio de trabajo en el que extrajiste
gclustery ejecuta el comandogcluster job logs:Una vez que se completa la compilación inicial de XLA, el coordinador registra el progreso de salida para cada paso de la ejecución de 1,000 pasos en el formato
completed step: <step>, seconds: ..., TFLOP/s/device: ..., loss: ..., con la pérdida de entrenamiento que disminuye de aproximadamente1.57en el paso 5 a aproximadamente0.82en el paso 1,000. Antes de continuar con la siguiente sección, espera hasta que finalice el paso 1000 y el resultado del comando./gcluster job listmuestre el estado desftcomoSucceeded.En la terminal original, verifica que los puntos de control de entrenamiento de SFT se generen en tu bucket de Cloud Storage:
Vuelve a convertir el modelo entrenado al formato de Hugging Face
Una vez que se haya completado la carga de trabajo de entrenamiento, vuelve a convertir el modelo al formato de Hugging Face:
El comando incluye la marca
--await-job-completion, lo que significa que espera en tu terminal actual hasta que finalice la conversión.Opcional: Para transmitir los registros de conversión en vivo mientras se ejecuta el trabajo, abre una terminal independiente en el directorio de trabajo en el que extrajiste
gclustery ejecuta el comandogcluster job logs:En la terminal original, verifica que los pesos finales de Hugging Face Safetensors se generen en tu bucket de Cloud Storage:
Realiza una limpieza
Para evitar que se generen cargos adicionales, usa el comando
gcluster destroy para borrar los
recursos que se crearon durante este instructivo:
¿Qué sigue?
- Para obtener más información sobre Cloud TPU, consulta Introducción a Cloud TPU.
- Para obtener detalles sobre la arquitectura y la configuración de la TPU
v6e-32, consulta TPU v6e.