инструменты 1 мин

BeeLlama.cpp v0.4.1: новые способы сжатия KV-кэша для LLM без потери точности

Вышла версия форка llama.cpp с улучшенными алгоритмами квантизации KV-кэша: KVarN (нормализация по дисперсии), precision tail (хранение последних токенов в высоком качестве) и дополнительные типы сжатия q2_0-q6_1. Бенчмарки показывают, что хранение последних 1024 токенов в полной точности позволяет kvarn5 и q6_0 достичь качества q8_0 при меньшем расходе видеопамяти.

Позволяет запускать большие модели с длинными контекстами на видеокартах с меньшим объёмом памяти без потери качества на ключевых участках диалога. Особенно важно для инференса сложных задач (код, данные, многоступенчатые рассуждения).

Что изменилось

Вышла версия 0.4.1 форка llama.cpp под названием BeeLlama, которая расширяет возможности квантизации KV-кэша — механизма хранения промежуточных вычислений языковых моделей.

KVarN — метод квантизации с нормализацией по дисперсии, описанный в научной статье. В отличие от версии 0.3.2, теперь он работает без провалов производительности и скачков потребления VRAM, сохраняя высокую точность на меньшем количестве бит.

Precision tail (хвост точности) — новая фича, которая позволяет хранить последние N токенов в оригинальной точности (BF16/F16), а остальную часть кэша — в сжатом виде. Это помогает модели лучше «помнить» детали задачи, код или свежие данные из промпта.

Дополнительные типы квантизации: q6_0 и q6_1 занимают промежуточное положение между q5 и q8, а q2_0-q3_1 заменяют старые turbo2/3 для экстремальной экономии памяти.

Бенчмарки

Тесты на модели Qwen 3.6 27B показывают: комбинация kvarn5 с хвостом в 1024 токена даёт точность на уровне q8_0, но занимает на 30% меньше VRAM (1488 МБ против 2176 МБ).

Аналогично q6_0 с хвостом 1024 обеспечивает 100% точности q8_0 при экономии ~20% памяти.

Для кого

Решение актуально для тех, кто запускает большие модели на ограниченном железе: позволяет уместить длинные контексты (до 64k токенов) без деградации качества на критичных участках диалога.

Ключевые выводы

  • Precision tail — новая парадигма mixed-precision для KV-кэша: храним последние токены в полной точности, остальное сжимаем
  • Комбинация kvarn5 + tail 1024 даёт точность q8_0 при экономии 30% видеопамяти
  • Добавлены типы q6_0/q6_1 для тонкой настройки баланса точность/VRAM между q5 и q8
  • Для архитектур с SWA (Gemma, GPT-OSS) mixed precision работает менее эффективно из-за конфликта с ring-структурой
  • q2_0-q3_1 заменяют старые turbo-типы для случаев экстремальной экономии памяти

Автор: Павел Заславский · Источник: reddit.com

Мнение редакции

Классная инженерная работа — **precision tail** выглядит как элегантное решение проблемы «контекст длинный, но память кончается». Идея простая: зачем хранить в полной точности то, что модель прочитала 50 тысяч токенов назад? Держи последние 1-2 тысячи в HD, остальное — в сжатом виде.

В бенчмарках цифры убедительные: kvarn5 с хвостом 1024 даёт качество q8_0 при экономии трети VRAM. Но есть нюанс — для архитектур типа Gemma это работает хуже из-за SWA ring. В целом, если вы фанат llama.cpp и боретесь за каждый мегабайт на 24GB карте — стоит попробовать. Только не забывайте, что это форк, а не апстрим, поэтому актуальность фич относительно основной ветки нужно проверять.

Ещё по теме

Комментарии