Skip to content
sikkatu edited this page Nov 1, 2026 · 5 revisions

English | Русский | 中文

FAQ

Это заменяет 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-раскладка экспертов рецепта не затрагивается.

Clone this wiki locally