En este instructivo, se muestra cómo ajustar un modelo de lenguaje grande (LLM) Gemma 3 en un clúster de GKE Autopilot de varios hosts en Google Cloud. Este clúster usa dos instancias de máquina virtual (VM) A4 con un total de 16 GPUs NVIDIA B200.
Los dos procesos principales que se describen en este instructivo son los siguientes:
- Implementa un clúster de GKE de alto rendimiento y varios hosts 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 3 con Hugging Face.
Prepara tu entorno.
Crea e implementa un clúster de GKE de A4.
Ajusta el modelo Gemma 3 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
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un proyecto de Google Cloud :
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto Google Cloud que estás creando. -
Selecciona el proyecto Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs necesarias:
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 -
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un proyecto de Google Cloud :
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto Google Cloud que estás creando. -
Selecciona el proyecto Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs necesarias:
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 -
Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoUSER_IDENTIFIER: Es el identificador de tu cuenta de usuario de . Por ejemplo,myemail@example.com.ROLE: Es el rol de IAM que otorgas a tu cuenta de usuario.
- Habilita la cuenta de servicio predeterminada para tu proyecto Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
- Otorga el rol de editor (
roles/editor) a la cuenta de servicio predeterminada:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- 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
- Accede a tu cuenta de Hugging Face o crea una.
Accede a Gemma 3 con Hugging Face
Para usar Hugging Face y acceder a Gemma 3, 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, configura lo siguiente:
Reemplaza lo siguiente:
PROJECT_ID: Es el nombre del Google Cloud proyecto en el que deseas crear el clúster de GKE.
CLUSTER_NAME: Es el nombre del clúster de GKE que se creará.
CLUSTER_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.
RESERVATION: Es el identificador de tu capacidad reservada.
HF_TOKEN: Es el token de acceso de Hugging Face que creaste en la sección anterior.
ARTIFACT_REPO_LOCATION: Es la ubicación en la que deseas crear tu repositorio de Artifact Registry.
NUM_NODES: Es la cantidad de nodos que quieres que tenga el clúster de GKE.
NETWORK: Es la red que se usará.
Crea un clúster de GKE de varios hosts en modo Autopilot
Crea un clúster de GKE de varios hosts en modo Autopilot:
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 aClústeres de Kubernetesen la consola de Google Cloud .
Obtén credenciales para tu clúster de GKE
Configura kubectl para que se comunique con el clúster de GKE recién creado ejecutando el siguiente comando:
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 Secret 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 carga 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 tu contenedor de cargas de trabajo y lo almacena en Artifact Registry:Crea un archivo
Dockerfilepara definir el entorno y, luego, instala las dependencias necesarias para completar el trabajo de ajuste:Crea el archivo
accel_fsdp_gemma3_config.yaml. Este archivo de configuración indica a Hugging Face Accelerate que divida el trabajo de ajuste en varias GPUs.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:
Instala las definiciones de recursos personalizados (CRD) de JobSet necesarias para organizar cargas de trabajo de varios hosts.
JobSet es una extensión de Kubernetes que se usa para administrar grupos de trabajos relacionados. Para obtener más información sobre JobSet, consulta la documentación externa de JobSet.
En el directorio
llm-finetuning-gemmaque creaste en un paso anterior, ejecuta el siguiente comando para crear la imagen ajustada 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:
Ejecuta el siguiente comando para verificar los registros del pod de trabajador principal:
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 fino tarda aproximadamente dos horas y 30 minutos 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 GPU: Para un trabajo de ajuste fino correcto, puedes esperar ver que el uso de las 8 GPU aumente y se estabilice en un nivel alto durante todo el entrenamiento.
- Duración del trabajo: El trabajo debería tardar aproximadamente 10 minutos en completarse en el clúster A4 especificado.
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra tus recursos
Para borrar tu JobSet, ejecuta el siguiente comando:
Para borrar tu clúster de GKE, ejecuta el siguiente comando:
Para borrar tu repositorio de Artifact Registry, ejecuta el siguiente comando:
Borra tu proyecto
Borra un Google Cloud proyecto:
gcloud projects delete PROJECT_ID