Powrót do strony głównej

Dostrojenie Gemma 4 na Cloud Run z GPU

Artykuł opisuje dostrojenie Gemma 4 31B na Cloud Run Jobs z użyciem NVIDIA RTX PRO 6000 do klasyfikacji ras zwierząt według zbioru danych Oxford-IIIT Pet. Dokładność wzrosła z 89% do 94% przy QLoRA i LoRA rank 64. Podano zmiany w kodzie, polecenia wdrożenia i kluczowe adaptacje dla danych multimodalnych.

Gemma 4 31B: dostrojenie na GPU w Cloud Run do 94% dokładności
Advertisement 728x90

## Dostrojenie Gemma 4 31B w Cloud Run Jobs z GPU do klasyfikacji obrazów

Model Gemma 4 31B jest dostrajany na zbiorze danych Oxford-IIIT Pet z użyciem Cloud Run Jobs i karty NVIDIA RTX PRO 6000. Dokładność klasyfikacji ras zwierząt wzrosła z 89% do 94% dzięki zastosowaniu kwantyzacji QLoRA i LoRA z rangą 64. Instrukcja obejmuje zmiany w architekturze, przygotowanie danych oraz uruchomienie w Google Cloud.

Architektoniczne zmiany w Gemma 4

Gemma 4 korzysta z licencji Apache 2.0 i architektury MoE z 31B i 26B parametrami. Okno kontekstu rozszerzono do 256K tokenów. Model obsługuje wejścia multimodalne: obrazy, wideo, audio. Wbudowane są wywołania funkcji i generowanie strukturalnego JSON.

Poprzednie skrypty Gemma są niekompatybilne z powodu zmian w ładowaniu modelu i szablonach czatu. Do obsługi multimodalności stosuje się AutoModelForMultimodalLM.

Google AdInline article slot

Wymagania pamięci i GPU

NVIDIA RTX PRO 6000 oferuje 96 GB VRAM. Gemma 4 31B w formacie bfloat16 zajmuje 62 GB. QLoRA z 4-bitową kwantyzacją za pomocą bitsandbytes redukuje zużycie do 18-20 GB, zwalniając zasoby na dłuższy kontekst.

Adaptacja kodu pod Gemma 4

Format danych wejściowych

Obraz przekazywany jest przed tekstem. Instrukcja łączona jest z promptem użytkownika. Wypełniacz {"type": "image"} wskazuje pozycję dla tokenów obrazu w procesorze.

Maskowanie etykiet

Dynamiczna liczba tokenów obrazu wymaga wyszukiwania granicy odpowiedzi w pełnej tablicy input_ids od końca. Oddzielna tokenizacja tekstu prowadzi do rozsynchronizowania długości.

Google AdInline article slot

Konfiguracja LoRA

Architektura wykorzystuje Gemma4ClippableLinear. LoRA konfigurowana jest z target_modules="all-linear", aby ominąć wrapper i uniknąć błędów treningu.

Wyniki dostrojenia

Na 700 obrazach pośrednia dokładność osiągnęła poziom modelu bazowego. Pełny zbiór Oxford-IIIT Pet dał wzrost do 94% przy:

  • Rank 64 / Alpha 64
  • Learning rate 5e-5

Dokładność bazowa: 89%.

Google AdInline article slot

Konfiguracja środowiska w Google Cloud

Aktywuj API Cloud Run i Cloud Build w projekcie z rozliczeniami. Uzyskaj token Hugging Face.

  • Sklonuj repozytorium:
git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd devrel-demos/ai-ml/finetune_gemma/
  • Przetestuj na CPU z modelem 2B:
python3 finetune_and_evaluate.py \
  --model-id google/gemma-4-e2b-it \
  --device cpu \
  --train-size 20 \
  --num-epochs 1

Załaduj wagi do bucketu GCS w docelowym regionie.

Budowa i uruchomienie obrazu

Zbuduj obraz Docker:

gcloud builds submit --tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest .

Utwórz Job z 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"

Wykonaj zadanie:

gcloud beta run jobs execute gemma4-finetuning-job --region $REGION --async

Co ważne

  • QLoRA redukuje VRAM do 20 GB dla modelu 31B na RTX PRO 6000.
  • AutoModelForMultimodalLM jest niezbędna dla obrazów przed tekstem.
  • Maskowanie od końca input_ids rozwiązuje problem dynamicznych tokenów.
  • target_modules="all-linear" stabilizuje LoRA na Gemma4ClippableLinear.
  • Dokładność wzrosła o 5% do 94% na Oxford-IIIT Pet.

— Editorial Team

Advertisement 728x90

Czytaj dalej