Repolode
microsoft

microsoft/vattention

Un gestor de memoria para la KV-cache en sistemas de serving de LLM que asigna memoria GPU bajo demanda mediante las API de memoria virtual de CUDA, sin PagedAttention.

Estrellas
526
Forks
46
Issues abiertos
13
Último commit
hace 3 meses

¿Qué es?

vAttention es un gestor de memoria para la KV-cache en sistemas de serving de LLM. Separa la asignación de memoria virtual de la asignación de memoria física mediante las API de memoria virtual de CUDA, de modo que la memoria física de la GPU se asigna bajo demanda mientras la KV-cache permanece contigua en el espacio de direcciones virtuales.

Como la KV-cache permanece contigua, vAttention puede admitir asignación dinámica con kernels de atención sin modificar. Esto contrasta con PagedAttention, que implementa la paginación en espacio de usuario y requiere kernels personalizados. El proyecto incluye un asignador de vAttention, una versión modificada de Sarathi-Serve compatible tanto con PagedAttention como con vAttention, scripts de benchmark y un servidor de API compatible con OpenAI para realizar benchmarks.

El repositorio está dirigido a Linux con GPU NVIDIA (probado en A100), PyTorch 2.3.0, CUDA 12.1 o posterior y Python 3.10. Admite los backends FlashAttention y FlashInfer, y tamaños de página de 64KB a 2MB; los tamaños más pequeños requieren un controlador UVM personalizado.

Funciones clave

  • 01Asigna memoria física de GPU bajo demanda y mantiene la KV-cache contigua en la memoria virtual.
  • 02Funciona con kernels de atención sin modificar, a diferencia de PagedAttention.
  • 03Admite los backends de atención FlashAttention y FlashInfer.
  • 04Ofrece tamaños de página de 64KB a 2MB, con asignación asíncrona superpuesta al cómputo.
  • 05Incluye herramientas para ejecutar benchmarks y un servidor de API compatible con OpenAI.

Casos de uso

  • Investigar o crear prototipos de gestión de memoria para la KV-cache en inferencia de LLM.
  • Medir el throughput y la latencia del serving en cargas de trabajo con mucho prefill o contextos largos.
  • Integrar la asignación dinámica de la KV-cache en un sistema de serving sin reescribir los kernels de atención.

Inicio rápido

  1. 1

    Crea y activa un entorno conda con Python 3.10

    conda create -n vattn python=3.10
  2. 2

    Descarga y descomprime libtorch compatible con PyTorch 2.3.0

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

    Instala Sarathi-Serve desde el directorio sarathi-lean

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

    Compila el asignador vAttention y establece LIBTORCH_PATH en el directorio de libtorch

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

Antes de usarlo

  • Se ha probado principalmente en Linux con GPU A100 y CUDA 12.1 o posterior, por lo que puede que no funcione en otro hardware.
  • Requiere una versión específica de PyTorch 2.3.0 y la versión correspondiente de libtorch.
  • Es un prototipo de investigación sin paridad completa de funciones con vLLM de código abierto.

Temas

Preguntas frecuentes

¿Qué es vattention?
Un gestor de memoria para la KV-cache en sistemas de serving de LLM que asigna memoria GPU bajo demanda mediante las API de memoria virtual de CUDA, sin PagedAttention. vAttention es un gestor de memoria para la KV-cache en sistemas de serving de LLM. Separa la asignación de memoria virtual de la asignación de memoria física mediante las API de memoria virtual de CUDA, de modo que la memoria física de la GPU se asigna bajo demanda mientras la KV-cache permanece contigua en el espacio de direcciones virtuales.
¿vattention es gratuito? ¿Qué licencia tiene?
vattention es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿vattention sigue mantenido?
Actualizado en los últimos 6 meses. El último commit de vattention fue el 24 ago 2026.
¿Para qué puedo usar vattention?
Investigar o crear prototipos de gestión de memoria para la KV-cache en inferencia de LLM. Medir el throughput y la latencia del serving en cargas de trabajo con mucho prefill o contextos largos. Integrar la asignación dinámica de la KV-cache en un sistema de serving sin reescribir los kernels de atención.
¿Cómo se instala vattention?
Crea y activa un entorno conda con Python 3.10: conda create -n vattn python=3.10 Descarga y descomprime libtorch compatible con PyTorch 2.3.0: wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip Instala Sarathi-Serve desde el directorio sarathi-lean: pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ Compila el asignador vAttention y establece LIBTORCH_PATH en el directorio de libtorch: LIBTORCH_PATH=<path to libtorch dir> python setup.py install
¿Dónde consigo vattention?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/microsoft/vattention

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados