Быстрая и эффективная по памяти библиотека и сервер для запуска и обслуживания больших языковых моделей через API, совместимый с OpenAI.
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
Создайте и активируйте conda-окружение с Python 3.10
conda create -n vattn python=3.10 - 2
Скачайте и распакуйте libtorch, совместимый с PyTorch 2.3.0
wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip - 3
Установите Sarathi-Serve из каталога sarathi-lean
pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ - 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 обновляется ежедневно.
Похожие проекты
Нативный для edge-устройств движок для инференса MoE-моделей с открытыми весами, например DeepSeek-V4 и Qwen3.6, на потребительских GPU и CPU.
Слой управления KV-кэшем, который хранит, передаёт и повторно использует кэши внимания LLM между serving-движками, сокращая время до первого токена.
Менеджер GPU-кластеров с открытым исходным кодом: развёртывает AI-модели с помощью vLLM, SGLang и TensorRT-LLM и предоставляет GPU-инстансы с доступом по SSH по запросу.
Высокопроизводительный движок инференса LLM от Alibaba, который используют разные бизнес-подразделения компании для обслуживания больших языковых моделей.
Библиотека NVIDIA с открытым исходным кодом для оптимизации инференса LLM и моделей генерации изображений на GPU NVIDIA, с API для Python и рантаймами на C++ и Python.