В прошлой статье я собрал бенчмарк под свою работу, и в практике победила Gemma 4 31B — мгновенный отклик, дёшево, почти как у 744-миллиардного гиганта. Логичный следующий шаг: поднять её у себя в контуре и ответить на два вопроса, которые все задают и никто не меряет.
→ Нужен ли «честный» Q8, или хватает 4-бит? → Переживает ли нормально tool-calling квантизацию?
Спойлер: Q8 не дал ничего, а tool-calling держится — но не из-за кванта. Дальше — как разворачивал, на чём споткнулся, и цифры.
Железо и стек
Одна RTX 4090 на 48 ГБ (спот), llama.cpp, GGUF от Unsloth. Никакого vLLM/SGLang: для одного пользователя на одной карте llama.cpp сейчас — король, а их continuous batching и RadixAttention выстреливают только под конкурентной нагрузкой, которой у меня нет.
Квант: Q4-dynamic vs Q8
Ключевая деталь — это не наивный Q4. Unsloth Dynamic 4-bit (UD-Q4_K_XL) держит чувствительные слои в большей точности, а 4-бит уходит только туда, где это безопасно; по их KL-дивергенции это почти топ. Прогнал обе квантизации на тех же 50 задачах, тем же 3-судейным набором:
|
|
Q4-dynamic |
Q8 |
|---|---|---|
|
Балл |
0.735 |
0.742 |
|
Прошло задач |
45/50 |
42/50 |
|
Tool-calling |
1.00 |
1.00 |
|
tok/s |
39.8 |
25.4 |
|
VRAM |
27 ГБ |
40 ГБ |
Q8 дал +0.007 — это шум. В 1.6 раза медленнее, +13 ГБ видеопамяти (меньше места под контекст), и при этом Q4 прошёл задач даже больше. Прирост Q8 — микроскопический и только на доках/стратегии (+0.02–0.03). Все объективные задачи (код, SQL, инфра, tool-calling) — идентичны.
Вывод: на 48 ГБ можно запустить Q8 — но в моем случае не стоит. Dynamic-4bit = та же точность, вдвое меньше памяти, полный контекст, быстрее. «Честный Q8» здесь будет самообман.
Tool-calling: дело было не в кванте
Главный рычаг надёжности tool-calling оказался не в квантизации, а в одном флаге сервера: --jinja. Он включает родной chat-template модели, который и форматирует, и парсит вызовы инструментов. Без него tool-calling ломается хоть на Q4, хоть на Q8. С ним — 1.00 на обеих квантизациях.
То есть «4-бит ломает инструменты» — миф для Q4 без правильного шаблона. Dynamic-4bit + --jinja держит вызовы идеально.
Неожиданный бонус: локально — надёжнее, не только дешевле
Тот же бенчмарк через облачный API на 50 задачах развалился: 33% вызовов упали с APIConnectionError — прокси (или порт-форвард) не пережил длинный прогон. Локальные прогоны — ноль ошибок. Причина простая: при self-host кандидат отвечает напрямую, через прокси идут только судьи, то есть вдвое меньше точек отказа.
Суверенный деплой выигрывает не только в цене и задержке. Он выигрывает в воспроизводимости — а для бенчмарка это и есть всё.
Что в итоге запускать
→ Gemma 4 31B, Dynamic-4bit, llama.cpp + --jinja, на одной 48 ГБ карте. Мгновенный отклик (TTFT 0.39 с — быстрее облака), полностью в контуре, ноль внешних вызовов в рантайме. Это рабочая лошадь под ежедневный поток. → GLM-5.2 (744B) остаётся короной качества для самых тяжёлых решений — но это «отправь и жди» на чужих картах.
«Лучшая модель под мою работу» оказалась моделью, которую я держу на одной карте у себя — и которая на 4-битах отвечает не хуже, чем на 8.
ссылка на оригинал статьи https://habr.com/ru/articles/1051724/