Binary KV cache: экономия 67% VRAM и мгновенное восстановление контекста | AiManual
AiManual Logo Ai / Manual.
08 Янв 2026 Инструмент

Binary KV cache: как сохранить 67% VRAM и ускорить восстановление контекста в локальных LLM

Обзор Binary KV cache для локальных LLM: как инструмент экономит видеопамять и ускоряет восстановление сессий через бинарное сохранение контекста.

KV cache снова в игре. На этот раз — с бинарным сохранением

Представьте, что вы час беседовали с моделью Llama 70B. Обсудили проект, набросали план, проанализировали код. Потом закрыли терминал. А утром всё начинается заново. Контекст потерян. История — ноль. Модель снова нужно "прогревать". Знакомо?

Именно эту проблему решает Binary KV cache. Не очередное квантование весов. Не магия сжатия. А радикально простой подход: сохраняем вычисленный контекст (тот самый KV cache) в бинарный файл. Загружаем его обратно — мгновенно. Без пересчёта. Без потерь.

KV cache — это промежуточные вычисления, которые модель хранит в памяти во время генерации. Без него каждый новый токен требовал бы пересчёта всей истории, что убило бы производительность. Binary KV cache сохраняет эти вычисления на диск в бинарном формате.

Как работает этот инструмент и почему он быстрее альтернатив

В основе — интеграция с llama.cpp. Инструмент модифицирует процесс инференса: после завершения сессии KV cache не уничтожается, а сериализуется в компактный бинарник. При следующем запуске — десериализуется обратно в VRAM.

💡
Технически, это не "сжатие" в классическом смысле. Это потерянная сериализация данных FP16/FP32 в их нативное бинарное представление. Никакого повторного квантования — точность остаётся исходной.

Что было до этого? Сравниваем подходы

Раньше для сохранения контекста использовали:

  • Полный перезапуск — самый простой и самый медленный способ. Теряли всё.
  • Сохранение истории в текстовом виде — модель перечитывает весь диалог, пересчитывая KV cache с нуля. На 10к токенах это минуты ожидания.
  • Квантование KV cache (как в Q8 для vision-моделей) — экономит память, но требует пересчёта при загрузке и теряет точность.
Метод Экономия VRAM Время восстановления Точность
Binary KV cache 67% (сохранение на диск) Мгновенно (загрузка с SSD) Полная (без потерь)
Q8 KV cache 50% Требуется пересчёт Потери 1-3%
Текстовое сохранение 100% (ничего не хранится) Медленно (пересчёт всего) Полная

Цифры, которые заставляют задуматься

Возьмём Llama 3 70B с контекстом 32к токенов. KV cache в FP16 занимает примерно:

  • 16 ГБ VRAM — только для кэша. Плюс сами веса модели.
  • Binary файл на диске: 5.3 ГБ (сжатие через эффективную упаковку структур).
  • Экономия VRAM: 10.7 ГБ освобождается сразу после сохранения.
  • Время загрузки с NVMe: 2-3 секунды против 40+ секунд пересчёта.

Не путайте с освобождением памяти во время работы! Binary KV cache сохраняет контекст ПОСЛЕ сессии, чтобы не вычислять его заново в следующий раз. Во время работы модели кэш всё ещё живёт в VRAM.

Где это работает уже сейчас

Интеграция с llama.cpp означает поддержку всей экосистемы:

  • Llama 2/3 всех размеров
  • Mistral, Mixtral, Gemma
  • Qwen, Phi-3
  • Любые модели в формате GGUF

Для vision-моделей типа Qwen3VL тоже работает, но там есть нюансы с патчами изображений. (Если интересно — читайте отдельный разбор по vision).

Как выглядит использование на практике

1 Установка и компиляция

Клонируете форк llama.cpp с поддержкой binary KV. Компилируете с флагами для CUDA (если есть GPU) или Metal для Mac. Никаких Python-зависимостей — чистый C++.

2 Первая сессия с сохранением

Запускаете модель как обычно, но добавляете флаг --save-kv-cache. После завершения диалога инструмент сохранит бинарник в указанную директорию.

3 Восстановление контекста

При следующем запуске указываете --load-kv-cache с путём к файлу. Модель загружает кэш в VRAM и сразу готова продолжать диалог с того же места.

💡
Файлы кэша привязаны к конкретной модели и точной версии её весов. Не пытайтесь загрузить кэш от Llama 3 70B в Llama 3 8B — не сработает. Архитектура должна совпадать бит в бит.

Кому этот инструмент нужен прямо сейчас

Не всем. Если вы запускаете модель раз в неделю на 100 токенов — не тратьте время.

А вот если:

  • Работаете с длинными документами — юридические тексты, кодовая база, исследования. Контекст в 100к токенов пересчитывать каждый раз — издевательство.
  • Разрабатываете AI-агентов с долгоживущей памятью. Как в BuddAI, но без постоянной нагрузки на VRAM.
  • Исследуете модели с ограниченным VRAM — например, пытаетесь впихнуть 70B в 10 ГБ видеопамяти. Освобождение кэша между сессиями критично.
  • Тестируете разные промпты на одном контексте — сохранили вычисленный документ, быстро проверяете гипотезы.

Подводные камни и ограничения

Идеальных решений не бывает. Вот что раздражает в текущей реализации:

  • Размер файлов — 5+ ГБ на дискете это много. Хотя дешевле, чем апгрейд VRAM.
  • Нет инкрементального сохранения — нельзя добавить 100 токенов к существующему кэшу. Только перезаписать целиком.
  • Зависимость от llama.cpp — не работает с Ollama, vLLM, Text Generation WebUI напрямую.
  • Ручное управление файлами — сами решаете, когда сохранять, когда удалять.

Что будет дальше? Прогноз от практика

Binary KV cache — промежуточное решение. Настоящий прорыв случится, когда появятся:

  1. Гибридный подход — кэш живёт частично в RAM (системная память), частично на SSD, с прозрачной подгрузкой. Как в играх.
  2. Стандартизация формата — чтобы кэш от одной версии модели работал с другой (с конвертацией).
  3. Интеграция в популярные обёртки — представьте флаг --persist-context в Ollama.

Пока же binary KV cache — самый быстрый способ сохранить и восстановить гигантский контекст без потерь. Грубо, эффективно, работает.

Если вы уже сталкивались с проблемами долговременной памяти в LLM — попробуйте этот инструмент. Он не решит все проблемы, но хотя бы избавит от ежеминутного пересчёта одних и тех же токенов.

А если у вас есть лишние 10 ГБ VRAM — можете продолжать игнорировать. Пока не закончатся.