📖 Туториал21 мин10 февраля 2026 г.

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

Что такое квантизация: FP16, INT8, INT4, GGUF. Как квантизовать модель через llama.cpp, GPTQ, AWQ. Таблицы качество vs размер.

Llama 3.1 70B в полном формате (FP16) занимает 140 ГБ видеопамяти — это две видеокарты A100 80 ГБ стоимостью $30 000. Квантизация позволяет запустить ту же модель на одной RTX 4090 за 150 000 ₽ с потерей качества всего 1–3%. В этом гиде разберём, как это работает и как применить на практике.

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

Квантизация — это уменьшение точности числовых значений в нейросети. Каждый параметр (вес) модели хранится как число с плавающей точкой. Чем меньше бит на число — тем меньше занимает модель.

ФорматБит на параметрРазмер 7B моделиРазмер 70B моделиПотеря качества
FP32 (полный)3228 ГБ280 ГБ0% (эталон)
FP16 / BF161614 ГБ140 ГБ~0%
INT8 (Q8_0)87.5 ГБ75 ГБ0.1–0.5%
Q6_K6.55.5 ГБ55 ГБ0.2–0.8%
Q5_K_M5.55 ГБ48 ГБ0.5–1.5%
Q4_K_M4.84.5 ГБ40 ГБ1–2%
Q3_K_M3.93.5 ГБ33 ГБ2–5%
Q2_K2.62.5 ГБ25 ГБ5–15% (не рекомендуется)

Форматы квантизации

GGUF (llama.cpp)

Самый популярный формат для локального запуска. Создан проектом llama.cpp. Поддерживается Ollama, LM Studio, и напрямую llama.cpp.

Варианты GGUF-квантизации (от лучшего качества к наименьшему размеру):

  • Q8_0 — почти без потерь, но большой размер. Для тех, кому хватает VRAM.
  • Q6_K — отличный баланс. Рекомендуется, если помещается.
  • Q5_K_M — хороший компромисс. Минимальные потери для большинства задач.
  • Q4_K_M — «золотой стандарт». Оптимальный баланс качества и размера. Если не знаете, что выбрать — берите Q4_K_M.
  • Q3_K_M — для ситуаций, когда не хватает 2–3 ГБ. Заметная деградация на сложных задачах.
  • Q2_K — крайний случай. Качество падает значительно.

GPTQ

Метод квантизации, оптимизированный для GPU (NVIDIA). Работает через библиотеку AutoGPTQ. Быстрый inference, но менее гибкий, чем GGUF.

AWQ (Activation-Aware Weight Quantization)

Улучшенный GPTQ: учитывает важность каждого веса при квантизации. Обычно даёт лучшее качество при том же уровне сжатия.

Сравнение форматов

ФорматПлатформаCPUGPU NVIDIAGPU AMDApple Silicon
GGUFllama.cpp / OllamaДаДаДаДа (Metal)
GPTQAutoGPTQ / vLLMНетДа (CUDA)ЧастичноНет
AWQAutoAWQ / vLLMНетДа (CUDA)ЧастичноНет

Бенчмарки: качество vs размер

Тестирование Llama 3.2 8B на бенчмарке MMLU (5-shot):

КвантизацияРазмерMMLUПотеряСкорость (RTX 4090)
FP16 (эталон)16.1 ГБ73.055 tok/s
Q8_08.5 ГБ72.8-0.3%85 tok/s
Q6_K6.6 ГБ72.5-0.7%95 tok/s
Q5_K_M5.7 ГБ72.1-1.2%100 tok/s
Q4_K_M4.9 ГБ71.5-2.1%110 tok/s
Q3_K_M4.0 ГБ69.8-4.4%115 tok/s
Q2_K3.2 ГБ64.2-12.1%120 tok/s

Важное наблюдение: квантизация ускоряет inference! Меньше данных на загрузку из памяти → быстрее генерация. Q4_K_M на RTX 4090 генерирует на 100% быстрее, чем FP16.

Как квантизовать модель

Через llama.cpp (GGUF)

# 1. Клонируем llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
pip install -r requirements.txt

# 2. Скачиваем модель с Hugging Face
# (нужен huggingface-cli)
pip install huggingface_hub
huggingface-cli download meta-llama/Llama-3.2-8B   --local-dir models/llama-3.2-8b

