microsoft/vattention
Dynamic Memory Management for Serving LLMs without PagedAttention
해결하는 문제
vAttention은 LLM 서빙 시스템에서 KV 캐시의 메모리 관리 문제를 해결합니다. 특히, PagedAttention이 요구하는 동적 메모리 할당을 지원하기 위해 맞춤형 어텐션 커널을 재작성해야 하는 문제를 해결하며, 프리필(prefill) 중심 워크로드에서 성능을 향상시킵니다.
작동 방식
vAttention은 CUDA 가상 메모리 API를 사용하여 가상 메모리 할당과 물리 메모리 할당을 분리합니다. 이로 인해 물리 메모리는 필요에 따라 온디맨드로 할당되면서도, KV 캐시는 가상 메모리에서 연속된 상태를 유지할 수 있습니다. 메모리가 연속적으로 보이기 때문에, 다른 시스템에서 구현된 복잡한 사용자 공간의 디멘드 페이지링을 요구하지 않고도 변경되지 않은 어텐션 커널에서 사용할 수 있습니다.
대상 사용자
NVIDIA GPU에서 추론 최적화 및 메모리 관리에 집중하는 LLM 서빙 시스템 개발자 및 연구자에게 적합합니다.
주요 특징
- 커널 호환성: 변경되지 않은 어텐션 커널에 대해 동적 메모리 할당을 지원합니다.
- 가상 메모리 분리: CUDA 가상 메모리 API를 사용하여 가상 메모리와 물리 메모리 할당을 분리합니다.
- 성능: 특히 프리필 중심 워크로드에서 PagedAttention보다 성능이 향상됩니다.
- 통합성: Sarathi-Serve와 통합되어 있으며, FlashAttention 및 FlashInfer와 같은 백엔드를 지원합니다.
- 사용자 정의 드라이버 지원: 기본값인 2MB를 초과하여 64KB에서 256KB까지의 작은 페이지 크기를 가능하게 하는 수정된 NVIDIA UVM 드라이버를 포함합니다.
관련
- 프로젝트
ovg-project/kvcachedkvcached는 LLM 서빙 엔진(vLLM, SGLang)에 가상메모리 스타일의 유연한 KV 캐시 관리를 추가하는 오픈소스 Python 라이브러리입니다. 여러 모델이 GPU를 공유하고 요청이 실제로 필요할 때만 캐시 메모리를 할당함으로써 활용도 향상, 최초 토큰까지의 지연 감소, 서빙 비용 절감을 가능하게 합니다. 주요 기능으로는 동적 할당, 메모리 제한용 CLI, 프리픽스 캐시, 라우터/슬립 모드, 파이프라인 병렬 모델 지원이 포함됩니다. pip 또는 Docker로 설치 가능하며, 환경 변수로 활성화하고 기존 SGLang/vLLM 환경에 통합할 수 있습니다. Apache 2.0 라이선스이며, 주요 기술 기업들에 의해 사용되고 있습니다.
- 프로젝트
ModelEngine-Group/unified-cache-managementUCM (Unified Cache Manager)은 LLM 추론 엔진을 위한 공유 KV-cache 계층을 제공하는 오픈소스 라이브러리입니다. 여러 요청 간에 어텐션 캐시를 재사용하고, 캐시를 외부 스토리지로 넘겨 가속기 메모리를 확장할 수 있으며, 플러그인 가능한 엔진 어댑터와 스토리지 백엔드를 제공합니다. 챗봇 서버, 멀티모달 파이프라인 및 동일한 컨텍스트에 반복적으로 액세스하는 모든 워크로드에 이상적입니다.
- 프로젝트
vllm-project/vllmvLLM은 대규모 언어 모델의 높은 처리량과 낮은 지연 시간 서빙을 위한 오픈소스 라이브러리입니다. 효율적인 KV 캐시 처리를 위한 PagedAttention을 도입하고, 다양한 양자화 형식을 지원하며, 빠른 어텐션 커널을 통합하고, GPU, CPU 및 기타 가속기에서 실행되는 OpenAI 호환 API를 제공합니다.
- 프로젝트
flagos-ai/FlagAttentionFlagAttention은 Triton 기반 라이브러리로, 다양한 가속기에서 대규모 모델의 학습 및 추론을 위한 빠르고 메모리 효율적인 어텐션 커널(FlashAttention, 조각별, 페이징, 희소, 양자화, 재귀적 등)을 제공합니다. 안정적인 밀집 연산자는 프로덕션 준비가 완료되었으며, 알파 버전은 KV 캐시 페이징, 블록 희소 디코딩, INT8 양자화와 같은 실험적 기능을 제공합니다.
- Dispatch