Fine-tuning de Gemma 4 31B sur Cloud Run Jobs avec GPU pour la classification d'images
Le modèle Gemma 4 31B est affiné sur le dataset Oxford-IIIT Pet à l'aide de Cloud Run Jobs et de la NVIDIA RTX PRO 6000. La précision de classification des races d'animaux passe de 89 % à 94 % grâce à la quantification QLoRA et LoRA au rang 64. Ce guide détaille les modifications d'architecture, la préparation des données et le déploiement sur Google Cloud.
Modifications d'architecture de Gemma 4
Gemma 4 utilise la licence Apache 2.0 et une architecture Mixture-of-Experts (MoE) avec 31 milliards et 26 milliards de paramètres. La fenêtre de contexte est étendue à 256 000 tokens. Il prend en charge des entrées multimodales : images, vidéo, audio. L'appel de fonctions intégré et la génération de JSON structuré sont inclus.
Les scripts Gemma précédents ne fonctionnent plus en raison des changements dans le chargement du modèle et les templates de chat. Pour la multimodalité, utilisez AutoModelForMultimodalLM.
Exigences mémoire et GPU
La NVIDIA RTX PRO 6000 offre 96 Go de VRAM. Gemma 4 31B en bfloat16 occupe 62 Go. QLoRA avec quantification 4 bits via bitsandbytes réduit cela à 18-20 Go, libérant des ressources pour des contextes plus longs.
Adaptations de code pour Gemma 4
Format des données d'entrée
Les images précèdent le texte. L'instruction fusionne avec la requête utilisateur. Le placeholder {"type": "image"} marque l'emplacement des tokens d'image dans le processeur.
Masquage des étiquettes
Le nombre dynamique de tokens d'image nécessite un scan complet du tableau input_ids depuis la fin pour trouver la limite de réponse. La tokenisation textuelle séparée provoque des incohérences de longueur.
Configuration LoRA
L'architecture utilise Gemma4ClippableLinear. Configurez LoRA avec target_modules="all-linear" pour contourner les wrappers et éviter les erreurs d'entraînement.
Résultats du fine-tuning
Sur 700 images, la précision intermédiaire égalait le modèle de base. Le dataset complet Oxford-IIIT Pet l'élève à 94 % avec :
- Rang 64 / Alpha 64
- Taux d'apprentissage 5e-5
Précision de base : 89 %.
Configuration de l'environnement Google Cloud
Activez les API Cloud Run et Cloud Build dans un projet facturé. Récupérez votre token Hugging Face.
- Clonez le repo :
git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd devrel-demos/ai-ml/finetune_gemma/
- Testez sur CPU avec le modèle 2B :
python3 finetune_and_evaluate.py \
--model-id google/gemma-4-e2b-it \
--device cpu \
--train-size 20 \
--num-epochs 1
Téléversez les poids dans un bucket GCS de votre région cible.
Construction et exécution de l'image
Construisez l'image Docker :
gcloud builds submit --tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest .
Créez le Job avec 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"
Exécutez le job :
gcloud beta run jobs execute gemma4-finetuning-job --region $REGION --async
Points clés
- QLoRA réduit la VRAM à 20 Go pour le modèle 31B sur RTX PRO 6000.
- AutoModelForMultimodalLM est indispensable pour les images avant le texte.
- Masquage depuis la fin de input_ids gère les tokens dynamiques.
- target_modules="all-linear" stabilise LoRA sur Gemma4ClippableLinear.
- La précision bondit de 5 % à 94 % sur Oxford-IIIT Pet.
— Editorial Team
Aucun commentaire pour le moment.