Кэш, который съедает всю память
Запускаешь Llama 70B, смотришь на потребление памяти, и кажется, что модель тайно майнит крипту. Основной пожиратель – не веса модели (их уже давно квантуют до 4 бит), а KV-кеш. Для каждого токена в контексте нужно хранить ключи и значения. На длинных диалогах это выливается в гигабайты. Прямо как в статье Конец эпохи квадратичной сложности, только здесь проблема не в вычислениях, а в чистой памяти.
Delta-KV – это не новый формат квантования весов. Это метод сжатия самого KV-кеша во время инференса, основанный на старой доброй идее из видеокодеков: хранить не полные значения, а разницы (дельты) между последовательными токенами.
Как работает магия дельт? Секрет прост
Вместо того чтобы хранить ключи и значения для всех 32 тысяч токенов в fp16 (занимая 2 байта на параметр), Delta-KV кодирует их в 4 бита. Как? Алгоритм считает, что векторы ключей и значений между соседними токенами меняются не сильно. Поэтому можно сохранить одно полное значение (например, для каждого 16-го токена), а для остальных – только небольшую дельту, упакованную в 4 бита.
На практике это выглядит так: для Llama 3 70B (самой актуальной 70-миллиардной модели на март 2026) KV-кеш для контекста в 32K токенов сокращается с ~40 ГБ до ~5 ГБ. Почти в 8 раз. И самое главное – падение точности на стандартных бенчмарках (MMLU, Hellaswag) составляет менее 1%. Для большинства задач это неотличимо.
Что под капотом у реализации в llama.cpp?
Интеграция в основную ветку llama.cpp появилась в конце 2025 года. Сейчас (март 2026) это стабильная фича в последней версии. Работает с большинством архитектур: Llama 2, Llama 3, Qwen 3.5, и даже с экспериментальными 1-битными моделями, про которые мы писали в обзоре 1-битного квантования.
| Параметр | Без Delta-KV (fp16) | С Delta-KV (4-bit) | Экономия |
|---|---|---|---|
| Память KV-кеша (32K контекст) | ~40 ГБ | ~5 ГБ | 87.5% |
| Скорость инференса (токен/с) | Базовая | -5-10% | Незначительное падение |
| Точность (MMLU) | 75.2% | 74.8% | -0.4% |
Запускаем за минуту: флаг --kv-quant-delta
Всё сводится к одному дополнительному флагу в командной строке. Никаких пересборок, если у вас свежая версия llama.cpp (от января 2026 или новее).
./main -m models/llama-3-70b-instruct-q4_k_m.gguf \
--prompt "Расскажи квантовую теорию поля для чайников" \
--ctx-size 32768 \
--kv-quant-delta 4
Флаг --kv-quant-delta 4 включает сжатие до 4 бит. Есть также режимы 6 и 8 бит для параноиков, которые боятся любых потерь. Но разница в качестве между 4 и 8 битами – доли процента.
С чем сравнить? Альтернативы либо медленные, либо грубые
- nano-KvLLM: Метод из статьи nano-KvLLM тоже сжимает кэш, но использует другую технику – кластеризацию. Даёт похожую экономию памяти, но на 10-15% медленнее из-за overhead на кластеризацию во время генерации.
- Полное квантование KV-кеша в bf16/fp16: Это стандартная опция в llama.cpp (--kv-type bf16). Экономии памяти почти нет, но это критично для точности некоторых моделей, как писали про Qwen 3.5. Delta-KV не заменяет этот режим, а дополняет: можно использовать bf16 кэш, но сжать его дельта-квантованием.
- Аппаратный апгрейд: Купить ещё оперативки или видеопамяти. Самый простой способ, но не для всех бюджетный. Delta-KV позволяет вписаться в те самые 64 ГБ ОЗУ и 16 ГБ видеопамяти для Llama 70B с длинным контекстом.
Кому обязательно попробовать? Трем типам пользователей
- Владельцы слабого железа, которые мучаются с сборкой llama.cpp не для всех. Если у вас 32-64 ГБ ОЗУ и вы хотите длинные контексты на 70B моделях – это ваш выбор.
- Разработчики coding agents, которые сталкиваются с проблемой, описанной в статье про 'глупеющих' агентов. Деградация качества на длинных контекстах минимальна, поэтому код останется вменяемым.
- Энтузиасты CPU-only инференса, которые следуют руководству по CPU-only оптимизации. Сжатие кэша радикально снижает давление на оперативную память и своп.
Предупреждение: Delta-KV добавляет небольшую вычислительную нагрузку на кодирование/декодирование дельт. На очень старых CPU (до 2020 года) падение скорости может быть заметным – до 15%. На современных процессорах (Intel 13-го поколения, AMD Ryzen 7000 и новее) overhead менее 5%.
Что в итоге? Прорыв, который уже здесь
Delta-KV – не теоретическая статья, а готовая фича в llama.cpp. Она решает конкретную боль: позволяет засунуть Llama 70B с контекстом в 32K токена в 64 ГБ ОЗУ, оставив место для системы и других программ. Качество почти не страдает. Скорость почти не падает.
Это шаг к тому, чтобы большие модели стали по-настоящему доступными на потребительском железе. Следующий рубеж – 200B модели на домашних ПК. Но это уже история на 2027 год.
P.S. Если после включения Delta-KV модель начала выдавать странные ответы на очень длинных контекстах (более 100K токенов), проверьте, не упираетесь ли вы в лимиты оптимальной сборки для слабого железа. Иногда проблема не в кэше, а в том, что процессор просто не успевает.