{"title":"LMCache — кэш, который делает LLM заметно быстрее и чуть-чуть умнее","url":"https://verapointmedia.com/tools/lmcache-lmcache/","markdownUrl":"https://verapointmedia.com/tools/lmcache-lmcache.md","language":"ru","category":"tools","publishedAt":"2026-06-13T08:30:25.000Z","updatedAt":"2026-06-13T08:30:25.000Z","references":["https://github.com/LMCache/LMCache","https://lmcache.ai/","https://blog.lmcache.ai/","https://docs.lmcache.ai/"],"rights":"Public user-requested reading, summarization and citation allowed. Model training requires separate permission.","contentMarkdown":"# LMCache — кэш, который делает LLM заметно быстрее и чуть-чуть умнее\n\n- Site: VeraPoint News\n- Section: Инструменты\n- Date: 2026-06-13\n- Canonical: https://verapointmedia.com/tools/lmcache-lmcache/\n- Markdown: https://verapointmedia.com/tools/lmcache-lmcache.md\n- Summary: Разбираю LMCache — KV-cache слой, который ускоряет инференс LLM для длинных диалогов, RAG и агентов. Где реально помогает, а где маркетинг.\n- SEO title: LMCache: рабочий процесс для AI-агентов и разработки\n- SEO description: Разбираю LMCache — KV-cache слой, который ускоряет инференс LLM для длинных диалогов, RAG и агентов. Где реально помогает, а где маркетинг\n- Target queries: LMCache; LMCache github; что такое LMCache; как использовать LMCache\n- Tags: #lmcache #kv-cache #llm-inference #vllm #optimization #speed\n- Image: https://verapointmedia.com/static/content-assets/tools/lmcache-lmcache/cover.webp\n\n## Sources\n\n- https://github.com/LMCache/LMCache\n- https://lmcache.ai/\n- https://blog.lmcache.ai/\n- https://docs.lmcache.ai/\n\n---\n\nПредставьте: вы разговариваете с чат-ботом, спрашиваете что-то про здоровый образ жизни — и он отвечает. Потом вы уточняете «а при чём тут режим сна» — и он снова задумывается на пять секунд. Хотя по сути ответ уже вытекает из предыдущего контекста.\n\nЭто не тупость модели и не плохой интернет. Это прямое следствие архитектуры: по умолчанию LLM держит весь разговор в оперативной памяти GPU. Как только контекст становится длинным — например, в чате с агентом, который анализирует документы — модель начинает тормозить. А если контекст переваливает за размер выделенного окна — она вообще теряет нить.\n\nИ вот тут появляется [LMCache](https://github.com/LMCache/LMCache) — и говорит: «давайте я просто сохраню этот контекст отдельно, как умный кэш-слой, и буду подкладывать его обратно при каждом запросе».\n\n## Если просто\n\nLMCache — это отдельная программа-демон, которая живёт рядом с движком инференса (vLLM, SGLang, Dynamo) и перехватывает промежуточные вычисления модели. А именно — то, что на техническом языке называется KV-кэш (key-value cache). Простыми словами: когда модель читает ваш промпт, она вычисляет для каждого токена его «смысловой вектор» и хранит его в памяти GPU, чтобы не пересчитывать заново при генерации следующих токенов.\n\nLMCache предлагает не держать этот кэш только в дорогой GPU-памяти. Он выгружает его на уровни подешевле: CPU RAM, SSD, Redis или даже S3-совместимое хранилище. При следующем запросе он подсовывает готовый кэш обратно — и модель пропускает дорогостоящий этап prefill. Результат: первый токен появляется быстрее (это называют снижением TTFT — Time To First Token), а общая пропускная способность железа растёт.\n\nНа бумаге — звучит как магия. Но давайте посмотрим, где оно реально работает, а где пока сыровато.\n\n## Что это решает\n\nГлавная боль, которую адресует LMCache — это повторяющиеся или длинные контексты. Три сценария, где это критично:\n\n- **Многораундовые диалоги и агенты.** Агент делает пять запросов подряд к одной модели, каждый раз с нарастающим контекстом. Без кэширования модель каждый раз заново пережёвывает весь диалог с нуля. LMCache запоминает вычисленное и экономит до 70-80% времени prefill.\n- **RAG с большими документами.** Вы загрузили в промпт 40 страниц инструкции. Модель их обработала и ответила. Следующий пользователь спрашивает про пункт 14 — и модель снова читает все 40 страниц. LMCache сохраняет однажды вычисленный кэш документа и переиспользует его для всех будущих запросов.\n- **Общий системный промпт.** У вас есть один длинный системный промпт для всех пользователей (например, «ты — ассистент, который отвечает в стиле Чехова»). Каждый запрос к модели начинается с его обработки. LMCache кэширует его один раз и применяет ко всем сессиям.\n\nРебята из LMCache в своём блоге приводят цифры: на агентных нагрузках с длинными контекстами на AMD MI300X ускорение prefill до 10x. А для MoE-моделей (это архитектура типа Mixtral, где часть параметров активируется динамически) новая многопроцессная архитектура даёт прирост до 10 раз на инференсе. Это, конечно, лучший сценарий — но даже средние цифры впечатляют.\n\n## Как это работает на верхнем уровне\n\nЧтобы не уходить в дебри, опишу главное.\n\n1. Вы запускаете LMCache как отдельный демон-процесс. Он независим от движка инференса — если vLLM упадёт, кэш не теряется.\n2. Движок инференса (vLLM, SGLang, Dynamo) через специальный коннектор отправляет KV-кэш в LMCache при prefill и запрашивает его обратно при следующем запросе.\n3. LMCache хранит кэш в многоуровневом хранилище: сначала быстрая CPU RAM (для горячих данных), потом SSD (для тёплых), потом Redis или S3 (для долгосрочного хранения и шаринга между нодами).\n4. При повторном запросе LMCache проверяет совпадение префиксов — и если находит, подставляет готовый кэш, пропуская вычисления.\n\nИнтересный момент: LMCache умеет переиспользовать кэш не только для точных совпадений префиксов. Через модуль CacheBlend он может найти совпадение в середине промпта, подставить кэш, а недостающие токены быстренько пересчитать — это называется non-prefix KV reuse. На практике это значит, что даже если вы чуть-чуть изменили системный промпт или документ, модель не будет пересчитывать всё с нуля.\n\n## Как попробовать\n\nУстановка элементарная:\n\n```bash\npip install lmcache\n```\n\nДальше нужно настроить коннектор для вашего движка инференса. Для vLLM это выглядит примерно так (упрощаю, но суть передаю):\n\n```python\nfrom lmcache.integration.vllm import LMCacheConfig\n\nconfig = LMCacheConfig(\n    storage_backend=\"cpu\",  # или redis, s3, disk\n    max_local_cache_size=10,  # GB\n)\n```\n\nИ передать этот конфиг при старте vLLM-сервера. В README есть ссылки на подробные рецепты — там всё довольно дружелюбно.\n\nЧто ещё стоит сразу глянуть:\n- Страница [Quickstart](https://docs.lmcache.ai/getting_started/quickstart.html) в документации\n- Раздел [Recipes](https://docs.lmcache.ai/recipes/index.html) с рабочими примерами под разные хранилища и движки\n- [Production Deployment](https://docs.lmcache.ai/mp/deployment.html) для тех, кто хочет запускать в кластере\n\nЕсли вы просто хотите оценить разницу руками, есть встроенный CLI для бенчмаркинга. Запускаете, задаёте длину контекста, включаете/выключаете LMCache — и сравниваете TTFT.\n\n## 3 сценария с примерами\n\n### Сценарий 1: SaaS с поддержкой пользователей через RAG-базу знаний\n**Задача:** У вас SaaS-продукт, пользователи задают вопросы по документации. 200 страниц мануалов залиты в векторную базу. При каждом вопросе вы извлекаете релевантные 10 страниц и засовываете их в промпт вместе с вопросом.\n**Как применить:** Поднимаете vLLM с LMCache, указываете LMCache кэшировать все промпты с длиной больше 2000 токенов. Первый пользователь запрашивает документацию по API — модель вычисляет кэш для 10 страниц. LMCache сохраняет его в Redis. Следующие 100 пользователей с похожими запросами получают ответ в 4-5 раз быстрее, потому что prefill уже сделан.\n**Что получится:** TTFT снижается с 3-5 секунд до 0.5-1.5 секунды для повторяющихся кусков документации. При 1000 запросов в час экономия GPU-часов существенная.\n\n### Сценарий 2: Долгий диалог с ассистентом-аналитиком\n**Задача:** Пользователь ведёт с моделью диалог на 50 реплик, анализируя финансовый отчёт. Каждая реплика добавляет контекст, и к 30-му сообщению промпт раздувается до 15 000 токенов. Без кэша модель начинает «думать» по 10 секунд перед каждым ответом.\n**Как применить:** Включаете LMCache в режиме multi-turn conversation. Он автоматически сохраняет кэш каждой реплики в CPU RAM. При каждой следующей реплике модель пересчитывает только новые токены от пользователя, а всё предыдущее обсуждение берёт из кэша.\n**Что получится:** Вместо экспоненциального роста задержки — линейный рост. Пользователь не замечает тормозов даже на 80-й реплике.\n\n### Сценарий 3: Автоматическая обработка входящих писем с общим контекстом\n**Задача:** Компания обрабатывает 5000 входящих писем в день через LLM. У каждого письма один и тот же префикс-инструкция на 1000 токенов: «Ты — ассистент, классифицируй письмо по категориям A, B, C, выдели суть, проверь на спам...» Плюс 500 токенов корпоративной политики безопасности.\n**Как применить:** LMCache настраивается на хранение кэша общего префикса в горячей CPU RAM. Все 5000 запросов начинаются с одного и того же префикса — модель вычисляет его один раз утром и дальше просто подставляет.\n**Что получится:** 1500 токенов prefill, которые раньше вычислялись 5000 раз в день, теперь вычисляются один раз. Экономия — около 30% GPU-времени на инференсе.\n\n## Где можно застрять\n\nПервое и главное: LMCache — это не «поставил и забыл». Это инфраструктурный слой, который требует настройки под конкретный стек. Нужно понимать, какое у вас хранилище, какие движки, какие нагрузки. Документация у ребят приличная, но 309 открытых issues на GitHub намекают, что не всё гладко.\n\nВторое: эффективность LMCache сильно зависит от типа нагрузки. Если у вас 90% запросов\n\n## Что читать дальше\n\n- [Все материалы про AI-инструменты](/topics/ai-tools/)\n- [Как отличить рабочий AI-инструмент от красивой демки](https://verapointmedia.com/guides/kak-otlichit-rabochiy-ai-instrument-ot-krasivoy-demki/)\n- [Superpowers: как управлять ИИ-агентами в команде](https://verapointmedia.com/tools/obra-superpowers/)\n- [React Doctor — линтер для ассистентов, чтобы они не портили код](https://verapointmedia.com/tools/millionco-react-doctor/)\n\n## Материалы\n\n- [LMCache/LMCache] LMCache/LMCache: https://github.com/LMCache/LMCache\n- [lmcache.ai] supporting context: https://lmcache.ai/\n- [blog.lmcache.ai] supporting context: https://blog.lmcache.ai/\n- [docs.lmcache.ai] supporting context: https://docs.lmcache.ai/\n"}