Тонкая настройка Gemma 4 на Cloud Run Jobs: использование серверных GPU для классификации пород животных

В этом поколении открытых моделей улучшены возможности рассуждения и эффективность архитектуры. Ниже будет инструкция по дообучению модели на собственных данных.

| Если вам интересна тема AI-агентов и внедрения нейросетей, заглядывайте в мой Telegram-канал ДругОпенсурса. Там я публикую свежие новости и разборы инструментов в числе первых. |

Тонкая настройка Gemma 4 на Cloud Run Jobs: использование серверных GPU для классификации пород животных - 1

Но сначала, что изменилось в Gemma 4

Gemma 4 получила лицензию Apache 2.0 и обновленную архитектуру. Основные параметры следующие:

31B и 26B MoE

Поддержка окна до 256K

  Нативная обработка изображений, видео и аудио

Встроенная поддержка вызова функций и структурированного JSON

Из-за архитектурных изменений скрипты для предыдущих версий Gemma не подходят. Требуется изменить логику загрузки и подготовки данных.

Память и GPU

Для работы используется NVIDIA RTX PRO 6000 на Cloud Run с 96 ГБ видеопамяти. Модель Gemma 4 31B в точности bfloat16 занимает около 62 ГБ. Использование 4-битного квантования QLoRA через библиотеку bitsandbytes снижает потребление памяти до 18-20 ГБ. Это оставляет свободный объем VRAM для обработки длинного контекста и мультимодальных данных.

Изменения в коде для Gemma 4

Входные данные

Gemma 4 требует передачи изображения перед текстом. Инструкции теперь объединяются с пользовательским промптом. В коде используется заполнитель {“type”: “image”} , который указывает процессору место для вставки токенов изображения.

Класс модели

Для корректной работы со всеми типами данных теперь используется AutoModelForMultimodalLM

Маскирование меток

В предыдущих версиях можно было использовать фиксированные ID токенов для поиска начала ответа ассистента. В Gemma 4 количество токенов изображения динамическое. Если токенизировать текст отдельно, его длина может не совпасть с длиной в общем шаблоне чата. Решение — поиск токенов ответа в полном массиве input_ids с конца, чтобы точно определить границу маскирования.

Настройка LoRA

В Gemma 4 используется Gemma4ClippableLinear для стабилизации обучения. Обычный LoRA может игнорировать эту обертку, что ведет к ошибкам в обучении. Чтобы этого избежать, в параметрах PEFT нужно указывать target_modules=”all-linear .


Результаты

 Промежуточные результаты (700 изображений)

Промежуточные результаты (700 изображений)

Базовая точность Gemma 4 на тесте составила 89%. После обучения на полном наборе данных Oxford-IIIT Pet точность поднялась до 94%. Использовалась конфигурация Rank 64 / Alpha 64 и скорость обучения 5e-5.

Полный датасет

Полный датасет

Запуск обучения на Cloud Run

Нужен проект в Google Cloud с включенным биллингом и активированными API Cloud Run и Cloud Build. Также требуется токен Hugging Face для доступа к весам модели.

Клонируйте репозиторий

git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd devrel-demos/ai-ml/finetune_gemma/

Проверьте работу скрипта на CPU с маленькой моделью 2B и малым количеством данных

python3 finetune_and_evaluate.py 
  --model-id google/gemma-4-e2b-it 
  --device cpu 
  --train-size 20 
  --num-epochs 1

Чтобы ускорить запуск задачи в облаке, загрузите веса модели в корзину Google Cloud Storage в том же регионе, где будет работать Cloud Run.

Соберите образ через Cloud Build

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

Создайте задачу Cloud Run с поддержкой GPU и монтированием корзины GCS как локального диска

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"

Запустите выполнение

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

Автор: Qwertcoser

Источник

  • Запись добавлена: 11.04.2026 в 16:39
  • Оставлено в