Подписывайтесь:

Блог AST-SoftPro

Квантование больших языковых моделей: полное руководство по методам, потере точности и практическим рекомендациям

01.08.2026 19 мин чтения
Квантование больших языковых моделей: полное руководство по методам, потере точности и практическим рекомендациям

Введение

Запуск больших языковых моделей (LLM) в продакшене — это не просто вопрос выбора модели. Это вопрос того, сколько VRAM она займёт, сколько токенов в секунду выдаст, и сколько денег вы потратите на инфраструктуру. Квантование — ключевая технология, которая позволяет запускать модели в 2–4 раза быстрее и в 2–4 раза дешевле, сохраняя при этом подавляющую часть качества.

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

Что такое квантование и зачем оно нужно

Квантование — это процесс снижения разрядности весов нейронной сети. Вместо хранения каждого веса в формате FP16 (16-битное число с плавающей запятой), мы представляем его в INT8 (8-битное целое), INT4 (4-битное целое) или даже ещё более компактных форматах.

Практическая выгода очевидна:

  • FP16 → INT8: модель занимает вдвое меньше памяти, инференс ускоряется примерно в 1.5 раза

  • FP16 → INT4: модель занимает вчетверо меньше памяти, инференс ускоряется примерно в 2 раза

  • FP16 → FP8: модель занимает вдвое меньше памяти, при этом качество практически не теряется

💡 Для бизнеса: квантование позволяет запускать 70-миллиардную модель на одном GPU вместо восьми — это экономия десятков тысяч долларов в месяц на инфраструктуре.

Основные форматы квантования

FP8 — золотой стандарт для продакшена

FP8 (8-битное число с плавающей запятой) — это формат, который набирает популярность благодаря нативной аппаратной поддержке на GPU NVIDIA Hopper (H100) и Blackwell (B200).

Качество: ~99% от BF16 на бенчмарках MMLU-Pro и HumanEval.

Плюсы:

  • Практически без потери точности (0.4 пункта на MMLU-Pro против FP16)

  • Нативная аппаратная поддержка на современных GPU

  • Идеально для high-throughput continuous batching

Минусы:

  • Требует GPU с поддержкой FP8 (Hopper/Blackwell)

  • На старых GPU (Ampere) не даёт преимущества

INT8 — универсальный выбор

INT8 (8-битное целое число) — проверенный формат, поддерживаемый практически на любом железе.

Качество: ~97–98% от BF16.

Плюсы:

  • Широкая поддержка (bitsandbytes, TensorRT, llama.cpp)

  • Работает на Ampere (A100) и старше

  • Простая калибровка через llm.int8()

Минусы:

  • Потеря точности 1–3% на некоторых задачах

  • Требует калибровки для outlier-активаций

AWQ (Activation-aware Weight Quantization)

AWQ — это метод квантования весов с учётом активаций. Алгоритм анализирует, какие веса влияют на активации больше всего, и защищает их от агрессивного квантования.

Качество: ~94–96% от BF16 при INT4.

Плюсы:

  • Лучшее качество среди INT4-методов

  • Marlin-AWQ — самый быстрый вариант для продакшена

  • Работает на любом GPU

Минусы:

  • Требует калибровочного датасета (обычно 128 примеров)

  • Квантование занимает время (минуты для 70B модели)

GPTQ (Generative Pretrained Tokenizer Quantization)

GPTQ — один из самых популярных методов INT4-квантования, появившийся в 2022 году и остающийся самым цитируемым по состоянию на 2026 год.

Качество: ~94–96% от BF16 при INT4 (чуть ниже AWQ).

Плюсы:

  • Широкая поддержка (GGUF, Marlin)

  • Много готовых квантованных моделей на HuggingFace

  • Marlin-GPTQ быстрее, чем Marlin-AWQ

Минусы:

  • Чуть ниже качество, чем AWQ (1.9 пункта на MMLU-Pro против FP16)

  • Чувствителен к выбору калибровочного датасета

GGUF — формат для локального запуска

