Квантизация LLM: как запустить 70B модель на домашнем GPU

llmquantizationaihardware

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

GPU для inference

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

Квантизация — это снижение точности весов модели. Вместо 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_08.5~8 GB~75 GB~FP16
Q6_K6.6~6 GB~55 GBОтличное
Q5_K_M5.7~5 GB~48 GBОчень хорошее
Q4_K_M4.8~5 GB~43 GBХорошее
Q4_04.5~4 GB~40 GBПриемлемое
Q3_K_M3.9~4 GB~35 GBЗаметная деградация
Q2_K3.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
GPUVRAMМаксимальная модель
RTX 306012 GB8B Q4, 13B Q3
RTX 309024 GB13B Q8, 34B Q4, 70B Q2
RTX 409024 GBТо же, но быстрее
2× RTX 309048 GB70B Q4_K_M
A10080 GB70B 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 на задачах:

ЗадачаFP16Q8_0Q4_K_MQ2_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, и для большинства задач его более чем достаточно.

© 2026 Terminal Notes. Built with SvelteKit.