Инференс и оптимизация
22 просмотра
GPTQ
GPTQ (GPT Quantization)
GPTQ — метод post-training квантизации LLM до 4/3/2 бит, основанный на поэлементной оптимизации с минимизацией ошибки. Один из самых популярных методов сжатия моделей для GPU-инференса.
Содержание
Что такое GPTQ
GPTQ (Frantar et al., 2022) — метод post-training quantization, основанный на алгоритме Optimal Brain Quantization. Квантизует каждый вес, минимизируя ошибку с учётом корреляций между весами в слое.
Принцип работы
- Берётся калибровочный датасет (128-256 примеров)
- Для каждого слоя вычисляется матрица Гессиана (H = X^T × X)
- Веса квантизуются поэлементно с компенсацией ошибки на соседние веса
- Процесс занимает ~4 часа для 70B модели на 1 GPU
Форматы
| Битность | Размер 7B | Размер 70B | Качество |
|---|---|---|---|
| 8-bit | 7 GB | 70 GB | ~FP16 |
| 4-bit | 3.5 GB | 35 GB | Хорошее |
| 3-bit | 2.6 GB | 26 GB | Заметная потеря |
| 2-bit | 1.75 GB | 17.5 GB | Значительная потеря |
Использование
from transformers import AutoModelForCausalLM, GPTQConfig
quantization_config = GPTQConfig(
bits=4,
dataset="c4",
group_size=128, # квантизация группами по 128 весов
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3-70B",
quantization_config=quantization_config,
device_map="auto",
)
GPTQ vs AWQ
AWQ (Activation-Aware Weight Quantization) — более новый метод, который сохраняет «важные» веса в более высокой точности, определяя важность по активациям. Обычно AWQ даёт чуть лучшее качество при той же битности.
Оба метода поддерживаются в vLLM, TGI и transformers.
Связанные термины
Является частью