Files
nis2/project-tasks/p23-pagedattention.md
T

5.5 KiB
Raw Blame History

P23. PagedAttention: управление памятью KV-кэша

  • Версия и дата проверки: 1.1, 07.09.2026.
  • Статус: готово к назначению.

Статья и исходные материалы

  • Основная статья: Woosuk Kwon и соавт. — Efficient Memory Management for Large Language Model Serving with PagedAttention. SOSP 2023.
  • Кратко о статье: При обслуживании LLM память под KV-кэш обычно резервируется непрерывными областями, что приводит к фрагментации и избыточному резервированию. PagedAttention делит кэш на блоки и размещает их по принципу виртуальной памяти, выделяя место по мере необходимости и допуская безопасное совместное использование. В проекте механизм изолируется от GPU-вычислений и сравнивается с непрерывным размещением на CPU-стенде.
  • Почему результат актуален: PagedAttention разбивает KV-кэш на страницы и устраняет необходимость непрерывного резервирования памяти, позволяя обслуживать больше параллельных LLM-запросов.
  • Артефакты и данные: vllm-project/vllm, активно развиваемая открытая система с реализацией PagedAttention. Зафиксированные ревизии: vllm-project/vllm@3e9d364ff727 (Apache-2.0).
  • Что уже предоставляет артефакт: vLLM предоставляет реализацию PagedAttention и обработку запросов; код и опубликованные измерения служат эталоном механизма. В обязательном CPU-пути команда создаёт собственные аллокаторы и обработчик.

Обязательный результат

  • Проверяемый вопрос или утверждение: блочное размещение KV-кэша уменьшает фрагментацию и позволяет обслуживать больший динамический пакет запросов, чем непрерывное резервирование памяти.
  • Технический результат: Реализовать минимальный исполняемый обработчик авторегрессионных запросов на CPU с взаимозаменяемыми непрерывным и страничным аллокаторами KV-кэша. Добавить планирование динамического пакета, проверку инвариантов размещения и учёт реально выделенной памяти и отказов.
  • Обязательное приращение команды: Реализовать предусмотренные непрерывный и страничный аллокаторы над реально выделенными массивами, динамический пакет и проверку инвариантов. Подготовить собственный поток запросов и сопоставимые измерения памяти, фрагментации, отказов и задержки.
  • Эксперимент: на подготовленном обработчике и реально выделяемых массивах сравнить непрерывный и страничный аллокаторы по занятой памяти, внутренней фрагментации, отказам размещения, размеру динамического пакета и задержке.
  • Границы выводов: стенд проверяет управление памятью и планирование динамического пакета на CPU; он не оценивает GPU-ядро PagedAttention, качество модели и сквозную производительность полноценного LLM-сервера.
  • Ресурсный профиль: локально, CPU, 8–16 ГБ памяти; вместо большой модели допустим детерминированный генератор токенов, но обязательный результат включает работающий аллокатор и обработчик запросов. Имитация используется только для расширения масштаба; небольшая GPU-проверка необязательна.

Содержательные направления

  • модель запросов и аллокаторы.
  • планировщик и метрики.
  • анализ чувствительности и дополнительный механизм.

Возможное продолжение

Выбрать размер блока, добавить prefix sharing, swap или предсказание длины и проверить компромисс памяти, метаданных и задержки.