LMCache — расширяемый слой KV-кэша для инференса LLM, предназначенный для решения ключевых задач крупномасштабного развёртывания. В этом документе оценивается его влияние на производительность vLLM, прежде всего ускорение prefill и эффект при разных типах нагрузки.
Выводы
LMCache существенно ускоряет prefill при высокой доле попаданий в кэш: в экспериментах с многоходовыми диалогами с длинным контекстом (20K токенов) входной TPS вырос до +355.3%, а TTFT снизился на -58.8%.
Преимущества производительности сильно зависят от нагрузки: - Оптимальные сценарии: многоходовые диалоги с общими префиксами и повторяющимися шаблонами - Менее подходящие сценарии: случайные входы без повторного использования кэша
Оптимизация размера блока: в проверенных конфигурациях лучший результат показал размер блока по умолчанию 256.
Промахи кэша создают накладные расходы: без повторного использования кэша наблюдалось снижение производительности от -3% до -15%. Поэтому LMCache лучше всего подходит для нагрузок с предсказуемыми повторяющимися префиксами.
Технические сведения
Обзор LMCache
LMCache расширяет возможности KV-кэша vLLM следующим образом:
Компонент
Описание
Выгрузка на CPU
Расширяет ёмкость кэша за пределы VRAM GPU
Управление по блокам
Эффективное хранение и получение кэша с настраиваемым размером блоков
Несколько бэкендов
Поддержка локального хранилища, Redis и пользовательских бэкендов, например Mooncake
Распределённый KV-кэш
Общий кэш нескольких экземпляров vLLM
Основные сценарии использования
Низкая доля попаданий в кэш префиксов: смягчает ограничения GPU VRAM и проблемы вытеснения кэша
Распределённое совместное использование кэша: позволяет нескольким экземплярам vLLM использовать общий кэш
Разделение PD: поддерживает архитектуры с раздельным развёртыванием prefill и decode