промпты обрабатываются заново при каждом запросе. Для команд, развёртывающих широкий каталог общедоступных фундаментальных моделей (Foundation Models — FM), таких как Qwen, Llama, DeepSeek и других, на отдельных эндпоинтах для разных направлений бизнеса, в конвейерах генерации с дополнением извлечением (Retrieval Augmented Generation — RAG) или в многошаговых диалоговых приложениях, этот компромисс напрямую оборачивается ростом затрат на инфраструктуру и ухудшением пользовательского опыта. Корень проблемы в том, что во время генерации vLLM сохраняет ключи и значения внимания для каждого токена в KV-кэше, а кэширование префиксов повторно использует этот кэш для запросов с общими начальными токенами. На экономичных инстансах вроде ml.g6e.4xlarge (48 ГБ на GPU) памяти для кэширования префиксов остаётся немного, доля попаданий в кэш падает на длинных промптах, идентичные системные промпты приходится заново предзаполнять при каждом запросе, а горизонтально масштабированные реплики vLLM поддерживают изолированные друг от друга кэши. Решение строит трёхуровневую иерархию кэша: L0 (кэш префиксов на GPU), L1 (выгрузка в память CPU) и L2 (общий распределённый пул NVMe (Non-Volatile Memory Express) на базе Curvine). L0 — это нативный слой постраничного внимания (paged attention) в vLLM, L1 использует LMCache для выгрузки вытесненных из GPU блоков в оперативную память (DRAM) хоста, а L2 объединяет локальные NVMe-диски в общее пространство имён через Curvine, смонтированное как PVC (PersistentVolumeClaim) с режимом ReadWriteMany в каждый под инференса. Механизм Intelligent Routing в HyperPod направляет запросы к тем репликам, где с наибольшей вероятностью находятся нужные KV-блоки; доступны стратегии prefix-aware, kv-aware и round-robin. Итоговый эффект: полное предзаполнение с

Показать ещё ↓