llama.cpp: новый PR разогнал Q2_0 квантизацию в 3 раза на обычных CPU — 8B модель с 2.4 до 8.2 tok/s
Открытый PR в llama.cpp добавляет VNNI-оптимизацию для Q2_0 квантизации, показывая 3–3.6x рост скорости на x86 CPU. На AMD EPYC 9645 8B модель в декоде разогналась с 2.39 до 8.20 tok/s, на Intel i5-13400 — с 2.17 до 6.92 tok/s. Работает на обычных десктопных процах (12–14 поколение Intel, Zen 4/5), где AVX-512 выключен, а AVX-VNNI есть.
Если вы запускаете LLM на CPU (ноутбук, сервер без GPU, edge), это может утроить скорость вашей модели. Или сэкономить деньги на аренде GPU, если задача позволяет юзать лёгкую квантизацию.
Что произошло
В llama.cpp появился PR #26348, добавляющий VNNI-инструкции (AVX-VNNI / AVX-512 VNNI) для матричных операций с Q2_0 квантизацией. В контролируемых тестах на AMD EPYC 9645 (8 ядер, CPU-only) и Intel i5-13400 прирост составил 3–3.6x по сравнению с дефолтной реализацией.
Результаты на EPYC 9645 (8 ядер, без GPU)
- 1.7B модель: декод 10.22 → 33.28 tok/s (3.26x), prompt eval 14.07 → 50.47 tok/s (3.59x)
- 8B модель: декод 2.39 → 8.20 tok/s (3.43x), prompt eval 2.82 → 10.26 tok/s (3.64x)
- 27B модель: декод 0.72 → 2.37 tok/s (3.32x)
На Intel i5-13400 (consumer CPU)
- 8B модель: декод 2.17 → 6.92 tok/s (~3.2x), prompt eval 2.7 → 8.6 tok/s
Раньше на 12–14 поколении Intel (Alder/Raptor Lake) Q2_0 работал через медленный fallback, потому что AVX-512 там вырезан производителем, а llama.cpp не умел использовать AVX-VNNI. PR исправляет это.
Детали
- Изменение касается только Q2_0 × Q8_0 ядра, не влияет на Q4/Q5/Q6
- Тесты — Bonsai модели с group-64 Q2_0 квантизацией, OpenMP включён, BLAS отключён
- Корректность: 14 000 рандомных проверок совпали побитово, в perplexity smoke test совпадение top token 99.2%
- PR ещё не в main ветке llama.cpp, можно собрать самому
Автор призывает протестировать на реальных ноутбуках и десктопах (Zen 4/5, Alder/Raptor Lake), чтобы проверить, как 3x выживает при ограничениях по памяти и питанию.
Автор: Анна Мельникова · Источник: reddit.com
Разработчикам. Готовая VNNI-оптимизация для Q2_0 в llama.cpp — можно форкнуть PR #26348, собрать и запустить на своём железе. Особенно актуально для 12-14 gen Intel и Zen 4/5, где AVX-512 недоступен. Если делаешь on-device inference — Q2_0 теперь реально юзабельна на CPU.
Бизнесу. Q2_0 квантизация становится практичной для серверного CPU-инференса: 27B модель с 0.72 до 2.37 tok/s — это разница между непригодным и рабочим продуктом. Можно снизить затраты на GPU, если модель влезает в RAM и задача не требует реал-тайм генерации.
Инвесторам. Рост CPU-инференса снижает зависимость от дорогого GPU железа и облачных провайдеров. Edge AI и on-prem решения получают boost. Следите за проектами вроде llama.cpp и Prism — open-source оптимизации двигают рынок edge inference сильнее, чем корпоративные релизы.
- Запускать 8B модели на дешёвых CPU серверах вместо аренды GPU — экономия на инфраструктуре для задач типа классификации, модерации, simple QA
- Делать on-device AI продукты для ноутбуков и десктопов (12-14 gen Intel, Zen 4/5) — сейчас Q2_0 перестал быть тормозом
- Портировать lightweight LLM-решения на edge устройства (industrial, IoT) с x86 CPU, где раньше скорость была неприемлемой
- Продавать оптимизированные дистрибутивы llama.cpp + готовые Q2_0 модели под конкретное железо для корпораций, которым нужен on-prem AI
- Делать benchmarking-сервис для тестирования разных квантизаций и CPU — спрос есть, данных мало
- PR ещё не в main ветке llama.cpp, может измениться или не влиться — рано строить на нём продакшн
- Прирост специфичен для Q2_0, которая жертвует качеством ради скорости — не универсальное решение, подходит не для всех задач
- Тесты на серверных EPYC и одном i5 — нет массовых данных с реальных ноутбуков, где memory bandwidth и thermal throttling могут съесть половину прироста
- Q2_0 всё ещё медленнее GPU даже после оптимизации — на задачах с реал-тайм генерацией CPU проиграет
Это типичная история open-source магии: один человек находит, что llama.cpp не использует VNNI на consumer Intel CPU, пишет 300 строк кода и получает 3x speedup. Не революция, но очень конкретная польза для тех, кто запускает модели на ноутбуках или дешёвых серверах без GPU. Q2_0 квантизация всегда была компромиссом качества ради скорости, теперь она перестала быть тормозом на CPU.
Главный вопрос — как это работает на реальном железе, а не на серверных EPYC с идеальным охлаждением. Если на обычном ноутбуке прирост хотя бы 2x, это меняет экономику on-device AI: можно делать продукты на CPU вместо облака или дорогих GPU. Но тесты нужны массовые, на разном железе. Пока PR не влит в main, строить на нём продакшн рано. Следите за обсуждением в llama.cpp — если комьюнити подтвердит результаты, это быстро станет дефолтом.
Комментарии