Files

32 lines
5.7 KiB
Markdown
Raw Permalink Normal View History

2026-09-06 19:26:12 +03:00
# P29. Mooncake: глобальный многоуровневый KV-кэш
2026-09-07 21:46:04 +03:00
- **Версия и дата проверки:** 1.1, 07.09.2026.
2026-09-06 19:26:12 +03:00
- **Статус:** готово к назначению.
## Статья и исходные материалы
- **Основная статья:** Ruoyu Qin и соавт. — [Mooncake: Trading More Storage for Less Computation — A KVCache-centric Architecture for Serving LLM Chatbot](https://www.usenix.org/conference/fast25/presentation/qin). FAST 2025, Best Paper.
- **Кратко о статье:** Для длинных диалогов и повторяющихся префиксов повторный prefill расходует дорогие вычисления, хотя готовый KV-кэш можно сохранить и передать. Mooncake отделяет стадии prefill и decode и строит глобальный многоуровневый KV-кэш на памяти и накопителях вычислительных узлов. В проекте сравниваются повторное вычисление, локальный кэш и общее блочное хранилище при разных сетевых ограничениях.
- **Почему результат актуален:** Mooncake разделяет prefill и decode и превращает память GPU, DRAM и SSD кластера в общий KV-кэш, управляемый с учётом повторного использования и требований к задержке.
- **Артефакты и данные:** [kvcache-ai/Mooncake](https://github.com/kvcache-ai/Mooncake) под Apache-2.0 с движком передачи и [FAST25-трассами](https://github.com/kvcache-ai/Mooncake/tree/main/FAST25-release), включая отдельную агентную нагрузку. Зафиксированные ревизии: `kvcache-ai/Mooncake@408b831bfeff` (Apache-2.0).
2026-09-07 21:46:04 +03:00
- **Что уже предоставляет артефакт:** Mooncake предоставляет передачу данных, кэш и открытые трассы запросов с хешами блоков. Трассы используются как вход, а готовые компоненты — как источник устройства и эталон для локального стенда.
2026-09-06 19:26:12 +03:00
## Обязательный результат
- **Проверяемый вопрос или утверждение:** глобальное хранение KV-блоков может выгодно заменить повторный prefill для длинных общих префиксов, но результат определяется пропускной способностью хранилища, конкуренцией за сеть и политикой допуска в кэш.
- **Технический результат:** Построить из нескольких процессов общий блочный кэш поверх RAM и локального SSD с сетевым чтением, вытеснением и предварительной загрузкой. Добавить локальный LRU и модель повторного вычисления, проигрыватель открытых трасс и проверку целостности возвращаемых блоков.
2026-09-07 21:46:04 +03:00
- **Обязательное приращение команды:** Построить предусмотренный многопроцессный блочный кэш RAM/SSD с сетевым чтением, вытеснением и предзагрузкой; добавить локальный LRU, модель повторного вычисления и проверку целостности. Собственная работа включает проигрывание одинаковых трасс и сопоставимые измерения кэша.
2026-09-06 19:26:12 +03:00
- **Эксперимент:** на подготовленном блочном кэше и открытых трассах сравнить глобальную политику с локальным LRU и повторным вычислением по доле попаданий, переданным байтам, задержке и goodput.
- **Границы выводов:** стенд проверяет политики блочного кэша на RAM, SSD и локальной сети при заданной стоимости повторного вычисления; он не воспроизводит RDMA, GPU-prefill и конкуренцию производственного кластера Mooncake.
- **Ресурсный профиль:** локально, CPU, 8–16 ГБ памяти, несколько процессов; RDMA и GPU не требуются. Стоимость prefill задаётся реальной малой функцией или калиброванной задержкой, а при тяжёлой трассе используется воспроизводимая подвыборка.
## Содержательные направления
- разбор трасс и модель стоимости.
- реализации кэшей и маршрутизации.
- SLO, сетевые эксперименты и новая политика.
## Возможное продолжение
Добавить объединение одновременных загрузок, ограничение полосы, несколько арендаторов, ошибку предсказания повторного использования либо совместное решение о маршрутизации и вытеснении.