En este instructivo, se muestra cómo ajustar un modelo de lenguaje grande (LLM) Gemma 4 en un clúster de Google Kubernetes Engine (GKE) de varios nodos y varias GPU en Google Cloud. Este clúster usa una sola instancia de máquina virtual (VM) A4 con 8 GPUs NVIDIA B200 conectadas.
Los dos procesos principales que se describen en este instructivo son los siguientes:
- Implementa un clúster de GKE de alto rendimiento con GKE Autopilot. Como parte de esta implementación, crearás una imagen de VM personalizada con el software necesario preinstalado.
- Después de que se implemente el clúster, ejecutarás un trabajo de ajuste distribuido con el conjunto de secuencias de comandos que acompañan a este instructivo. El trabajo aprovecha la biblioteca Hugging Face Accelerate.
Este instructivo está dirigido a ingenieros, investigadores, administradores y operadores de plataformas de aprendizaje automático (AA), y a especialistas en datos y en IA que deseen implementar clústeres de GKE en Google Cloud para entrenar LLMs.
Objetivos
Accede al modelo de Gemma 4 con Hugging Face.
Prepara tu entorno.
Crea e implementa un clúster de GKE de A4.
Ajusta el modelo Gemma 4 con la biblioteca Accelerate de Hugging Face y el paralelismo de datos completamente fragmentado (FSDP).
Supervisar tu trabajo
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.
Antes de comenzar
Habilita las APIs requeridas, si alguna aún no está habilitada:
Roles necesarios para habilitar las APIs
Para habilitar APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com Habilita la cuenta de servicio predeterminada para tu proyecto de Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_ID
Otorga los roles que necesita la cuenta de servicio predeterminada para ejecutar la carga de trabajo de ajuste:
ROLES=("roles/aiplatform.user" "roles/container.developer" "roles/storage.objectUser") for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" done unset ROLES
Crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
Habilita el Acceso al SO para tu proyecto:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
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) - Administrador de almacenamiento (
roles/storage.admin) - Administrador de Artifact Registry (
roles/artifactregistry.admin) - Editor de Cloud Build (
roles/cloudbuild.builds.editor) - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) - Administrador de cuenta de servicio (
roles/iam.serviceAccountAdmin) - Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin) - Administrador de Service Usage ()
roles/serviceusage.serviceUsageAdmin
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.
Accede a Gemma 4 con Hugging Face
Para usar Hugging Face y acceder a Gemma 4, haz lo siguiente:
- Accede a Hugging Face
- Crea un token de acceso de Hugging Face
write.
Haz clic en Tu perfil > Configuración > Tokens de acceso > +Crear token nuevo. - Copia y guarda el valor del token
write access. La usarás más adelante en este instructivo.
Prepara el entorno
Para preparar tu entorno, establece lo siguiente:
Reemplaza lo siguiente:
YOUR_PROJECT_ID: Es el ID del Google Cloud proyecto en el que deseas crear el clúster de GKE.
YOUR_CLUSTER_NAME: Es el nombre del clúster de GKE que se creará.
YOUR_REGION: Es la región en la que deseas crear tu clúster de GKE. Solo puedes crear el clúster en la región en la que existe tu reserva.
YOUR_RESERVATION_NAME: Es el identificador de tu capacidad reservada.
YOUR_HF_TOKEN: El token de acceso de Hugging Face que creaste en la sección anterior.
YOUR_ARTIFACT_REGISTRY_LOCATION: Es la Google Cloud región en la que deseas crear tu repositorio de Artifact Registry. Para minimizar la latencia de extracción de imágenes, te recomendamos que uses la misma región que usaste para YOUR_REGION.
Crea un clúster de GKE en modo Autopilot
Para crear un clúster de GKE en modo Autopilot, ejecuta el siguiente comando:
La creación del clúster de GKE puede tardar un tiempo en completarse. Para verificar que Google Cloud haya terminado de crear tu clúster, ve a Clústeres de Kubernetes en la consola de Google Cloud .
Crea un secreto de Kubernetes para las credenciales de Hugging Face
Para crear un secreto de Kubernetes para las credenciales de Hugging Face, sigue estos pasos:
Configura
kubectlpara comunicarse con tu clúster de GKE:Crea un secreto de Kubernetes para almacenar tu token de Hugging Face:
Prepara tu carga de trabajo
Para preparar tu carga de trabajo, haz lo siguiente:
Crea secuencias de comandos de cargas de trabajo
Para crear las secuencias de comandos que usa tu carga de trabajo de ajuste, haz lo siguiente:
Crea un directorio para las secuencias de comandos de la carga de trabajo. Usa este directorio como tu directorio de trabajo.
Crea el archivo
cloudbuild.yamlpara usar Google Cloud Build. Este archivo crea el contenedor de tu carga de trabajo y lo almacena en Artifact Registry:Crea un archivo
Dockerfilepara ejecutar el trabajo de ajuste:Crea el archivo
accel_fsdp_gemma4_config.yaml. Este archivo de configuración indica a Hugging Face Accelerate que divida el trabajo de ajuste en las ocho GPUs locales de tu único host con FSDP:Crea el archivo
finetune.yaml:Crea el archivo
finetune.py:
Usa Docker y Cloud Build para crear un contenedor de ajuste
Crea un repositorio de Docker de Artifact Registry:
En el directorio
llm-finetuning-gemmaque creaste en un paso anterior, ejecuta el siguiente comando para crear la imagen de ajuste y enviarla a Artifact Registry.Exporta la URL de la imagen. Lo usarás en un paso posterior de este instructivo:
Inicia tu carga de trabajo de ajuste
Para iniciar tu carga de trabajo de ajuste, haz lo siguiente:
Aplica el manifiesto de ajuste para crear el trabajo de ajuste:
Como usas clústeres en el modo Autopilot de GKE, es posible que el inicio del nodo habilitado para GPU tarde unos minutos.
Supervisa el trabajo ejecutando el siguiente comando:
Después de que los Pods se ejecuten, verifica los registros del trabajo:
El recurso de trabajo descarga los datos del modelo y, luego, ajusta el modelo en las ocho GPUs. La descarga tarda alrededor de cinco minutos en completarse. Una vez que se completa la descarga, el proceso de ajuste tarda aproximadamente dos horas y media en completarse.
Supervisa tu carga de trabajo
Puedes supervisar el uso de las GPUs en tu clúster de GKE para verificar que tu trabajo de ajuste fino se ejecute de manera eficiente. Para ello, abre el siguiente vínculo en tu navegador:
Cuando supervisas tu carga de trabajo, puedes ver lo siguiente:
- Uso de las GPUs: Para un trabajo de ajuste fino correcto, puedes esperar ver que el uso de las 8 GPUs aumente y se estabilice en un nivel alto durante todo el entrenamiento.
- Duración del trabajo: El trabajo debería tardar aproximadamente dos horas y 30 minutos en completarse en el clúster A4 especificado.
Realiza una limpieza
Para evitar que se generen cargos adicionales, borra los recursos que creaste durante este instructivo.
Borra tus recursos
Para borrar tu trabajo de ajuste, ejecuta el siguiente comando:
Para borrar tu clúster de GKE, ejecuta el siguiente comando: