Контейнеры против методов квантования: главное заблуждение
Большая часть путаницы возникает из-за смешения двух разных понятий. Контейнер (например, safetensors, GGUF) определяет, как тензоры хранятся на диске. Метод квантования (GPTQ, AWQ, NF4) определяет, как веса сжимаются до меньшего количества бит. Важно: большинство моделей GPTQ, AWQ и EXL2 также хранятся в файлах .safetensors — квантование живет внутри содержимого тензора, а не в расширении файла.
GGUF: Стандарт для llama.cpp и локального запуска
Формат GGUF, созданный Георги Гергановым (автор llama.cpp) и заменивший устаревший GGML в августе 2023 года, стал де-факто стандартом для локального инференса. Его ключевые преимущества:
- Единый файл: содержит не только веса, но и токенизатор, специальные токены и Jinja-шаблон чата.
- Extensibility: использование типизированных метаданных позволяет добавлять новые поля без поломки старых файлов.
- Поддержка mmap: позволяет загружать тензоры по одному, экономя оперативную память.
В 2026 году GGUF поддерживает сложные схемы, такие как Q4_K_M (смешанное квантование) и IQ-серии (importance matrix). Поддержка в vLLM остается экспериментальной и требует отдельного плагина.
Сравнение точности и размера: Llama-2-7B (референс)
Ниже приведены данные о компромиссе между размером модели и перплексией (PPL) для модели класса Llama-2-7B. Чем ниже PPL, тем лучше качество. Обратите внимание: даже при сильном сжатии потери минимальны.
| Квантование | Perplexity (PPL) | Изменение vs FP16 | Размер файла |
|---|---|---|---|
| FP16 (Baseline) | 5.9565 | 0% | 13.0 GB |
| Q8_0 | 5.9584 | +0.03% | 7.0 GB |
| Q6_K | 5.9642 | +0.13% | 5.5 GB |
| Q5_K_M | 5.9796 | +0.39% | 4.8 GB |
| Q4_K_M | 6.0565 | +1.68% | 4.1 GB |
GPTQ и AWQ: Эволюция методов квантования
GPTQ (ICLR 2023) использует информацию о гессиане для однократного квантования весов. В 2026 году оригинальная библиотека AutoGPTQ больше не поддерживается. Её место занял GPTQModel, который интегрирован в Transformers, vLLM и SGLang. Калибровка модели 8B занимает около 20 минут на A100.
AWQ (Activation-aware Weight Quantization) от MIT выиграла Best Paper Award на MLSys 2024. Её суть — защита ~1% «салиентных» весов через масштабирование активаций, а не через хранение их в высокой точности. Это делает AWQ быстрее в калибровке (10 минут на A100 для 8B модели) и менее склонным к переобучению. Библиотека AutoAWQ также депретирована, функционал перенесен в llm-compressor.
Почему это важно для разработчика?
Выбор формата зависит от стека. Если вы используете llama.cpp, Ollama или LM Studio — вам нужен GGUF. Для production-инференса через vLLM или SGLang предпочтительнее GPTQ или AWQ в формате safetensors. Помните правило расчета памяти: Weight memory ≈ parameters × bits-per-weight ÷ 8. Для модели 8B при 4.5 битах на вес потребуется ~4.5 GB только под веса, не считая KV-cache.
Источник: MarkTechPost ↗
