# Ajuste fino de Gemma 4 31B en Cloud Run Jobs con GPU para clasificación de imágenes
El modelo Gemma 4 31B se ajusta fino en el dataset Oxford-IIIT Pet usando Cloud Run Jobs y NVIDIA RTX PRO 6000. La precisión en la clasificación de razas de animales mejoró del 89% al 94% con cuantización QLoRA y LoRA en rango 64. Esta guía cubre cambios en la arquitectura, preparación de datos y despliegue en Google Cloud.
Cambios en la arquitectura de Gemma 4
Gemma 4 usa la licencia Apache 2.0 y una arquitectura Mixture-of-Experts (MoE) con 31B y 26B parámetros. La ventana de contexto se expandió a 256K tokens. Soporta entradas multimodales: imágenes, video, audio. Incluye llamada a funciones integrada y generación de JSON estructurado.
Los scripts anteriores de Gemma no funcionan debido a cambios en la carga del modelo y plantillas de chat. Para multimodalidad, usa AutoModelForMultimodalLM.
Requisitos de memoria y GPU
La NVIDIA RTX PRO 6000 ofrece 96 GB de VRAM. Gemma 4 31B en bfloat16 ocupa 62 GB. QLoRA con cuantización de 4 bits vía bitsandbytes lo reduce a 18-20 GB, liberando recursos para contextos más largos.
Adaptaciones de código para Gemma 4
Formato de datos de entrada
Las imágenes van antes del texto. La instrucción se fusiona con el prompt del usuario. El marcador {"type": "image"} indica el lugar para los tokens de imagen en el procesador.
Máscara de etiquetas
El conteo dinámico de tokens de imagen requiere escanear el array completo de input_ids desde el final para encontrar el límite de la respuesta. La tokenización separada de texto causa desajustes de longitud.
Configuración de LoRA
La arquitectura usa Gemma4ClippableLinear. Configura LoRA con target_modules="all-linear" para evitar envoltorios y errores de entrenamiento.
Resultados del ajuste fino
Con 700 imágenes, la precisión intermedia igualó al modelo base. El dataset completo Oxford-IIIT Pet la elevó al 94% con:
- Rango 64 / Alpha 64
- Tasa de aprendizaje 5e-5
Precisión base: 89%.
Configuración del entorno en Google Cloud
Activa las APIs de Cloud Run y Cloud Build en un proyecto facturado. Obtén tu token de Hugging Face.
- Clona el repositorio:
git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd devrel-demos/ai-ml/finetune_gemma/
- Prueba en CPU con el modelo 2B:
python3 finetune_and_evaluate.py \
--model-id google/gemma-4-e2b-it \
--device cpu \
--train-size 20 \
--num-epochs 1
Sube los pesos a un bucket de GCS en tu región objetivo.
Construcción y ejecución de la imagen
Construye la imagen Docker:
gcloud builds submit --tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest .
Crea el Job con GPU:
gcloud beta run jobs create gemma4-finetuning-job \
--region $REGION \
--image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest \
--gpu 1 \
--gpu-type nvidia-rtx-pro-6000 \
--cpu 30.0 \
--memory 120Gi \
--add-volume name=model-volume,type=cloud-storage,bucket=$BUCKET_NAME \
--add-volume-mount volume=model-volume,mount-path=/mnt/gcs \
--args="--model-id","/mnt/gcs/google/gemma-4-31b-it/","--output-dir","/mnt/gcs/gemma4-finetuned"
Ejecuta el job:
gcloud beta run jobs execute gemma4-finetuning-job --region $REGION --async
Lecciones clave
- QLoRA reduce VRAM a 20 GB para el modelo 31B en RTX PRO 6000.
- AutoModelForMultimodalLM es esencial para imágenes antes del texto.
- Máscara desde el final de input_ids maneja tokens dinámicos.
- target_modules="all-linear" estabiliza LoRA en Gemma4ClippableLinear.
- La precisión subió 5% al 94% en Oxford-IIIT Pet.
— Editorial Team
Aún no hay comentarios.