Энтузиаст представил форк инференс-движка NInfer с опцией квантования KV-кэша rk2v4-e8. Она позволяет уместить до 250–350 тысяч токенов контекста в 24 ГБ VRAM одной RTX 4090 без выгрузки в системную память. На меньших контекстных окнах автор добился генерации 80–160 токенов/сек для повторяющихся задач, таких как код и математика. Релиз доступен на GitHub, но под экстремальными нагрузками решение может быть нестабильным.
Разбираем, как работает квантование KV-кэша, какие компромиссы между скоростью и качеством оно даёт и насколько это практично для продакшн-сценариев на потребительских GPU. В статье - расчёты памяти, принцип работы rk2v4-e8, тестовые цифры и сравнение с альтернативными подходами.
Что такое квантование KV-кэша и зачем оно нужно
KV-кэш хранит ключи и значения для каждого токена в контексте. При длинном контексте он разрастается быстрее, чем веса модели. Для 27B-модели на 100K токенов KV-кэш может занимать десятки гигабайт, а на 350K - превысить весь объём VRAM потребительской карты. Квантование снижает точность представления ключей и значений, уменьшая размер кэша в несколько раз.
Проблема памяти при длинном контексте
Возьмём Qwen 3.8 27B. При стандартном 16-битном KV-кэше каждый токен добавляет примерно 0,5–1 МБ в зависимости от числа слоёв и голов внимания. На 100K токенов это 50–100 ГБ, что уже не помещается в 24 ГБ RTX 4090. На 350K токенов потребуется 175–350 ГБ - в 7–14 раз больше доступной VRAM. Поэтому без сжатия длинный контекст на одной карте невозможен.
Выгрузка в системную память решает проблему объёма, но резко снижает скорость: обмен по PCIe становится узким местом. Квантование KV-кэша - альтернатива, которая удерживает данные в VRAM ценой точности.
Принцип квантования KV-кэша
Квантование переводит 16-битные значения ключей и значений в 8-битные или ещё более компактные форматы. Например, 8-битное квантование сокращает размер кэша вдвое. При этом часть информации теряется: модель получает менее точные представления прошлых токенов, что может влиять на качество генерации, особенно при сложных рассуждениях.
Опция rk2v4-e8 в форке NInfer использует специфическую схему квантования, заточенную под баланс между сжатием и сохранением полезного сигнала. Точные детали реализации автор не раскрывает полностью, но результат - возможность держать 250–350K токенов в 24 ГБ VRAM.
Форк NInfer и опция rk2v4-e8: что нового
NInfer - инференс-движок, который ранее засветился в тестах с RTX 5090 и моделями Qwen 3.6. Форк добавляет опцию квантования KV-кэша rk2v4-e8, которой нет в основной ветке. Это не просто патч: автор переработал работу с кэшем, чтобы квантованные ключи и значения обрабатывались нативно, без дополнительных накладных расходов на декодирование.
Ключевые особенности rk2v4-e8
Название указывает на вариант квантования с определённой битностью и структурой блоков. В отличие от простого 8-битного квантования, rk2v4-e8, судя по поведению, применяет групповую нормализацию и, возможно, адаптивное масштабирование. Это помогает сохранить качество при сильном сжатии. Практический эффект: на RTX 4090 контекст вырастает до 250–350K токенов без оффлоада.
Скорость также растёт. Меньший объём кэша означает меньше операций чтения и записи в VRAM, что критично для декодирования. На повторяющихся задачах, где паттерны предсказуемы, автор фиксирует 80–160 токенов/сек.
Совместимость с моделями и GPU
Форк ориентирован на Qwen 3.8 27B и RTX 4090 с 24 ГБ VRAM. Другие GPU с аналогичным объёмом памяти, например RTX 3090 или 4090 D, теоретически могут работать, но автор тестировал именно 4090. Модели с другой архитектурой внимания потребуют адаптации, поскольку схема квантования завязана на структуру KV-кэша конкретного семейства Qwen.
Практические результаты: контекст 350K и скорость генерации
Главный результат - 250–350K токенов контекста в VRAM 24 ГБ без выгрузки в системную память. Точное значение зависит от конфигурации. Визуальные токены, MTP-режим и другие параметры съедают часть памяти, уменьшая доступный контекст.
Влияние конфигурации на размер контекста
При отключённом MTP и без визуальных токенов доступен верхний предел около 350K. Включение Multi-Token Prediction требует дополнительной памяти под спекулятивные состояния, снижая контекст до 250–300K. Визуальные токены, если модель мультимодальная, также отнимают VRAM. Поэтому в рабочих сценариях стоит рассчитывать на нижнюю границу диапазона.
Скорость генерации в разных сценариях
80–160 токенов/сек достигнуты на меньших контекстных окнах для повторяющихся задач: генерация кода, математические выкладки, шаблонные тексты. Высокая скорость объясняется тем, что предсказуемые паттерны позволяют эффективнее использовать квантованный кэш и спекулятивные механики.
На максимальном контексте 350K скорость ниже. Автор не приводит точных цифр для этого режима, но отмечает возможные сбои. Для сравнения: оптимизация llama.cpp для Qwen 3.6 27B на RTX 5090 даёт 41 ток/с при контексте 262K, но это другая карта и другой движок.
Компромиссы: качество против скорости и памяти
Квантование KV-кэша всегда означает потерю части информации. Вопрос в том, насколько это влияет на практические задачи. Для кода и математики, где структура ответа часто предсказуема, потери минимальны. Для творческих текстов или сложных рассуждений на длинной дистанции деградация может быть заметнее.
Оценка потерь качества
Автор форка не публиковал систематических бенчмарков качества, таких как MMLU или HumanEval, для режима rk2v4-e8. Это ограничивает возможность точной оценки. Теоретически 8-битное квантование KV-кэша обычно сохраняет 95–99% качества на коротких и средних контекстах, но на 350K токенов накопленная ошибка может расти.
Похожий подход - техника KVarN для Bonsai-Ternary-27B - показал прирост скорости на 68% и сокращение VRAM на 3,3 ГБ при контексте 120K. Там потери качества были признаны приемлемыми для практических задач.
Когда квантование оправдано
Сценарии, где большой контекст важнее точности: обработка длинных документов, анализ больших кодовых баз, математические выкладки с длинной историей. Если задача требует удержания сотен тысяч токенов в памяти, альтернативы квантованию на одной потребительской карте практически нет.
Для коротких запросов и задач, где качество критично, лучше использовать полноразмерный KV-кэш. Потери от квантования там не компенсируются выигрышем в контексте.
Стабильность и готовность к продакшену
Автор прямо указывает: решение может быть нестабильным под экстремальными нагрузками. Он просит сообщать о рантайм-ошибках. Это сигнал, что форк находится на ранней стадии и требует осторожности при использовании в рабочих проектах.
Известные ограничения и риски
Возможные сбои при максимальном контексте 350K, ошибки в определённых конфигурациях с MTP или визуальными токенами. Квантованный кэш может вести себя непредсказуемо на нестандартных входных данных. Для продакшена это означает необходимость резервного плана: мониторинг ошибок, возможность быстрого отката на стандартный режим.
Рекомендации по тестированию
Начните с малого контекста - 10–20K токенов. Проверьте качество на типовых задачах. Постепенно увеличивайте контекст, фиксируя скорость и ошибки. На 100K, 200K и 350K прогоняйте стресс-тесты с разными типами входных данных. Только после этого принимайте решение о внедрении.
Сравнение с альтернативными подходами
Квантование KV-кэша - один из нескольких способов увеличить контекст на потребительском GPU. Сравним с основными альтернативами.
Выгрузка в системную память
Классический подход: держать часть KV-кэша в RAM, подгружая по мере необходимости. Плюс - неограниченный контекст в теории. Минус - скорость упирается в пропускную способность PCIe. На практике это 5–20 токенов/сек на длинных контекстах, что на порядок медленнее rk2v4-e8.
Форк NInfer выигрывает тем, что удерживает весь кэш в VRAM. Это принципиально другая латентность и пропускная способность.
Другие методы оптимизации
Flash Attention сокращает пиковое потребление памяти при вычислении внимания, но не уменьшает сам KV-кэш. Сжатие контекста через суммаризацию или отбор релевантных токенов теряет информацию. МногоGPU-конфигурации, как в сборке на 4× RTX 3080 20 ГБ, дают полный KV-кэш и 69 токенов/сек на 256K контексте, но требуют вложений около $2000 и отдельной платформы.
rk2v4-e8 занимает нишу: одна карта, максимальный контекст, приемлемая скорость, но с рисками для качества и стабильности.
Установка и использование форка NInfer
Для воспроизведения потребуется RTX 4090 или аналогичная карта с 24 ГБ VRAM, установленные CUDA и Python, а также зависимости проекта. Релиз доступен на GitHub, ссылку автор публиковал в описании релиза.
Требования и подготовка
Убедитесь, что драйвер NVIDIA поддерживает вашу версию CUDA. Для NInfer обычно требуется свежий тулкит и библиотеки для инференса. Модель Qwen 3.8 27B нужно скачать в подходящем формате. Точные версии зависимостей указаны в README репозитория.
Пример конфигурации для 350K контекста
Автор не публиковал полный конфиг для максимального контекста, но общая логика такая: отключить MTP, убрать визуальные токены, включить опцию rk2v4-e8 и задать размер контекста в пределах 250–350K. Пример команды запуска:
python -m ninfer --model qwen3.8-27b --kv-quant rk2v4-e8 --context 350000 --gpu 0
Параметры могут отличаться в зависимости от сборки. Сверяйтесь с документацией форка.
Заключение: перспективы и ограничения
Форк NInfer с rk2v4-e8 показывает, что 350K токенов на одной RTX 4090 - достижимая цель. Квантование KV-кэша снимает главное ограничение потребительских GPU для длинноконтекстных задач. Скорость 80–160 токенов/сек на повторяющихся сценариях делает решение пригодным для кода и математики.
Ограничения тоже ясны: нестабильность на экстремальных нагрузках, отсутствие систематических бенчмарков качества, привязка к Qwen 3.8 27B. Для продакшена это пока экспериментальный инструмент, который требует тщательного тестирования. Но направление перспективное: если автор стабилизирует работу и подтвердит качество на длинных контекстах, подобные техники могут стать стандартом для локального инференса.