GGUF — это не метод квантования, а формат файла, который поддерживает множество уровней квантования и используется в llama.cpp. Внутри GGUF реализованы как классические методы (Q4_0, Q8_0), так и современные K-quants и IQ-quants.

Качество: зависит от уровня (Q8_0 ≈ INT8, Q4_K ≈ AWQ/GPTQ).

Плюсы:

  • Работает на CPU (не только GPU)

  • Идеален для edge-устройств и ноутбуков

  • Поддержка на macOS, Linux, Windows

Минусы:

  • Медленнее, чем GPU-оптимизированные форматы (Marlin)

  • Меньше контроля над качеством

K-quants: Q4_K, Q5_K, Q6_K

K-quants — это семейство методов, которые используют смешанную разрядность: часть весов квантуется сильнее, часть слабее. Это позволяет сохранить качество на критичных слоях при общем уменьшении размера.

  • Q4_K — 4-битное квантование с K-стратегией. Баланс между размером и качеством. Модель 149B занимает ~90 GB.

  • Q5_K — 5-битное квантование. Лучше качество, чем Q4_K, при умеренном росте размера. Модель 149B занимает ~106 GB.

  • Q6_K — 6-битное квантование. Качество близко к Q8_0, но модель меньше. Модель 149B занимает ~123 GB.

💡 Практический совет: Q6_K часто даёт лучшее соотношение качество/размер — качество почти как у Q8_0, но модель на 20–25% меньше.

IQ-quants: IQ1, IQ2, IQ3, IQ4

IQ-quants — это семейство методов от llama.cpp, которые используют более агрессивное квантование с адаптивным выбором групп. Каждый уровень имеет несколько вариантов с суффиксами M, S, XS, XXS:

  • M (Medium) — наименьшая компрессия в рамках уровня, лучшее качество

  • S (Small) — средняя компрессия

  • XS (Extra Small) — высокая компрессия

  • XXS (Extra Extra Small) — максимальная компрессия, наименьшее качество

Разница в размерах на примере модели 149B (Cerebras Step-3.5-Flash-REAP):

Формат Размер Качество (относительно)
IQ1_M 33.4 GB ~75–80% от BF16
IQ1_S 30 GB ~70–75% от BF16
IQ2_XXS 39.1 GB ~80–85% от BF16
IQ2_XS 43.7 GB ~82–87% от BF16
IQ2_S 44.1 GB ~83–88% от BF16
IQ2_M 48.7 GB ~85–90% от BF16
IQ3_XXS 57.5 GB ~88–92% от BF16
IQ3_XS 60.8 GB ~89–93% от BF16
IQ3_S 64.6 GB ~90–94% от BF16
IQ3_M 65.2 GB ~91–95% от BF16
IQ4_XS 79.7 GB ~93–96% от BF16
IQ4_NL 84.3 GB ~94–97% от BF16
Q4_K 89.9 GB ~94–96% от BF16
Q5_K 106 GB ~96–98% от BF16
Q6_K 123 GB ~97–99% от BF16

⚠️ Важно: суффиксы M/S/XS/XXS влияют не только на размер, но и на качество. IQ2_M (48.7 GB) заметно лучше IQ2_XXS (39.1 GB) — разница в качестве может быть 5–10%. Если VRAM позволяет, всегда выбирайте M или S.

IQ4_NL vs IQ4_XS vs Q4_K

IQ4_NL (No Layers) — это вариант, где некоторые слои не квантуются так агрессивно. IQ4_NL (84.3 GB) чуть больше IQ4_XS (79.7 GB), но качество выше. Q4_K (89.9 GB) — самый большой из 4-битных вариантов, но и самый стабильный по качеству.

💡 Рекомендация: если нужно 4-битное квантование и VRAM позволяет — Q4_K. Если нужно ужать ещё сильнее — IQ4_NL, а не IQ4_XS.

Сравнительная таблица методов квантования

