Перейти к содержанию
Innovialabs

Квантизация LLM: 8 бит, 4 бита, GGUF и потеря качества

Продвинутое4 мин

Коротко

Квантизация хранит веса модели меньшим числом бит, экономя память и часто ускоряя работу; 8 бит обычно близки к оригиналу, 4 бита — практичный компромисс, а надёжно проверить качество можно только на своих данных.

Что делает квантизация

Языковая модель — это в основном огромный набор чисел, весов. По умолчанию они хранятся как 16-битные числа с плавающей точкой (FP16 или BF16). Квантизация хранит их меньшим числом бит: 8, 4 или ещё меньше.

Эффект — простая арифметика. Модели на 7B параметров нужно около 14 ГБ в 16 битах, около 7 ГБ в 8 битах и примерно 3,5-4 ГБ в 4 битах (плюс накладные расходы). Это позволяет:

  • запускать модель на меньшей или более дешёвой GPU, даже на CPU или ноутбуке;
  • уместить более крупную модель на том же железе;
  • освободить память под KV-кэш и обслуживать больше параллельных запросов;
  • часто ускорить генерацию, потому что через память проходит меньше данных.

Цена — точность. Меньше бит — больше ошибок округления, и модель может стать немного менее точной.

Как это работает в двух словах

Диапазон реальных значений отображается на небольшой набор целочисленных уровней. В 4 битах всего 16 уровней, поэтому методы различаются тем, насколько умно их выбирают:

  • Масштаб по группам — веса делятся на маленькие группы со своим масштабом, чтобы выбросы не портили всю матрицу.
  • Калибровка — часть методов прогоняет через модель примеры данных, чтобы понять, какие веса важнее.
  • Смешанная точность — чувствительные слои получают больше бит, остальные меньше.

Сравнение форматов и методов

Метод / форматГде используетсяГлавная идея
8 бит (INT8, FP8)GPU-серверы, vLLM, TensorRT-LLMМинимальная потеря качества, примерно вдвое меньше памяти
GPTQинференс на GPU4 бита, калибровочные данные минимизируют ошибку слой за слоем
AWQинференс на GPU4 бита, защищает веса, важные для активаций
bitsandbytes (NF4)Hugging Face, дообучение QLoRAКвантизация при загрузке, удобно для экспериментов и обучения
GGUFllama.cpp, Ollama, LM StudioФормат файла для CPU и смешанного CPU/GPU, уровни вроде Q8_0, Q5_K_M, Q4_K_M

GGUF — это формат-контейнер, а не один метод. Уровень зашит в название: Q8_0 — 8 бит, Q4_K_M — популярный 4-битный вариант «K-quant». Больше число — больше бит и выше качество, меньше число — меньше файл.

Сколько качества теряется

Общие закономерности, а не гарантии:

  • 8 бит обычно очень близки к оригиналу на большинстве задач.
  • 5-6 бит — безопасная середина.
  • 4 бита — распространённый компромисс: заметно меньше, часто достаточно хорошо, но потери проявляются на сложных рассуждениях, математике, коде и менее распространённых языках.
  • 3 бита и ниже быстро деградируют, особенно у маленьких моделей.

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

Как измерить потерю для своей задачи

Публичные бенчмарки не покажут, как модель ведёт себя на ваших данных. Проверьте сами:

  1. Соберите eval-набор — 50-200 реальных запросов из вашей области с ожидаемыми ответами или критериями оценки.
  2. Запустите базовую версию — ту же модель в 16 или 8 битах.
  3. Запустите квантизованные варианты — например Q8, Q5, Q4 — с теми же промптами и temperature 0.
  4. Оцените ответы — точное совпадение для структурированных задач, LLM-as-judge или ручная проверка для свободного текста.
  5. Проверьте ошибки формата — сломанный JSON или неудачные tool calls часто появляются раньше общего падения качества.
  6. Замерьте скорость и память под реалистичной нагрузкой.

Perplexity — полезный быстрый сигнал при сравнении квантизаций одной модели, но он не заменяет тестов на ваших задачах.

Как выбрать

  • Памяти GPU хватает? Берите 16 или 8 бит и не рискуйте.
  • Бюджет на GPU ограничен? Попробуйте AWQ или GPTQ в 4 битах и проверьте на своём eval-наборе.
  • CPU, ноутбук или edge-устройство? GGUF с llama.cpp или Ollama; начните с Q4_K_M или Q5_K_M.
  • Дообучение на небольшой GPU? Стандартный путь — QLoRA с 4-битным bitsandbytes.

Частые ошибки

  • Выбирать самый маленький файл, не проверив реальные задачи.
  • Сравнивать сразу разные модели и разные квантизации — непонятно, что дало разницу.
  • Забывать, что KV-кэшу тоже нужна память — веса не вся картина.
  • Считать, что квантизованная модель на другом языке ведёт себя так же, как на английском.

Частые вопросы

Часто да — для чата, классификации и суммаризации, но всё зависит от задачи. Прежде чем решать, прогоните свой eval-набор против базовой версии в 8 или 16 битах.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.