70B модель в fp16 весит 140 ГБ — не влезает на две RTX 3090. Квантизация LLM — единственный способ ужать до 35 ГБ с минимальной потерей качества. За 5 лет мы помогли более 100 проектам оптимизировать инференс, сократив затраты на оборудование до 75%.
Почему квантизация LLM критична для деплоя?
Нехватка VRAM — главная проблема при деплое больших языковых моделей. Модель 70B в fp16 не влезает в одну consumer GPU, а две RTX 3090 дают 48 ГБ — после квантизации до INT4 остаётся запас для пакетной обработки. Скорость инференса вырастает с 50 до 200+ tok/s, а стоимость аренды GPU (например, 8×A100) снижается в 4 раза — достаточно 2×L40. Экономия оборудования — ключевой драйвер: квантизация 70B модели до INT4 позволяет развернуть её на двух RTX 3090 вместо восьми A100, снижая капитальные затраты в 4 раза. Снижение расходов на аренду GPU при переходе с fp16 на INT4 составляет до 75% за счёт сокращения требуемого числа ускорителей.
Сравнение форматов квантизации
| Формат | Точность | Сжатие (vs fp16) | Качество | Применение |
|---|---|---|---|---|
| fp16 | 16-bit float | 1× | Baseline | GPU inference |
| INT8 (bitsandbytes) | 8-bit int | 2× | -0.5–1% | GPU, легко |
| GPTQ INT4 | 4-bit group-quant | 4× | -1–2% | GPU, production |
| AWQ INT4 | 4-bit activation-aware | 4× | -0.5–1.5% | GPU, лучше GPTQ |
| GGUF Q4_K_M | 4-bit mixed | 4× | -1–2% | CPU/GPU llama.cpp |
| GGUF Q8_0 | 8-bit | 2× | -0.3–0.5% | CPU/GPU llama.cpp |
| GGUF Q2_K | 2-bit | 8× | -5–10% | Крайний случай |
| EXL2 | 2–8 bit mixed | 2–8× | Configurable | GPU, ExLlamaV2 |
Каждый формат требует calibration dataset (128–512 примеров), репрезентативного для задач модели. Неправильный calibration ухудшает качество — мы подбираем его под проект.
Какой формат квантизации выбрать?
GPTQ: Post‑Training Quantization с коррекцией ошибок
GPTQ квантизирует послойно, минимизируя ошибку на небольшом calibration датасете:
from transformers import AutoModelForCausalLM, GPTQConfig gptq_config = GPTQConfig( bits=4, dataset="c4", desc_act=True, group_size=128, damp_percent=0.1, ) model = AutoModelForCausalLM.from_pretrained( "meta-llama/Meta-Llama-3.1-8B-Instruct", quantization_config=gptq_config, device_map="auto" ) model.save_pretrained("./llama3-8b-gptq-int4") Calibration занимает 30–120 минут на CPU или GPU. Как показано в GPTQ, этот метод обеспечивает качество, близкое к fp16, при 4-кратном сжатии.
AWQ: Activation‑Aware Weight Quantization
AWQ определяет «важные» веса по активациям и защищает их от агрессивной квантизации:
from awq import AutoAWQForCausalLM from transformers import AutoTokenizer model = AutoAWQForCausalLM.from_pretrained("meta-llama/Meta-Llama-3.1-8B-Instruct") tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3.1-8B-Instruct") quant_config = { "zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM" } model.quantize(tokenizer, quant_config=quant_config) model.save_quantized("./llama3-8b-awq") AWQ даёт прирост ~0.5–1% по perplexity на задачах reasoning по сравнению с GPTQ (см. AWQ).
GGUF: универсальный формат для llama.cpp
GGUF — формат для деплоя через llama.cpp, поддерживающий CPU-инференс и partial GPU offloading:
# Конвертация HuggingFace модели в GGUF python convert_hf_to_gguf.py \ --model meta-llama/Meta-Llama-3.1-8B-Instruct \ --outtype f16 \ --outfile llama3-8b-f16.gguf # Квантизация в Q4_K_M (рекомендуется) ./quantize llama3-8b-f16.gguf llama3-8b-q4km.gguf Q4_K_M Варианты квантизации GGUF (от лучшего качества к меньшему размеру):
- Q8_0: 8-bit, ~8.5GB для 8B модели, отличное качество
- Q6_K: 6-bit, ~6.1GB, высокое качество
- Q5_K_M: 5-bit mixed, ~5.1GB, хорошее качество
- Q4_K_M: 4-bit mixed, ~4.1GB, рекомендуется для большинства задач
- Q3_K_M: 3-bit, ~3.2GB, заметная деградация
Пошаговый алгоритм выбора формата
- Определите железо: какая GPU, сколько VRAM, допустим ли CPU-инференс.
- Замерьте baseline: latency и throughput на fp16/bf16.
- Выберите 2–3 кандидата: для NVIDIA GPU — AWQ и GPTQ; для CPU/гибрида — GGUF.
- Проведите квантизацию и протестируйте на ваших данных: perplexity, метрики задачи, latency P95.
- Сравните и выберите оптимум. Если разница незаметна — берите формат с лучшей поддержкой (AWQ или GGUF).
Практический пример: деплой на 2×RTX 3090
Задача: деплой fine-tuned Llama 3.1 8B на сервере с 2×RTX 3090 (48GB VRAM суммарно) для 50 concurrent users.
Требования: latency P95 < 3с, throughput > 100 tok/s.
| Формат | VRAM | Throughput (vLLM) | Latency P95 | Качество (оценка) |
|---|---|---|---|---|
| bf16 | 16 GB | 180 tok/s | 1.8с | 100% |
| AWQ INT4 | 5 GB | 280 tok/s | 1.2с | 98.5% |
| GPTQ INT4 | 5 GB | 260 tok/s | 1.3с | 98% |
| GGUF Q4_K_M | 4.1 GB (CPU) | 40 tok/s | 8с | 98% |
Выбор: AWQ INT4 — умещается в одну 3090 24GB с резервом, throughput 280 tok/s перекрывает требование, качество минимально деградирует.
Инференс квантизованной модели через vLLM
from vllm import LLM, SamplingParams # AWQ модель llm = LLM( model="./llama3-8b-awq", quantization="awq", dtype="auto", gpu_memory_utilization=0.85, ) # GPTQ модель llm = LLM( model="./llama3-8b-gptq-int4", quantization="gptq", dtype="auto", ) outputs = llm.generate(["Привет, как дела?"], SamplingParams(max_tokens=200)) Когда квантизация неэффективна?
Если модель уже работает с приемлемым временем ответа и не упирается в VRAM — квантизация избыточна. Также она не подходит для задач, где критична каждая десятая процента качества (medical, legal). В таких случаях оставляют fp16 или bf16, но жертвуют скоростью.
Что входит в работу и сроки
- Анализ модели и железа, подбор 2–3 форматов для теста
- Квантизация (GPTQ/AWQ/GGUF) с calibration на ваших данных
- Интеграция через vLLM, llama.cpp или Triton Inference Server
- Тестирование latency P50/P95/P99, throughput, качества (perplexity + метрики задачи)
- Документация по развёртыванию и эксплуатации
- Обучение команды работе с квантизованной моделью
Ориентировочные сроки:
- GPTQ/AWQ для 8B модели: 1–3 часа. Для 70B: 6–18 часов.
- GGUF конвертация: 15–60 минут.
- Тестирование и выбор формата: 1–3 дня.
- Итого: 2–5 дней под ключ.
Оценим ваш проект за 1 день — свяжитесь с нами, мы подберём оптимальный формат квантизации. Закажите аудит модели и получите рекомендацию по квантизации. Опыт — более 5 лет и 100+ успешных кейсов.