Формат Качество vs BF16 VRAM (70B) Скорость Лучшее применение
FP8 ~99% ~35 GB Высокая Production на Hopper/Blackwell
INT8 ~97–98% ~35 GB Высокая Production на Ampere
AWQ INT4 ~94–96% ~18 GB Очень высокая VRAM-constrained, latency-bound
GPTQ INT4 ~94–96% ~18 GB Очень высокая Быстрый инференс, много готовых моделей
GGUF Q6_K ~97–99% ~25 GB Средняя Локальный запуск, баланс качество/размер
GGUF Q5_K ~96–98% ~21 GB Средняя Локальный запуск, хорошее качество
GGUF Q4_K ~90–94% ~18 GB Средняя Локальный запуск, CPU
GGUF Q8_0 ~97–98% ~35 GB Средняя Локальный запуск, CPU

Потеря точности: что говорят бенчмарки

На основе данных по шести 70B-моделям (Llama 4 70B, Qwen 3 72B, DeepSeek V4-Flash, Mistral Large 2, Command-R+, Yi 2) картина выглядит так:

  • FP8: 0.4 пункта на MMLU-Pro и HumanEval+ против FP16

  • INT8: 0.7 пункта на MMLU-Pro и HumanEval+ против FP16

  • AWQ-4: 1.6 пункта на MMLU-Pro и HumanEval+ против FP16

  • GPTQ-4: 1.9 пункта на MMLU-Pro и HumanEval+ против FP16

⚠️ Важно: потеря точности не линейна. На простых задачах (общий диалог, суммаризация) квантование практически незаметно. На сложных задачах (математика, код) разница может быть существенной.

Примеры потери точности у конкретных моделей

Qwen 2.5 7B:

  • Q8_0: стабильная производительность на всех пяти задачах

  • Q5_K: стабильная производительность

  • Q4_K: значительное снижение точности

Llama 3 8B:

  • Q8_0: стабильная производительность

  • Q5_K: стабильная производительность

  • Q4_K: значительное снижение точности

Llama 3.1 8B (HumanEval):

  • FP16: 43.05%

  • FP8: 41.69%

  • INT8: 43.78%

  • INT4: 40.60%

💡 Практический вывод: для задач, где точность критична (медицина, юриспруденция, финансы), рекомендуется FP8 или INT8. Для общих задач (чат-боты, суммаризация, генерация контента) INT4 через AWQ — отличный выбор.

Sub-4-bit квантование: новое поколение

Появились методы квантования ниже 4 бит — IQ1, IQ2, IQ3. Эти форматы позволяют запускать огромные модели на потребительском железе. На примере модели 149B (Cerebras Step-3.5-Flash-REAP-149B-A11B):

IQ1 (1 бит):

  • IQ1_M: 33.4 GB, IQ1_S: 30 GB

  • Качество: ~70–80% от BF16

  • Применяется для edge-устройств и мобильных телефонов

  • Модель 149B помещается в 30 GB — это в 5 раз меньше оригинала

IQ2 (2 бита):

  • IQ2_XXS: 39.1 GB, IQ2_XS: 43.7 GB, IQ2_S: 44.1 GB, IQ2_M: 48.7 GB

  • Качество: ~80–90% от BF16 (зависит от варианта)

  • Модель 149B помещается в 39–49 GB

  • IQ2_M заметно лучше IQ2_XXS — разница в качестве может быть 5–10%

IQ3 (3 бита):

  • IQ3_XXS: 57.5 GB, IQ3_XS: 60.8 GB, IQ3_S: 64.6 GB, IQ3_M: 65.2 GB

  • Качество: ~88–95% от BF16 (зависит от варианта)

  • Модель 149B помещается в 57–65 GB

  • Компромисс между размером и качеством

⚠️ Предупреждение: sub-4-bit квантование теряет значительную часть качества. Используйте только когда нет другого выбора — например, для запуска на ноутбуке без GPU. Всегда выбирайте вариант M или S, если VRAM позволяет.

Как выбрать метод квантования для вашего проекта

Сценарий 1: Production на GPU-кластере

Если у вас есть H100/B200 — используйте FP8. Это практически без потери точности и с максимальной скоростью. Если GPU старше (A100) — INT8 через bitsandbytes.

