Квантизация в 4 бита без боли: чем Q4_K_M отличается от AWQ
Когда модель перестаёт влезать в память, первое, что предлагают, — «сожми в 4 бита». За этим советом скрываются как минимум три разные схемы, и разница между ними больше, чем между 4 и 8 битами.
Три схемы, которые обычно путают
- GPTQ — послойная квантизация по калибровочному набору, веса пересчитываются с учётом ошибки предыдущих слоёв.
- AWQ — ищет каналы, важные для активаций, и защищает их от огрубления; на практике лучше держит длинный контекст.
- GGUF-семейство (Q4_K_M и соседи) — блочная квантизация с разной разрядностью для разных тензоров; отсюда и суффиксы в имени файла.
Что я мерил
Одна и та же модель на 8B, три прогона по 200 задач: короткий ответ, длинный контекст и код. Смотрел не только на попадание в ответ, но и на то, как часто модель начинает «плыть» — повторяться или терять формат.
| Схема | Память | Ток/с | Повторы |
|---|---|---|---|
| bf16 | 16.1 ГБ | 42 | 0.4% |
| Q4_K_M | 5.2 ГБ | 71 | 1.1% |
| AWQ 4 бита | 5.4 ГБ | 88 | 0.7% |
Разница в качестве между Q4_K_M и AWQ на коротких задачах утонула в шуме: обе схемы теряли примерно одинаково. Расхождение начинается на длинном контексте — там AWQ заметно реже срывается в повторы.
Практический вывод
Если модель нужна для диалога с большим контекстом, берите AWQ и не экономьте на калибровке. Если это разовый локальный запуск «посмотреть», GGUF удобнее: один файл, понятные суффиксы, работает везде. И главное: перед квантизацией соберите свой набор задач — он у вас всё равно будет лучше любого усреднённого бенчмарка.