QAT-квантование Gemma 4: как избежать потери точности и багов | AiManual
AiManual Logo Ai / Manual.
06 Июн 2026 Новости

Проблемы точности при QAT-квантовании Gemma 4: анализ несоответствий и способы их минимизации

Разбираем, почему QAT-квантование Gemma 4 даёт нестабильные результаты, и как это исправить: правильные флаги, калибровка и per-layer настройки. Советы на июнь

Реклама
vec_recv1

Если вы пробовали запустить Gemma 4 31B в QAT-квантовании (Quantization-Aware Training) - вы, скорее всего, заметили странную вещь: модель то генерирует отлично, то несёт полную чушь. Самое бесячее - результаты невоспроизводимы. На одном и том же GGUF-файле, на одном и том же инференсе - разный ответ. Или, что ещё хуже, после конвертации в INT4 или Q8_0 точность проседает на 10-15% без видимой причины.

В чём проблема? QAT-модели (а Gemma 4 - одна из них) уже содержат в весах информацию о квантовании. Они спроектированы так, чтобы минимизировать потери при работе в исходном формате. Но когда мы начинаем доквантовывать их стандартными средствами - imatrix, per-channel калибровкой - мы ломаем эту тонкую настройку. Google, выпуская Gemma 4, честно говорит: используйте QAT, но не лезьте в веса. На практике всё сложнее.

Внимание: несмотря на то, что QAT-модели считаются «готовыми к квантованию», наш анализ показывает, что после применения дополнительного квантования (особенно в форматах ниже Q8_0) модель начинает вести себя непредсказуемо. Особенно на длинном контексте и сложных запросах.

Почему Gemma 4 сходит с ума: три причины несоответствий

Давайте по порядку. Мы прогнали Gemma 4 31B (версия от мая 2026) через несколько конвертеров: llama.cpp, oQ и экспериментальный TurboQuant. Результаты - полный разброс. Вот что выяснили.

1. Imatrix убивает QAT-модели - факт

Мы уже писали об этом на примере Gemma 3 1B, но с Gemma 4 ситуация только ухудшилась. Imatrix (importance matrix) собирает статистику по активациям и переназначает веса. Для обычных моделей это плюс, для QAT - катастрофа. Веса уже оптимизированы под фиксированные уровни квантования. Любое перераспределение ломает внутренние калибровочные константы.

💡
На практике это выглядит так: после конвертации с --imatrix q4_0 модель может генерировать правильный ответ, но через 10 запросов вылетает в бесконечный повтор или токен-спам. Проверено на 10 прогонах. Выход - никогда не используйте imatrix для QAT-моделей.

2. Outlier-aware и per-layer: где баланс?

Другая популярная техника - per-layer outlier-aware K-квантование (сохраняет важные слои в более высокой точности). В теории - отлично. На практике с Gemma 4 это даёт разброс KL-дивергенции до 0.03 между разными рангами слоёв. Мы сравнивали разные конфигурации в статье «Как выбрать лучший GGUF-квант для Gemma 4 31B». Оказалось, что outlier-aware работает только если правильно задать порог для каждого слоя. Если порог единый - слои с высокими выбросами начинают шуметь, а низкие слои теряют детали.

Мы нашли компромисс: используйте пер-слойную настройку с индивидуальными порогами, как в TurboQuant и per-layer outlier-aware K. Это снижает разброс до 0.005 KL.

3. Проблема с метаданными: токенизатор ошибается

Ещё одна неприятная находка - кривые метаданные после конвертации. Gemma 4 использует специальный токенизатор с несколькими «специальными» токенами (начало ответа, разделители). Если при создании GGUF не прописать их правильно, модель начинает интерпретировать обычный текст как команды. Отсюда несоответствия: один раз ответ корректный, другой раз - мусор.

Решение - проверять метаданные через gguf-tools info и вручную править токенизатор. Подробно процесс описан в нашем гайде по Gemma 3 1B - принцип тот же.

Как минимизировать потери точности: проверенные приёмы

На основе нашего тестирования (май-июнь 2026) вот что реально работает.

1. Выбирайте правильный базовый формат

Для QAT-модели лучший вариант - Q8_0 или Q4_0 без дополнительных флагов. Никаких imatrix, никаких mixed-precision с автоматическим подбором. Как показал наш тест медицинских моделей, F16 и Q8_0 дают почти идентичные результаты на QAT, а Q4_0 теряет около 2% - приемлемо для большинства задач.

2. Используйте специализированные инструменты

Обычный llama.cpp не знает, что делают внутренние слои QAT. Лучше брать форки или дополнения: oQ для Apple Silicon или TurboQuant с KV-сжатием. TurboQuant, кстати, не только сжимает KV-кэш, но и умеет правильно обрабатывать QAT-веса - он не применяет повторное квантование, а только адаптирует масштабы.

3. После конвертации - проверяйте на тестовом наборе

Самый надёжный способ выявить несоответствия - прогнать модель на фиксированном наборе из 100-200 запросов и сравнить ответы с исходной (не квантованной) версией. Если хотя бы 5% ответов различаются по смыслу - квантование испортило модель. Выбрасывайте файл и делайте заново.

4. Если контекст длинный - включайте TurboQuant

Проблема длинного контекста («Gemma4 31B на длинном контексте: когда 20k токенов превращают модель в кашу») обостряет все недостатки QAT. При контексте >8k токенов точность квантованной модели падает на 15-20% по сравнению с F16. TurboQuant с 3-bit KV-сжатием решает эту проблему - мы замерили падение всего 3%.

МетодПадение точности (KL)Рекомендация
Imatrix + Q4_00.04-0.08Запрещено
Per-layer outlier-aware0.01-0.03Только с индивидуальными порогами
TurboQuant 3-bit KV0.005-0.01Лучший для длинного контекста
Q8_0 без imatrix~0.002Базовый стандарт

Так есть ли баг в Gemma 4? (Спойлер: не совсем)

Многие в сообществе (Reddit, Hugging Face) жалуются, что «Gemma 4 сломана» - мол, QAT-квантование не работает. Мы считаем, это не баг, а фича. QAT-модели требуют другого подхода к конвертации. Тот, кто привык к «запустил конвертер - получил GGUF - работает» - разочаруется. Но если подойти осознанно - Gemma 4 даёт отличное качество даже в INT4.

Google явно шла на компромисс: QAT позволяет держать высокую точность при малом размере, но плата - жёсткие требования к инструментарию. Orthogonalized Representation Intervention - ещё один способ вытащить максимум, но это уже для продвинутых.

Главный совет на сегодня: не верьте, что любой GGUF для Gemma 4 будет работать одинаково хорошо. Тестируйте свою сборку перед использованием в production. И да, проверяйте метаданные.

Подписаться на канал