WAKMan: кэш-менеджер для LLM-серверов сам выбирает стратегию и даёт на 5 п.п. больше попаданий
Когда сервер с большой языковой моделью обрабатывает запросы, он может переиспользовать уже посчитанные данные для повторяющихся кусков текста — это экономит время и вычисления. Но память под такой кэш ограничена, и систему приходится постоянно решать, какие куски выкинуть первыми. Команда из Мэрилендского университета и Capital One выяснила, что единого правильного ответа нет: для быстрых цепочек действий ИИ-агента лучше выкидывать самое старое, а для популярных повторяющихся запросов и длинных диалогов — самое редкое. Их система WAKMan переключается между этими двумя подходами сама, без знания типа запроса, и выигрывает у стандартной стратегии vLLM в среднем 5 процентных пунктов попаданий в кэш. Механизм простой: WAKMan параллельно прогоняет недавний трафик через две «теневые» копии кэша с разными правилами и каждые несколько минут включает на реальном сервере ту, что показала лучший результат. Для этого не нужно ни читать содержимое запросов, ни знать, диалог это, разовый вопрос или шаги агента — хватает только хэшей блоков, которые vLLM и так считает. • На 20 смешанных наборах запросов правило «выкидывать старое» (LRU) выигрывало у правила «выкидывать редкое» (S3FIFO) на 12% при большой доле агентных задач, но проигрывало ему до 22% в других сценариях • Даже один параметр нагрузки — например число реплик в диалоге — может поменять победителя в рамках одной и той же смеси запросов • WAKMan показал наименьший разрыв с идеальным кэшем бесконечного размера среди всех проверенных стратегий
AI-обработка оригинала arXiv cs.AI; редакция Hamidun News
Серверы с большими языковыми моделями тратят заметную часть вычислений на повторную обработку одного и того же контекста. Если два запроса начинаются с одинакового куска текста — например, системной инструкции или истории диалога — сервер может один раз посчитать для него внутренние "ключи" и "значения" модели и затем просто взять готовый результат из памяти видеокарты, вместо того чтобы считать заново. Это называется переиспользованием префикса, и оно реально ускоряет ответы и снижает затраты на обслуживание.
Проблема в том, что память видеокарты ограничена, и место под такой кэш постоянно освобождают, выкидывая старые записи. От правила, по которому выбирают, что выкинуть, напрямую зависит, сколько раз сервер сможет повторно использовать уже посчитанные данные. Исследователи из Мэрилендского университета и Capital One показали, что универсального правила не существует — и предложили систему WAKMan, которая подбирает подходящую стратегию сама, наблюдая за реальным трафиком.
Почему одно правило не работает для всех
Трафик к LLM-серверам обычно смешанный: это разовые вопросы без памяти о предыдущих сообщениях, многоходовые диалоги с историей переписки и агентные сценарии, где ИИ-система сама за секунды делает серию шагов подряд.
У этих трёх типов запросов принципиально разный паттерн повторного использования данных:
- Агентные шаги возвращаются к общему контексту почти мгновенно, за секунды, поэтому для них выгодно правило «выкидывай самое старое» (LRU) — оно и есть стандарт в популярном движке vLLM.
- Популярные фиксированные запросы (например, системные подсказки часто используемых сервисов) и длинные диалоги возвращаются к своему контексту спустя множество других, не связанных с ними запросов. Для них важнее не свежесть, а частота использования — тут выигрывает правило S3FIFO, которое защищает часто запрашиваемые блоки от вытеснения разовым "шумом".
Авторы проверили оба правила на 20 искусственно смешанных потоках запросов с разной долей разовых, многоходовых и агентных сценариев. LRU выигрывал у S3FIFO на агентно-ориентированных смесях, давая до 12% больше попаданий в кэш, но проигрывал ему до 22% на смесях с преобладанием диалогов и повторяющихся запросов. Более того, даже при фиксированном составе трафика достаточно поменять один параметр — например, среднее число реплик в диалоге или длину входного текста разового запроса — чтобы победитель поменялся местами. На одной и той же смеси запросов LRU выигрывал при коротких диалогах в 2 реплики, а при диалогах из 8 реплик уже выигрывал S3FIFO с разницей 15,4 процентных пункта.
Как работает WAKMan
Идея WAKMan в том, чтобы не угадывать тип трафика заранее, а постоянно проверять его на практике. Система держит рядом с реальным сервером две "теневые" копии кэша — одну с правилом LRU, другую с правилом S3FIFO — и прогоняет через них лог недавних запросов за прошедший временной интервал. Побеждает та стратегия, которая на этом же наборе запросов дала больше совпадений с уже закэшированными данными. Сервер переключается на неё до следующей проверки.
Для этого WAKMan не нужно ничего знать о содержимом запросов, их типе или номере реплики в диалоге — он использует только хэши блоков данных, которые vLLM и так вычисляет в обычном режиме работы. Это важно, потому что на практике сервер часто физически не может определить тип запроса: диалоговая история склеивается на стороне клиента, а требования приватности и разделения данных не позволяют серверу "читать" содержимое запросов, чтобы угадать их природу.
Результаты и ограничения
В экспериментах на модели Gemma, развёрнутой через vLLM на четырёх видеокартах NVIDIA RTX PRO 6000, WAKMan в среднем дал на 5 процентных пунктов больше попаданий в кэш по сравнению со стандартным для vLLM правилом LRU. Среди трёх проверенных стратегий — чистого LRU, чистого S3FIFO и динамического WAKMan — именно WAKMan показал наименьший средний и наименьший максимальный разрыв с идеальным кэшем бесконечного размера, который теоретически мог бы хранить вообще всё.
Главная слабость подхода — задержка реакции: решение о смене стратегии принимается не мгновенно, а по итогам прошедшего интервала, и если характер трафика резко меняется сразу после переключения, часть запросов в этом интервале обслуживается неоптимальной стратегией. Авторы также отмечают, что в их систему можно добавлять и другие стратегии вытеснения кэша, если для них есть способ смоделировать работу без реального железа — так что набор "кандидатов" на выбор не ограничен только LRU и S3FIFO.
Для команд, которые обслуживают LLM-продукты с смешанным трафиком — часть пользователей ведёт долгие диалоги, часть использует агентные сценарии, часть просто задаёт разовые вопросы, — вывод практичный: жёстко зашитая стратегия кэширования почти гарантированно теряет производительность на части трафика, и имеет смысл закладывать механизм адаптивного переключения уже на уровне инфраструктуры, а не выбирать "одно правильное" правило раз и навсегда.
Вопросы и ответы по материалу
Что известно по теме: почему одно правило не работает для всех?
Трафик к LLM-серверам обычно смешанный: это разовые вопросы без памяти о предыдущих сообщениях, многоходовые диалоги с историей переписки и агентные сценарии, где ИИ-система сама за секунды делает серию шагов подряд. У этих трёх типов запросов принципиально разный паттерн повторного использования данных: Агентные шаги возвращаются к общему контексту почти мгновенно, за секунды, поэтому для них выгодно правило «выкидывай самое старое» (LRU) — оно и есть стандарт в популярном движке vLLM. Популярные фиксированные запросы (например, системные подсказки часто используемых серви
Что известно по теме: как работает WAKMan?
Идея WAKMan в том, чтобы не угадывать тип трафика заранее, а постоянно проверять его на практике. Система держит рядом с реальным сервером две "теневые" копии кэша — одну с правилом LRU, другую с правилом S3FIFO — и прогоняет через них лог недавних запросов за прошедший временной интервал. Побеждает та стратегия, которая на этом же наборе запросов дала больше совпадений с уже закэшированными данными. Сервер переключается на неё до следующей проверки. Для этого WAKMan не нужно ничего знать о содержимом запросов, их типе или номере реплики в диалоге — он использует только хэш
Что известно по теме: результаты и ограничения?
В экспериментах на модели Gemma, развёрнутой через vLLM на четырёх видеокартах NVIDIA RTX PRO 6000, WAKMan в среднем дал на 5 процентных пунктов больше попаданий в кэш по сравнению со стандартным для vLLM правилом LRU. Среди трёх проверенных стратегий — чистого LRU, чистого S3FIFO и динамического WAKMan — именно WAKMan показал наименьший средний и наименьший максимальный разрыв с идеальным кэшем бесконечного размера, который теоретически мог бы хранить вообще всё. Главная слабость подхода — задержка реакции: решение о смене стратегии принимается не мгновенно, а по итогам пр
От чтения про ИИ-агентов — к запуску своего агента за вечер
Пошаговая сборка автономных агентов и MCP-связок в Hamidun Academy (academy.hamidun.com) (72 часа бесплатно) или мгновенный запуск готовых мультишаговых агентов в облаке Nomad.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.