Квантование моделей: запуск большой LLM на слабом железе
Как с помощью квантования запустить большие языковые модели на обычном ПК. Методы GPTQ, AWQ, GGUF, практические примеры и сравнение.
Модель с 70 миллиардами параметров занимает 140 ГБ в формате FP16. У вас нет сервера с четырьмя A100? Не проблема. Квантование позволяет сжать ту же модель до 40 ГБ и запустить её на паре потребительских видеокарт — или взять модель поменьше и уместить её в 8 ГБ VRAM обычной RTX 3060. В этой статье разберём, как это работает, какие методы существуют и что конкретно нужно делать.
Что такое квантование и зачем оно нужно
Квантование — это снижение точности числового представления весов модели. Вместо 16-битных чисел с плавающей запятой (FP16) веса хранятся в 8-битном (INT8), 4-битном (INT4) или даже 2-битном формате. Математически это означает переход от непрерывного пространства значений к дискретному с меньшим числом уровней.
Квантование — это не магия и не хак. Это осознанный компромисс: мы жертвуем небольшой долей точности ради кратного сокращения памяти и ускорения вычислений.
Зачем это нужно на практике:
- Память. Модель Llama 3.1 8B в FP16 занимает ~16 ГБ. В формате Q4_K_M — около 4,9 ГБ. Сокращение в 3+ раза.
- Скорость. Операции с целочисленными типами выполняются быстрее, чем с плавающей запятой, особенно на CPU.
- Доступность. Модели, которые раньше требовали дата-центр, теперь работают на домашнем ПК.
Основные методы квантования
Существуют десятки подходов, но на практике в 2026 году доминируют три метода: GGUF (k-quants), GPTQ и AWQ. У каждого свои сильные стороны.
graph TD
A[Обученная модель FP16] --> B{Выбор метода}
B --> C[GGUF k-quants]
B --> D[GPTQ]
B --> E[AWQ]
C --> F[CPU + GPU
llama.cpp / Ollama]
D --> G[GPU CUDA
vLLM / TGI]
E --> H[GPU CUDA
vLLM / TGI]
F --> I[Локальный ПК]
G --> J[Сервер / Облако]
H --> J
GGUF и k-quants
GGUF — формат файлов, разработанный проектом llama.cpp. Это стандарт для локального запуска моделей. Ключевая особенность — поддержка групповых схем квантования (k-quants), где веса разбиваются на блоки по 64–256 элементов, и для каждого блока подбирается свой масштаб квантования.
Основные схемы:
| Схема | Бит | Размер 8B модели | Качество | Назначение |
|---|---|---|---|---|
| Q2_K | 2 | ~2,5 ГБ | Низкое | Raspberry Pi, эксперименты |
| Q3_K_M | 3 | ~3,5 ГБ | Приемлемое | Ограниченная память |
| Q4_K_M | 4 | ~4,9 ГБ | Хорошее | Золотой стандарт |
| Q5_K_M | 5 | ~5,7 ГБ | Очень хорошее | Когда есть запас VRAM |
| Q6_K | 6 | ~6,6 ГБ | Отличное | Близко к FP16 |
| Q8_0 | 8 | ~8,2 ГБ | Почти идеальное | Максимальное качество |
GPTQ
GPTQ (GPT-Quantization) — метод квантования после обучения (PTQ), который использует калибровочные данные для минимизации ошибки. Алгоритм последовательно обрабатывает каждый слой модели, компенсируя ошибку квантования предыдущих слоёв.
Преимущества:
- Высокая пропускная способность на GPU (~712 токенов/сек с ядром Marlin)
- Хорошее сохранение качества на 4-битном уровне
- Широкая поддержка в серверных фреймворках (vLLM, TGI)
Недостаток — работает только с CUDA GPU. Для локального запуска на CPU не подходит.
AWQ
AWQ (Activation-Aware Weight Quantization) исходит из наблюдения, что не все веса одинаково важны. Алгоритм выделяет ~1% критических весов и пропускает их при квантовании, что значительно снижает потерю качества.
По бенчмаркам 2026 года AWQ сохраняет ~95% качества оригинальной модели — лучший показатель среди 4-битных методов. Пропускная способность с ядром Marlin-AWQ достигает 741 токенов/сек — максимум среди всех методов.
| Параметр | GGUF Q4_K_M | GPTQ 4-bit | AWQ 4-bit |
|---|---|---|---|
| Сохранение качества | ~92% | ~93% | ~95% |
| Работа на CPU | Да | Нет | Нет |
| Работа на GPU | Да | Да (CUDA) | Да (CUDA) |
| Лучшее применение | Локальный ПК | Сервер | Сервер + качество |
| Скорость (GPU) | Средняя | Высокая | Максимальная |
Практика: запуск квантованной модели
Самый простой путь — Ollama. Это обёртка над llama.cpp с автоматическим управлением моделями, квантованием и GPU-памятью.
Установка и первый запуск
# Установка Ollama (Linux/macOS)
curl -fsSL https://ollama.ai/install.sh | sh
# Запуск модели — Ollama сама скачает квантованную версию
ollama run llama3.1:8b
# Конкретная квантизация
ollama run llama3.1:8b-q4_K_M
# Qwen 3 — отличная альтернатива
ollama run qwen3:8b
Ollama автоматически определяет доступную GPU и распределяет слои модели между видеопамятью и оперативной памятью.
Ручное квантование через llama.cpp
Для тех, кому нужен полный контроль:
# Клонирование и сборка llama.cpp
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && cmake -B build && cmake --build build
# Конвертация модели из HuggingFace формата в GGUF
python convert_hf_to_gguf.py /path/to/model --outfile model-f16.gguf
# Квантование до Q4_K_M
./build/bin/llama-quantize model-f16.gguf model-q4_k_m.gguf Q4_K_M
# Запуск
./build/bin/llama-cli -m model-q4_k_m.gguf -p "Привет! Расскажи о себе."
Подбор железа под задачу
Главное правило: размер квантованной модели в ГБ ≈ параметры (в миллиардах) × 0,6 для Q4_K_M. К этому нужно добавить 1–2 ГБ на контекстное окно и служебные данные.
graph LR
A["8 ГБ VRAM
(RTX 3060/4060)"] --> B["7-8B модели
Llama 3.1 8B
Qwen 3 8B"]
C["16 ГБ VRAM
(RTX 4080/4090)"] --> D["13-32B модели
Qwen 3 32B
Mistral Small 24B"]
E["24 ГБ VRAM
(RTX 3090/4090)"] --> F["32-34B модели
с большим контекстом"]
G["48+ ГБ VRAM
(2×24 ГБ / A6000)"] --> H["70B+ модели
Llama 3.3 70B
Qwen 2.5 72B"]
| Конфигурация | Модели (Q4_K_M) | Скорость | Цена GPU (б/у) |
|---|---|---|---|
| 8 ГБ VRAM (RTX 3060) | 7-8B параметров | 30-40 т/с | ~$150-200 |
| 16 ГБ VRAM (RTX 4080) | 13-24B параметров | 25-35 т/с | ~$700-900 |
| 24 ГБ VRAM (RTX 3090) | 32-34B параметров | 20-30 т/с | ~$600-800 |
| Без GPU (CPU, 32 ГБ RAM) | 7-8B параметров | 5-15 т/с | — |
Для интерактивного чата комфортна скорость выше 15 токенов в секунду. Выше 30 — разницу с облачным API уже трудно заметить.
Как выбрать между моделями и квантованием
Частый вопрос: что лучше — большая модель с агрессивным квантованием или маленькая модель с мягким?
Ответ однозначный: маленькая модель с Q4_K_M почти всегда лучше, чем большая модель с Q2_K. Модель Qwen 3 8B в Q4_K_M выдаёт более связный и точный текст, чем 70B модель, пережатая до 2 бит.
Порядок действий:
- Определите объём доступной памяти (VRAM или RAM)
- Выберите максимальную модель, помещающуюся в Q4_K_M
- Если качество не устраивает — попробуйте Q5_K_M (если память позволяет) или смените модель
- Если памяти мало — возьмите модель поменьше, но не опускайтесь ниже Q3_K_M
Качество квантованной модели определяется не только числом бит, но и архитектурой модели, качеством обучающих данных и выбранным методом квантования. Не все 4-битные модели одинаковы.
Заключение
Квантование превратило запуск больших языковых моделей из привилегии владельцев дата-центров в доступную задачу для любого ПК с 8+ ГБ видеопамяти. Формат GGUF и инструменты вроде Ollama снизили порог входа до одной команды в терминале.
Ключевые выводы:
- Q4_K_M — оптимальный баланс качества и размера для абсолютного большинства сценариев
- GGUF — стандарт для локального запуска, работает на CPU и GPU
- GPTQ и AWQ — для серверного деплоя с максимальной пропускной способностью
- 8 ГБ VRAM достаточно для запуска 7-8B моделей с комфортной скоростью
- Модель меньшего размера с мягким квантованием лучше большой модели с жёстким сжатием
Попробуйте прямо сейчас: установите Ollama и запустите ollama run qwen3:8b. Через пару минут у вас будет работающая языковая модель — полностью локальная, без подписок и без отправки данных в облако.
Источники
- LLM Quantization Methods: GPTQ, AWQ, GGUF — Cast AI
- Ollama VRAM Requirements: Complete 2026 Guide
- Как квантовать LLM. Практическое руководство — Хабр
- Сравнение различных схем квантования для LLM — Хабр
- Running Open Source LLMs Locally: Hardware Guide 2026
- Best Local LLM Models 2026 — SitePoint
- llama.cpp и квантование — LLM Studio