Сценарий 2: Один GPU, ограниченная VRAM

Для 70B модели на одном GPU с 24 GB VRAM — AWQ INT4 через Marlin. Это даст лучшую комбинацию скорости и качества.

Сценарий 3: Локальный запуск на ноутбуке

GGUF Q4_K через llama.cpp — самый простой вариант. Если качество не устраивает — Q5_K или Q6_K. Q6_K часто даёт лучшее соотношение качество/размер — качество почти как у Q8_0, но модель на 20–25% меньше.

Сценарий 4: Мобильные устройства

IQ2/IQ3 через llama.cpp или ExecuTorch. Качество будет ниже, но модель запустится. Всегда выбирайте вариант M или S, если VRAM позволяет — IQ2_M заметно лучше IQ2_XXS.

Сценарий 5: Максимальная компрессия при минимальной потере

Если нужно ужать модель как можно сильнее, но сохранить качество — IQ4_NL или Q4_K. IQ4_NL (84.3 GB для 149B) чуть больше IQ4_XS (79.7 GB), но качество выше. Q4_K (89.9 GB для 149B) — самый стабильный по качеству из 4-битных вариантов.

⚠️ Типичная ошибка: выбор квантования без тестирования на реальных данных. Всегда тестируйте квантованную модель на своём датасете перед продакшеном.

Практические рекомендации

1. Всегда тестируйте на реальных данных

Квантование может по-разному влиять на разные задачи. Модель, которая отлично работает на MMLU, может потерять качество на вашем специфическом датасете.

2. Используйте Marlin для GPU-инференса

Marlin — это оптимизированный kernel для быстрого INT4-инференса. Marlin-AWQ быстрее Marlin-GPTQ и при этом даёт лучшее качество.

3. Не квантуйте KV-cache без необходимости

Квантование KV-cache (кэша ключей и значений) даёт дополнительную экономию памяти, но может значительно снизить качество. Используйте только если VRAM критически ограничен.

4. Калибровочный датасет имеет значение

Для AWQ и GPTQ качество квантования зависит от калибровочного датасета. Используйте данные, похожие на ваши реальные запросы — не просто случайные тексты из Wikipedia.

5. Мониторьте качество после квантования

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

💡 Для бизнеса: квантование — это не просто техническая оптимизация. Это способ сделать AI-решения экономически viable. Компания, которая запускает 70B модель на одном GPU вместо восьми, экономит десятки тысяч долларов в месяц.

Риски самостоятельного внедрения

Квантование кажется простым: скачал квантованную модель, запустил, готово. Но на практике есть множество подводных камней:

  • Неправильный выбор метода: AWQ может быть хуже GPTQ для вашей конкретной модели и задачи

  • Неправильный калибровочный датасет: качество квантования сильно зависит от данных

  • Скрытая потеря качества: модель может работать хорошо на бенчмарках, но плохо на реальных запросах

  • Проблемы с производительностью: квантование не всегда даёт ожидаемое ускорение без правильной настройки инференс-движка

  • Совместимость: не все квантованные форматы работают со всеми инференс-движками

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

Заключение

Квантование — это не компромисс, а инструмент. Правильно выбранное квантование позволяет запускать модели в 2–4 раза быстрее и дешевле, теряя при этом 1–6% точности. Ключевые выводы:

  1. FP8 — лучший выбор для production на современных GPU (Hopper/Blackwell)

  2. AWQ INT4 — лучший выбор для VRAM-constrained сред

  3. GPTQ INT4 — хороший выбор, если нужно больше готовых моделей

  4. GGUF — лучший выбор для локального запуска на CPU

  5. Всегда тестируйте на реальных данных перед продакшеном

Если ваш проект требует глубокой экспертизы — от выбора модели и метода квантования до настройки инференс-движка и мониторинга качества — стоит рассмотреть профессиональную помощь. Это инвестиция, которая окупается снижением рисков и ускорением выхода на рынок.

Источники

AI-Помощник