Repolode
microsoft

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. 1

    Python 3.10을 사용하는 conda 환경을 만들고 활성화합니다

    conda create -n vattn python=3.10
  2. 2

    PyTorch 2.3.0에 맞는 libtorch를 다운로드하고 압축을 풉니다

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

    sarathi-lean 디렉터리에서 Sarathi-Serve를 설치합니다

    pip install -e . --extra-index-url https://flashinfer.ai/whl/cu121/torch2.3/
  4. 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 통계는 매일 갱신됩니다.

관련 프로젝트