Квантование LLM на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

LLM в проде — почти всегда квантованные. На собесе DS / MLE: «как работает квантование», «отличие AWQ и GPTQ», «потеря качества».

Что такое квантование

LLM хранят миллионы / миллиарды параметров. По умолчанию — FP32 (4 byte) или FP16 (2 byte).

Квантование. Понизить bit-width для хранения и compute.

FP32: 4 bytes/param.   7B model = 28 GB.
FP16:  2 bytes/param.  7B model = 14 GB.
INT8:  1 byte/param.   7B model = 7 GB.
INT4:  0.5 bytes/param. 7B model = 3.5 GB.

Меньше памяти → можно запустить на дешёвом hardware, быстрее inference.

Trade-off: потеря точности модели. Хороший quantization — < 1% drop в perplexity / accuracy.

INT8 / INT4

INT8 quantization. Float → 8-bit integer.

quantize: q = round(x / scale) + zero_point
dequantize: x ≈ scale · (q - zero_point)

Per-tensor: одна scale на всю матрицу.

Per-channel: scale на каждую row/column. Лучше для качества.

Per-group: group_size элементов делят scale (group_size=128). Стандарт для INT4.

INT4 — экстремальное сжатие. Один scalar в 16 значениях. На больших моделях (7B+) почти без потери качества.

FP16 / BF16 / FP8 / FP4

FP16. Стандарт для inference. ~3 порядка точности.

BF16 (Brain Float). Тот же range, что FP32, но мантисса как FP16. Стабильнее на тренировке.

FP8 (E4M3, E5M2). В H100 / новых GPU — native FP8 compute. Быстрее FP16.

FP4 / NF4. Эксперимент 2024-2026. Поддерживается в Blackwell GPU.

NF4 (NormalFloat 4-bit). Распределение weights normal-like, NF4 кодирует под это — точнее, чем INT4.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

AWQ, GPTQ, GGUF

Methods для post-training quantization (без переобучения).

GPTQ (Frantar 2023). Layer-by-layer quantization. Минимизирует output reconstruction error на calibration set.

AWQ (Activation-aware Weight Quantization, Lin 2023). Заметили: некоторые weights важнее (соответствуют large activations). Защищаем их.

SmoothQuant. Migrates quantization difficulty from weights to activations.

GGUF / GGML. Format file (не алгоритм) для quantized моделей в llama.cpp. Включает Q4_K, Q5_K и др. — варианты с разной точностью.

AWQ vs GPTQ:

  • AWQ часто чуть лучше качество.
  • GPTQ — старший, больше tooling.
  • В практике используются оба.

Когда применять

Production inference — почти всегда минимум FP16, чаще INT8 / INT4.

Edge / mobile — INT4, GGUF.

Training — FP16 / BF16. Quantization during training — рисково.

LoRA + quantization (QLoRA). Fine-tune только адаптеры, base модель в INT4. Дёшево.

Частые ошибки

INT4 на маленькой модели (< 1B). Качество резко падает. Маленькие модели чувствительны.

Quantize всё подряд. Embedding layer / output head часто оставляют в FP16 — критичны.

Calibration set не похож на target domain. Quality drops. Calibration на репрезентативных данных.

Использовать quantized без проверки качества. Всегда benchmark на target tasks.

FP4 на старом GPU. Не support'ится — fallback на CPU, медленно.

Связанные темы

FAQ

Какое quality drop для INT4?

На 7B+ моделях обычно < 1% perplexity. На 1.3B — заметнее (5-10%).

Можно ли тренировать в INT4?

Прямо — нет. QLoRA — fine-tunes adapter в FP16, base в INT4. На pre-training экспериментально.

Это официальная информация?

Нет. Статья основана на работах GPTQ / AWQ / NF4 и tooling (llama.cpp, vLLM, TensorRT-LLM).


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.