Retour à l'accueil

Fine-tuning de Gemma 4 sur Cloud Run avec GPU

L'article décrit le fine-tuning de Gemma 4 31B sur Cloud Run Jobs en utilisant NVIDIA RTX PRO 6000 pour classer les races d'animaux du dataset Oxford-IIIT Pet. La précision est passée de 89 % à 94 % avec QLoRA et LoRA rank 64. Modifications de code, commandes de déploiement et adaptations clés pour les données multimodales sont fournies.

Gemma 4 31B : fine-tuning sur GPU dans Cloud Run jusqu'à 94 % de précision
Advertisement 728x90

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.

Google AdInline article slot

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.

Google AdInline article slot

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 %.

Google AdInline article slot

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

Advertisement 728x90

Lire ensuite