Repository navigation
FAQ.ru
Это заменяет prefix cache vLLM? Нет — это добавляет долговечный слой под ним. Prefix caching в памяти остаётся включённым; постоянный уровень наполняет его после перезагрузок.
Выиграют ли два разных разговора сразу? Да, если у них общий стабильный токенизированный префикс (общее системное сообщение и определения инструментов): идентичные чанки хранятся один раз и используются обоими. Динамические значения (временные метки, id запросов) ломают префиксы — см. Устранение неполадок.
Делят ли разные модели KV-блоки? Никогда: пространства включают id модели, ревизию, токенизатор, dtype и геометрию. «Модельно-агностичный» значит, что механизм работает для разных конфигураций — их KV-данные не взаимозаменяемы.
Кэш переживает перезагрузку хоста?
Файлы данных на общем диске ВМ остаются. После загрузки сначала поднимите сервис кэша
(start-cache.sh), затем vLLM — пересборка индекса ленивая и автоматическая.
Нужно ли что-то менять в чат-клиенте?
Нет. Интеграция целиком на стороне vLLM; ваш чат-клиент работает с тем же эндпоинтом
/v1/chat/completions, что и раньше.
Что происходит, когда диск заполняется? Записи сверх жёсткого бюджета отклоняются; обслуживание продолжается корректно без новых записей в кэш. Эвикция на мягком пороге (90 %) обычно предотвращает это.
Мой текст промпта теперь на диске? Не как текст — но KV-данные выводятся из промптов и им соответствует тот же уровень чувствительности (chmod 700, управление только loopback; см. Безопасность).
KV на диске сжат lossy-методом? Нет. Уровень L2 работает только lossless: чанки хранятся байт-в-байт (дефолт) или со lossless-сжатием zstd/lz4 (оценка 1.1–1.4x). Lossy-квантизация (fp8 / turboquant / lbq) отвергается при старте. Каждый фрейм несёт CRC32: битый фрейм трактуется как промах кэша, никогда не возвращается как неверный KV.
Нужны ли пакеты сжатия, если я не сжимаю?
Нет. Кэшу LMCACHE_L2_SERDE=none (дефолт) пакеты сжатия не нужны вообще.
zstd требует только zstandard, lz4 — только lz4: проверка до старта
требует ровно выбранный кодек, никогда неиспользуемый.
Можно смотреть это в Grafana?
Да — bash scripts/start-observability.sh поднимает официальный стек
наблюдаемости LMCache (OTel Collector + Tempo + Prometheus + Grafana) с уже
импортированными дашбордами LMCache. Grafana — на http://localhost:3000, все
порты привязаны только к 127.0.0.1. Запустите кэш с USE_OBSERVABILITY=1,
чтобы метрики пошли; кэш полноценно работает и без стека.
Что и где протестировано?
Unit-набор (идентичность, бюджет, удержание, конфиг-локали, фреймы lossless-
сжатия, имена файлов с cache_salt, учёт tmp-файлов) проходит где угодно;
интеграционные тесты требуют CLI lmcache; приёмочные/восстановительные тесты
требуют GPU-хоста (KVP_HARDWARE=1). Статусные метки честные — см.
docs/final-report.md в репозитории.
Почему кэш «попал», а TTFT почти не упал? Попадания в кэш убирают вычисление prefill, но не время декодирования и не PCIe- перенос холодных экспертов (хвостовую задержку здесь даёт hotsplit/MoE-offload). Прирост TTFT масштабируется с длиной промпта; на коротких промптах абсолютный выигрыш мал.
Можно ли это запускать рядом с hotsplit-рецептом?
Да — это и есть дизайн: KV_PERSIST=1 в лаунчере рецепта подключает коннектор;
hot/cold-раскладка экспертов рецепта не затрагивается.