В новом поколении открытых моделей улучшены архитектура и способность к логическим рассуждениям. В этой статье — инструкция по дообучению модели Gemma 4 на собственных данных для задачи классификации пород животных.
Что изменилось в Gemma 4
Gemma 4 вышла под лицензией Apache 2.0 и получила обновлённую архитектуру. Ключевые особенности:
- 31B и 26B MoE
- Поддержка контекстного окна до 256K
- Нативная обработка изображений, видео и аудио
- Встроенная поддержка вызова функций и структурированного вывода в формате JSON
Из-за архитектурных изменений скрипты для предыдущих версий Gemma несовместимы. Требуется переработать логику загрузки модели и подготовки данных.
Память и GPU
Для обучения используется GPU NVIDIA RTX PRO 6000 на Cloud Run с 96 ГБ видеопамяти. Модель Gemma 4 31B в формате bfloat16 занимает около 62 ГБ. Применение 4-битного квантования QLoRA через библиотеку bitsandbytes снижает потребление VRAM до 18–20 ГБ. Это оставляет достаточно памяти для обработки длинного контекста и мультимодальных данных.
Изменения в коде для Gemma 4
Входные данные
Теперь изображение должно передаваться перед текстом. Инструкции объединяются с пользовательским промптом. В коде используется заполнитель {"type": "image"}, который указывает процессору место для вставки токенов изображения.
Класс модели
Для корректной работы со всеми типами данных используется AutoModelForMultimodalLM.
Маскирование меток
Ранее можно было использовать фиксированные ID токенов для определения начала ответа ассистента. В Gemma 4 количество токенов изображения динамическое. Если токенизировать текст отдельно, его длина может не совпасть с общей последовательностью. Решение — искать токены ответа в полном массиве input_ids с конца, чтобы точно определить границу маскирования.
Настройка LoRA
В Gemma 4 используется Gemma4ClippableLinear для стабилизации обучения. Обычный LoRA может игнорировать эту обёртку, что приводит к ошибкам. Чтобы избежать этого, в параметрах PEFT нужно указать target_modules="all-linear".
Результаты
Базовая точность модели на тесте составила 89%. После дообучения на наборе данных Oxford-IIIT Pet точность выросла до 94%. Использовалась конфигурация: Rank 64, Alpha 64, скорость обучения — 5e-5.
Запуск обучения на Cloud Run
Для запуска требуется проект в Google Cloud с включённым биллингом и активированными API Cloud Run и Cloud Build. Также необходим токен Hugging Face для доступа к весам модели.
- Клонируйте репозиторий
- Проверьте работу скрипта на CPU с маленькой моделью 2B и небольшим объёмом данных
- Загрузите веса модели в корзину Google Cloud Storage в том же регионе, где будет работать Cloud Run, чтобы ускорить запуск
- Соберите образ через Cloud Build
- Создайте задачу Cloud Run с поддержкой GPU и монтированием корзины GCS как локального диска
- Запустите выполнение