Repolode
microsoft

microsoft/vattention

Менеджер памяти KV-кэша для обслуживания LLM: выделяет память GPU по мере необходимости через API виртуальной памяти CUDA, без PagedAttention.

Звёзды
527
Форки
46
Открытые issues
13
Последний коммит
3 месяца назад

Что это?

vAttention — менеджер памяти для KV-кэша в системах обслуживания LLM. Он разделяет выделение виртуальной и физической памяти с помощью API виртуальной памяти CUDA: физическая память GPU отображается по мере необходимости, а KV-кэш остаётся непрерывным в виртуальном адресном пространстве.

Поскольку KV-кэш остаётся непрерывным, vAttention поддерживает динамическое выделение памяти с неизменёнными attention-ядрами. В отличие от него, PagedAttention реализует подкачку в пользовательском пространстве и требует собственных ядер. В проект входят аллокатор vAttention, модифицированная версия Sarathi-Serve с поддержкой PagedAttention и vAttention, скрипты для бенчмарков и совместимый с OpenAI API-сервер для тестирования производительности.

Репозиторий рассчитан на Linux с GPU NVIDIA (тестировался на A100), PyTorch 2.3.0, CUDA 12.1 или новее и Python 3.10. Поддерживаются бэкенды FlashAttention и FlashInfer, а также размеры страниц от 64 КБ до 2 МБ; для страниц меньшего размера требуется кастомный драйвер UVM.

Ключевые возможности

  • 01Выделяет физическую память GPU по мере необходимости, сохраняя KV-кэш непрерывным в виртуальной памяти.
  • 02Работает с неизменёнными attention-ядрами, в отличие от PagedAttention.
  • 03Поддерживает бэкенды attention FlashAttention и FlashInfer.
  • 04Поддерживает размеры страниц от 64 КБ до 2 МБ; выделение памяти может выполняться асинхронно параллельно с вычислениями.
  • 05Включает инструменты для запуска бенчмарков и совместимый с OpenAI API-сервер.

Сценарии использования

  • Исследование и прототипирование способов управления памятью KV-кэша для инференса LLM.
  • Измерение пропускной способности и задержки системы обслуживания на нагрузках с большим объёмом prefill или длинным контекстом.
  • Интеграция динамического выделения памяти для KV-кэша в систему обслуживания без переписывания attention-ядер.

Быстрый старт

  1. 1

    Создайте и активируйте conda-окружение с Python 3.10

    conda create -n vattn python=3.10
  2. 2

    Скачайте и распакуйте libtorch, совместимый с PyTorch 2.3.0

    wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip
  3. 3

    Установите Sarathi-Serve из каталога sarathi-lean

    pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/
  4. 4

    Соберите аллокатор vAttention, указав в LIBTORCH_PATH каталог libtorch

    LIBTORCH_PATH=<path to libtorch dir> python setup.py install

Что важно знать

  • В основном тестировался в Linux с GPU A100 и CUDA 12.1 или новее, поэтому на другом оборудовании может не работать.
  • Требуются определённая версия PyTorch 2.3.0 и соответствующая ей версия libtorch.
  • Это исследовательский прототип, функциональность которого не полностью соответствует версии vLLM с открытым исходным кодом.

Темы

Частые вопросы

Что такое vattention?
Менеджер памяти KV-кэша для обслуживания LLM: выделяет память GPU по мере необходимости через API виртуальной памяти CUDA, без PagedAttention. vAttention — менеджер памяти для KV-кэша в системах обслуживания LLM. Он разделяет выделение виртуальной и физической памяти с помощью API виртуальной памяти CUDA: физическая память GPU отображается по мере необходимости, а KV-кэш остаётся непрерывным в виртуальном адресном пространстве.
vattention можно использовать бесплатно? Какая у него лицензия?
vattention распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
vattention всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в vattention — 24 авг. 2026 г..
Для чего можно использовать vattention?
Исследование и прототипирование способов управления памятью KV-кэша для инференса LLM. Измерение пропускной способности и задержки системы обслуживания на нагрузках с большим объёмом prefill или длинным контекстом. Интеграция динамического выделения памяти для KV-кэша в систему обслуживания без переписывания attention-ядер.
Как установить vattention?
Создайте и активируйте conda-окружение с Python 3.10: conda create -n vattn python=3.10 Скачайте и распакуйте libtorch, совместимый с PyTorch 2.3.0: wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip Установите Sarathi-Serve из каталога sarathi-lean: pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ Соберите аллокатор vAttention, указав в LIBTORCH_PATH каталог libtorch: LIBTORCH_PATH=<path to libtorch dir> python setup.py install
Где скачать vattention?
Исходный код и инструкции по установке — на GitHub: https://github.com/microsoft/vattention

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты