Квантование LLM на собеседовании Data Scientist
Карьерник — 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.
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, медленно.
Связанные темы
- BERT vs GPT на собесе DS
- RAG на собесе DS
- RLHF DPO на собесе DS
- Transformer на собесе DS
- Подготовка к собесу Data Scientist
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+ вопросами для собесов.