Repolode
microsoft

microsoft/vattention

Gerenciador de memória para KV-cache em serving de LLMs que aloca memória da GPU sob demanda via APIs de memória virtual do CUDA, sem PagedAttention.

Estrelas
526
Forks
46
Issues abertas
13
Último commit
há 2 meses

O que é?

vAttention é um gerenciador de memória para o KV-cache em sistemas de serving de LLMs. Ele separa a alocação de memória virtual da alocação de memória física usando as APIs de memória virtual do CUDA, mapeando a memória física da GPU sob demanda enquanto mantém o KV-cache contíguo no espaço de endereços virtuais.

Como o KV-cache permanece contíguo, o vAttention oferece suporte à alocação dinâmica com kernels de attention sem modificações. Isso contrasta com o PagedAttention, que implementa paginação em espaço de usuário e exige kernels personalizados. O projeto inclui um alocador vAttention, uma versão modificada do Sarathi-Serve com suporte a PagedAttention e vAttention, scripts de benchmark e um servidor de API compatível com OpenAI para benchmarks.

O repositório é voltado para Linux com GPUs NVIDIA (testado em A100), PyTorch 2.3.0, CUDA 12.1 ou posterior e Python 3.10. Ele oferece suporte aos backends FlashAttention e FlashInfer e a tamanhos de página de 64 KB a 2 MB; páginas menores exigem um driver UVM personalizado.

Recursos principais

  • 01Aloca memória física da GPU sob demanda, mantendo o KV-cache contíguo na memória virtual.
  • 02Funciona com kernels de attention sem modificações, ao contrário do PagedAttention.
  • 03Oferece suporte aos backends de attention FlashAttention e FlashInfer.
  • 04Oferece tamanhos de página de 64 KB a 2 MB, com alocação assíncrona sobreposta à computação.
  • 05Inclui ferramentas para executar benchmarks e um servidor de API compatível com OpenAI.

Casos de uso

  • Pesquisar ou criar protótipos de gerenciamento de memória do KV-cache para inferência de LLMs.
  • Comparar throughput e latência de serving em workloads com muito prefill ou contexto longo.
  • Integrar a alocação dinâmica do KV-cache a um sistema de serving sem reescrever os kernels de attention.

Início rápido

  1. 1

    Crie e ative um ambiente conda com Python 3.10

    conda create -n vattn python=3.10
  2. 2

    Baixe e extraia o libtorch compatível com o PyTorch 2.3.0

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

    Instale o Sarathi-Serve a partir do diretório sarathi-lean

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

    Compile o alocador vAttention, definindo LIBTORCH_PATH como o diretório do libtorch

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

Antes de usar

  • Testado principalmente no Linux com GPUs A100 e CUDA 12.1 ou posterior; portanto, pode não funcionar em outros hardwares.
  • Requer uma versão específica do PyTorch 2.3.0 e a versão correspondente do libtorch.
  • É um protótipo de pesquisa sem paridade completa de recursos com o vLLM de código aberto.

Tópicos

Perguntas frequentes

O que é vattention?
Gerenciador de memória para KV-cache em serving de LLMs que aloca memória da GPU sob demanda via APIs de memória virtual do CUDA, sem PagedAttention. vAttention é um gerenciador de memória para o KV-cache em sistemas de serving de LLMs. Ele separa a alocação de memória virtual da alocação de memória física usando as APIs de memória virtual do CUDA, mapeando a memória física da GPU sob demanda enquanto mantém o KV-cache contíguo no espaço de endereços virtuais.
vattention é gratuito? Qual é a licença?
vattention é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
vattention ainda é mantido?
Atualizado nos últimos 6 meses. O último commit de vattention foi em 24 de ago. de 2026.
Para que posso usar vattention?
Pesquisar ou criar protótipos de gerenciamento de memória do KV-cache para inferência de LLMs. Comparar throughput e latência de serving em workloads com muito prefill ou contexto longo. Integrar a alocação dinâmica do KV-cache a um sistema de serving sem reescrever os kernels de attention.
Como instalar vattention?
Crie e ative um ambiente conda com Python 3.10: conda create -n vattn python=3.10 Baixe e extraia o libtorch compatível com o PyTorch 2.3.0: wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip Instale o Sarathi-Serve a partir do diretório sarathi-lean: pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ Compile o alocador vAttention, definindo LIBTORCH_PATH como o diretório do libtorch: LIBTORCH_PATH=<path to libtorch dir> python setup.py install
Onde consigo vattention?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/microsoft/vattention

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados