OpenAI 호환 API로 대규모 언어 모델을 빠르고 메모리 효율적으로 실행하고 서빙하는 라이브러리 및 서버입니다.
microsoft/vattention
PagedAttention 없이 CUDA 가상 메모리 API로 GPU 메모리를 필요할 때 할당하는 LLM 서빙용 KV-cache 메모리 관리자입니다.
- 스타
- 526
- 포크
- 46
- 열린 이슈
- 13
- 마지막 커밋
- 2개월 전
어떤 프로젝트인가요?
vAttention은 LLM 서빙 시스템의 KV-cache를 관리하는 메모리 관리자입니다. CUDA 가상 메모리 API를 사용해 가상 메모리 할당과 물리 메모리 할당을 분리하므로, KV-cache는 가상 주소 공간에서 연속된 상태를 유지하면서 필요할 때 물리 GPU 메모리를 매핑합니다.
KV-cache가 연속된 상태로 유지되므로 vAttention은 수정하지 않은 attention 커널로 동적 할당을 지원할 수 있습니다. 이는 사용자 공간에서 페이징을 구현하고 커스텀 커널이 필요한 PagedAttention과 다릅니다. 프로젝트에는 vAttention allocator, PagedAttention과 vAttention을 모두 지원하도록 수정한 Sarathi-Serve 버전, 벤치마크 스크립트, 벤치마킹용 OpenAI 호환 API 서버가 포함되어 있습니다.
이 저장소는 NVIDIA GPU(A100에서 테스트)를 사용하는 Linux, PyTorch 2.3.0, CUDA 12.1 이상, Python 3.10을 대상으로 합니다. FlashAttention 및 FlashInfer 백엔드와 64KB~2MB 페이지 크기를 지원하며, 더 작은 페이지를 사용하려면 커스텀 UVM 드라이버가 필요합니다.
핵심 기능
- 01가상 메모리에서 KV-cache를 연속된 상태로 유지하면서 필요할 때 물리 GPU 메모리를 할당합니다.
- 02PagedAttention과 달리 수정하지 않은 attention 커널로 동작합니다.
- 03FlashAttention 및 FlashInfer attention 백엔드를 지원합니다.
- 04비동기 할당과 연산을 겹쳐 실행하며, 64KB~2MB 페이지 크기를 지원합니다.
- 05벤치마크 실행 도구와 OpenAI 호환 API 서버를 포함합니다.
활용 사례
- LLM 추론을 위한 KV-cache 메모리 관리 방식을 연구하거나 프로토타이핑할 때 활용할 수 있습니다.
- 프리필 비중이 높거나 컨텍스트가 긴 워크로드에서 서빙 처리량과 지연 시간을 벤치마킹할 수 있습니다.
- attention 커널을 다시 작성하지 않고 서빙 시스템에 동적 KV-cache 할당을 통합할 수 있습니다.
빠른 시작
- 1
Python 3.10을 사용하는 conda 환경을 만들고 활성화합니다
conda create -n vattn python=3.10 - 2
PyTorch 2.3.0에 맞는 libtorch를 다운로드하고 압축을 풉니다
wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip - 3
sarathi-lean 디렉터리에서 Sarathi-Serve를 설치합니다
pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ - 4
LIBTORCH_PATH를 libtorch 디렉터리로 설정하고 vAttention allocator를 빌드합니다
LIBTORCH_PATH=<path to libtorch dir> python setup.py install
사용 전 알아둘 점
- 주로 Linux, A100 GPU, CUDA 12.1 이상에서 테스트되었으므로 다른 하드웨어에서는 작동하지 않을 수 있습니다.
- 특정 PyTorch 2.3.0 버전과 이에 맞는 libtorch 버전이 필요합니다.
- 오픈 소스 vLLM과 기능이 완전히 동일하지 않은 연구용 프로토타입입니다.
토픽
자주 묻는 질문
- vattention은(는) 무엇인가요?
- PagedAttention 없이 CUDA 가상 메모리 API로 GPU 메모리를 필요할 때 할당하는 LLM 서빙용 KV-cache 메모리 관리자입니다. vAttention은 LLM 서빙 시스템의 KV-cache를 관리하는 메모리 관리자입니다. CUDA 가상 메모리 API를 사용해 가상 메모리 할당과 물리 메모리 할당을 분리하므로, KV-cache는 가상 주소 공간에서 연속된 상태를 유지하면서 필요할 때 물리 GPU 메모리를 매핑합니다.
- vattention은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- vattention은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- vattention은(는) 아직 유지보수되고 있나요?
- 6개월 이내 업데이트. vattention의 마지막 커밋은 2026년 8월 24일입니다.
- vattention은(는) 어디에 사용할 수 있나요?
- LLM 추론을 위한 KV-cache 메모리 관리 방식을 연구하거나 프로토타이핑할 때 활용할 수 있습니다. 프리필 비중이 높거나 컨텍스트가 긴 워크로드에서 서빙 처리량과 지연 시간을 벤치마킹할 수 있습니다. attention 커널을 다시 작성하지 않고 서빙 시스템에 동적 KV-cache 할당을 통합할 수 있습니다.
- vattention는 어떻게 설치하나요?
- Python 3.10을 사용하는 conda 환경을 만들고 활성화합니다: conda create -n vattn python=3.10 PyTorch 2.3.0에 맞는 libtorch를 다운로드하고 압축을 풉니다: wget https://download.pytorch.org/libtorch/cu121/libtorch-shared-with-deps-2.3.0%2Bcu121.zip sarathi-lean 디렉터리에서 Sarathi-Serve를 설치합니다: pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/ LIBTORCH_PATH를 libtorch 디렉터리로 설정하고 vAttention allocator를 빌드합니다: LIBTORCH_PATH=<path to libtorch dir> python setup.py install
- vattention은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/microsoft/vattention
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
소비자용 GPU와 CPU에서 DeepSeek-V4, Qwen3.6 같은 대형 오픈 웨이트 모델을 실행하는 엣지 네이티브 MoE 서빙 엔진입니다.
서빙 엔진 간에 LLM 어텐션 캐시를 저장하고 공유·재사용해 첫 토큰 생성 시간(TTFT)을 줄이는 KV 캐시 관리 계층입니다.
vLLM, SGLang, TensorRT-LLM으로 AI 모델을 배포하고 필요할 때 사용할 수 있는 SSH GPU 인스턴스를 제공하는 오픈소스 GPU 클러스터 관리자입니다.
Alibaba의 고성능 LLM 추론 엔진으로, 여러 사업 부문에서 대규모 언어 모델을 서빙하는 데 사용됩니다.
NVIDIA GPU에서 LLM 및 시각 생성 모델 추론을 최적화하는 NVIDIA의 오픈 소스 라이브러리로, Python API와 C++/Python 런타임을 제공합니다.