# 3. Конвертируем в GGUF (FP16)
python convert_hf_to_gguf.py models/llama-3.2-8b   --outfile models/llama-3.2-8b-f16.gguf

# 4. Квантизуем
./build/bin/llama-quantize   models/llama-3.2-8b-f16.gguf   models/llama-3.2-8b-q4_k_m.gguf   Q4_K_M

# Другие варианты: Q8_0, Q6_K, Q5_K_M, Q3_K_M, Q2_K

Через AutoGPTQ (Python)

from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig

model_name = "meta-llama/Llama-3.2-8B"
output_dir = "./llama-3.2-8b-gptq-4bit"

tokenizer = AutoTokenizer.from_pretrained(model_name)
quantize_config = BaseQuantizeConfig(
    bits=4,
    group_size=128,
    desc_act=True,
)

model = AutoGPTQForCausalLM.from_pretrained(
    model_name, quantize_config=quantize_config
)

# Калибровочные данные (чем лучше — тем лучше результат)
examples = [
    tokenizer("Пример текста для калибровки модели...",
              return_tensors="pt")
    for _ in range(128)
]

model.quantize(examples)
model.save_quantized(output_dir)
tokenizer.save_pretrained(output_dir)

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

7B модель на 8 ГБ VRAM (RTX 3060/4060)

  • Оптимально: Q4_K_M (4.9 ГБ) — остаётся 3 ГБ на контекст
  • Максимальный контекст: Q3_K_M (4.0 ГБ) — больше места для KV-кэша
  • Рекомендация: Q4_K_M с контекстом 4096–8192 токенов

13B модель на 12 ГБ VRAM (RTX 3060 12 ГБ)

  • Оптимально: Q4_K_M (8 ГБ) — помещается с комфортом
  • Если нужен длинный контекст: Q3_K_M (6.5 ГБ)

70B модель на 24 ГБ VRAM (RTX 4090)

  • Q4_K_M (40 ГБ) — не помещается! Нужна частичная выгрузка на CPU
  • Q3_K_M (33 ГБ) — тоже не помещается полностью
  • Решение: частичная загрузка (GPU offloading) — 35 из 80 слоёв на GPU, остальное на CPU
# llama.cpp: частичная выгрузка (35 слоёв на GPU из 80)
./build/bin/llama-cli   -m models/llama-3.1-70b-q4_k_m.gguf   -ngl 35   -p "Ваш промпт"   -n 512

# Ollama: автоматически определяет, сколько слоёв помещается
ollama run llama3.1:70b-q4_K_M

Где скачать готовые квантизованные модели

Не обязательно квантизовать самому. На Hugging Face есть готовые GGUF-версии всех популярных моделей. Главный поставщик — TheBloke (для старых моделей) и bartowski (для новых).

# Скачать готовую модель
huggingface-cli download bartowski/Meta-Llama-3.1-70B-Instruct-GGUF   --include "Meta-Llama-3.1-70B-Instruct-Q4_K_M.gguf"   --local-dir models/

# Или через Ollama (скачает автоматически)
ollama pull llama3.1:70b

FAQ

Можно ли квантизовать без потерь?

Q8_0 (INT8) теряет менее 0.5% качества — практически неотличимо от оригинала. Для большинства задач Q4_K_M (потеря ~2%) тоже незаметна в реальном использовании.

Какую квантизацию выбрать по умолчанию?

Q4_K_M — лучший баланс. Если VRAM много — Q6_K. Если мало — Q3_K_M. Ниже Q3 не рекомендуется.

GGUF или GPTQ?

GGUF — если вы используете Ollama, LM Studio или llama.cpp (98% случаев). GPTQ/AWQ — если вы развёртываете через vLLM или TGI на NVIDIA-серверах.

Можно ли дообучить квантизованную модель?

Для fine-tuning обычно используют полную (FP16) модель, а квантизуют результат. Но QLoRA позволяет fine-tuning прямо на квантизованной модели — экономя 75% VRAM.

Понравилась статья?

Поделитесь с коллегами и друзьями

Читайте также

Хотите больше таких статей?

Подпишитесь на еженедельный дайджест — новые инструменты, промпты и гиды каждую неделю

Подписаться бесплатно
ещё 3
Сравнить (0)