Fine-Tuning von Gemma 4 31B auf Cloud Run Jobs mit GPU für Bildklassifikation
Das Gemma-4-31B-Modell wurde auf dem Oxford-IIIT-Pet-Datensatz mit Cloud Run Jobs und NVIDIA RTX PRO 6000 feinabgestimmt. Die Genauigkeit bei der Klassifikation von Tierarten stieg von 89 % auf 94 % durch QLoRA-Quantisierung und LoRA mit Rang 64. Diese Anleitung beschreibt Architekturänderungen, Datenaufbereitung und den Einsatz auf Google Cloud.
Architekturänderungen bei Gemma 4
Gemma 4 nutzt die Apache-2.0-Lizenz und eine Mixture-of-Experts (MoE)-Architektur mit 31 Mrd. und 26 Mrd. Parametern. Das Kontextfenster wurde auf 256.000 Token erweitert. Es unterstützt multimodale Eingaben: Bilder, Video, Audio. Integrierte Funktionsaufrufe und strukturierte JSON-Generierung sind enthalten.
Frühere Gemma-Skripte funktionieren nicht mehr aufgrund von Änderungen beim Modellladen und Chat-Templates. Für Multimodalität verwenden Sie AutoModelForMultimodalLM.
Speicher- und GPU-Anforderungen
Die NVIDIA RTX PRO 6000 bietet 96 GB VRAM. Gemma 4 31B in bfloat16 benötigt 62 GB. QLoRA mit 4-Bit-Quantisierung über bitsandbytes reduziert das auf 18–20 GB und schafft Platz für längere Kontexte.
Code-Anpassungen für Gemma 4
Eingabedatenformat
Bilder stehen vor dem Text. Die Anweisung verschmilzt mit dem Benutzerprompt. Der Platzhalter {"type": "image"} markiert die Stelle für Bildtokens im Prozessor.
Label-Maskierung
Dynamische Bildtoken-Anzahlen erfordern ein Scannen des gesamten input_ids-Arrays von hinten, um die Antwortgrenze zu finden. Getrennte Text-Tokenisierung führt zu Längenfehlern.
LoRA-Konfiguration
Die Architektur verwendet Gemma4ClippableLinear. Setzen Sie LoRA mit target_modules="all-linear", um Wrapper zu umgehen und Trainingsfehler zu vermeiden.
Ergebnisse des Fine-Tunings
Bei 700 Bildern entsprach die Zwischengenauigkeit dem Basismodell. Der vollständige Oxford-IIIT-Pet-Datensatz steigerte sie auf 94 % mit:
- Rang 64 / Alpha 64
- Lernrate 5e-5
Basisgenauigkeit: 89 %.
Einrichtung der Google Cloud-Umgebung
Aktivieren Sie die Cloud Run- und Cloud Build-APIs in einem abgerechneten Projekt. Holen Sie sich Ihren Hugging Face-Token.
- Repository klonen:
git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd devrel-demos/ai-ml/finetune_gemma/
- Test auf CPU mit dem 2B-Modell:
python3 finetune_and_evaluate.py \
--model-id google/gemma-4-e2b-it \
--device cpu \
--train-size 20 \
--num-epochs 1
Gewichte in einen GCS-Bucket in Ihrer Zielregion hochladen.
Docker-Image bauen und ausführen
Docker-Image bauen:
gcloud builds submit --tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest .
Job mit GPU erstellen:
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"
Job ausführen:
gcloud beta run jobs execute gemma4-finetuning-job --region $REGION --async
Wichtige Erkenntnisse
- QLoRA reduziert VRAM auf 20 GB für das 31B-Modell auf RTX PRO 6000.
- AutoModelForMultimodalLM ist essenziell für Bilder vor Text.
- Maskierung vom Ende von input_ids bewältigt dynamische Tokens.
- target_modules="all-linear" stabilisiert LoRA auf Gemma4ClippableLinear.
- Genauigkeit stieg um 5 % auf 94 % beim Oxford-IIIT-Pet-Datensatz.
— Editorial Team
Noch keine Kommentare.