## 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.
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.
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%.
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
Brak komentarzy.