Квантизация LLM: как запустить 70B модель на домашнем GPU
70-миллиардная модель в полной точности требует ~140 GB видеопамяти. Квантизация позволяет запустить её на обычном GPU с 24 GB. Разберёмся, как это работает и что теряем.

Что такое квантизация
Квантизация — это снижение точности весов модели. Вместо 16-битных float используем 8, 4 или даже 2 бита на вес.
FP16: каждый вес = 16 бит → 70B × 2 байта = 140 GB
Q8: каждый вес = 8 бит → 70B × 1 байт = ~70 GB
Q4: каждый вес = 4 бита → 70B × 0.5 б = ~40 GB
Q2: каждый вес = 2 бита → 70B × 0.25 б = ~20 GB Форматы квантизации
GGUF (llama.cpp)
Самый популярный формат для CPU и CPU+GPU inference. Используется в Ollama, LM Studio, llama.cpp.
Варианты по качеству (от лучшего к худшему):
| Квант | Бит/вес | RAM (7B) | RAM (70B) | Качество |
|---|---|---|---|---|
| Q8_0 | 8.5 | ~8 GB | ~75 GB | ~FP16 |
| Q6_K | 6.6 | ~6 GB | ~55 GB | Отличное |
| Q5_K_M | 5.7 | ~5 GB | ~48 GB | Очень хорошее |
| Q4_K_M | 4.8 | ~5 GB | ~43 GB | Хорошее |
| Q4_0 | 4.5 | ~4 GB | ~40 GB | Приемлемое |
| Q3_K_M | 3.9 | ~4 GB | ~35 GB | Заметная деградация |
| Q2_K | 3.3 | ~3 GB | ~28 GB | Значительная деградация |
Рекомендация: Q4_K_M — лучший баланс размер/качество для большинства задач.
GPTQ
GPU-only формат. Быстрее GGUF на GPU, но не работает на CPU:
# Использование с vLLM
pip install vllm
vllm serve TheBloke/Llama-2-70B-GPTQ --quantization gptq AWQ (Activation-aware Weight Quantization)
Новее GPTQ, сохраняет «важные» веса в более высокой точности:
# Использование с vLLM
vllm serve TheBloke/Llama-2-70B-AWQ --quantization awq Практика: Ollama и GGUF
Ollama скачивает уже квантизированные модели:
# Q4_K_M по умолчанию (оптимальный баланс)
ollama pull llama3.1:8b
# Явно указать квантизацию
ollama pull llama3.1:8b-instruct-q8_0 # максимальное качество
ollama pull llama3.1:8b-instruct-q4_0 # минимальный размер
ollama pull llama3.1:70b-instruct-q4_K_M # 70B на 48GB VRAM Проверяем размер:
ollama list
# NAME SIZE
# llama3.1:8b 4.7 GB
# llama3.1:8b-q8_0 8.0 GB
# llama3.1:70b-q4_K_M 40.0 GB 
Сколько VRAM нужно
Формула: VRAM ≈ размер модели + ~1-2 GB overhead + контекст
Контекст занимает дополнительную память — KV-cache:
- 4K контекст: +0.5–1 GB
- 32K контекст: +4–8 GB
- 128K контекст: +16–32 GB
| GPU | VRAM | Максимальная модель |
|---|---|---|
| RTX 3060 | 12 GB | 8B Q4, 13B Q3 |
| RTX 3090 | 24 GB | 13B Q8, 34B Q4, 70B Q2 |
| RTX 4090 | 24 GB | То же, но быстрее |
| 2× RTX 3090 | 48 GB | 70B Q4_K_M |
| A100 | 80 GB | 70B Q8, 120B Q4 |
CPU-inference: когда GPU нет
llama.cpp (и Ollama) могут работать на CPU. Медленнее в 5-10 раз, но работает:
# Ollama автоматически использует CPU, если нет GPU
ollama run llama3.1:8b Для CPU важны:
- RAM: модель загружается в оперативную память
- Количество ядер: больше потоков = быстрее
- AVX2/AVX-512: SIMD-инструкции для матричных операций
На Intel i7-12700 с DDR5: ~15 tokens/sec для 8B Q4. Работать можно, но стриминг видео не посмотришь.
Качество после квантизации
Тестировал Llama 3.1 8B на задачах:
| Задача | FP16 | Q8_0 | Q4_K_M | Q2_K |
|---|---|---|---|---|
| Суммаризация текста | Отлично | Отлично | Хорошо | Средне |
| Код на Python | Отлично | Отлично | Хорошо | Плохо |
| Русский язык | Хорошо | Хорошо | Приемлемо | Плохо |
| Математика | Хорошо | Хорошо | Средне | Очень плохо |
Вывод: Q4_K_M — потери минимальны для текстовых задач. Q2 ломает модель на сложных задачах.
Итого
- Для домашнего использования: Q4_K_M через Ollama
- Для продакшена на GPU: AWQ через vLLM
- Для максимального качества: Q8_0 или FP16, если VRAM позволяет
- CPU-inference работает, но только для небольших моделей (8-13B)
Начните с ollama pull llama3.1:8b — это Q4_K_M, и для большинства задач его более чем достаточно.