Инференс и оптимизация
16 просмотров
AWQ
Activation-Aware Weight Quantization
AWQ (Activation-Aware Weight Quantization) — метод 4-bit квантизации LLM, который определяет «важные» веса по паттернам активаций и сохраняет их с более высокой точностью. Даёт лучшее качество, чем GPTQ.
Что такое AWQ
AWQ (Lin et al., 2023, MIT) — метод post-training квантизации, основанный на наблюдении, что не все веса одинаково важны. Малая доля весов (~1%) непропорционально влияет на качество модели, и их важность можно определить по активациям на калибровочных данных.
Принцип работы
- Прогнать калибровочные данные через модель
- Определить, какие каналы весов дают наибольшие активации
- Масштабировать «важные» каналы вверх перед квантизацией
- Квантизовать все веса в INT4
- Компенсировать масштабирование при инференсе
Результат: важные веса квантизуются с меньшей ошибкой.
Сравнение с GPTQ
| Параметр | GPTQ | AWQ |
|---|---|---|
| Метод | Оптимизация по Гессиану | Activation-aware scaling |
| Скорость квантизации | Медленнее | Быстрее |
| Качество (perplexity) | Хорошее | Чуть лучше |
| Скорость инференса | Быстрый | Быстрый |
| Поддержка vLLM | Да | Да |
Использование
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model = AutoAWQForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8B")
# Квантизация
model.quantize(tokenizer, quant_config={
"zero_point": True,
"q_group_size": 128,
"w_bit": 4,
})
# Сохранение
model.save_quantized("llama-3-8b-awq")
Рекомендация
Для production GPU-инференса AWQ — лучший выбор по соотношению качество/скорость. Для CPU-инференса используйте GGUF.
Связанные термины
Является частью