Paged Attention — KV 캐시를 블록으로 관리
Paged Attention
vLLM이 시작된 논문의 핵심이 PagedAttention이에요. KV 캐시를 연속된 큰 메모리에 통째로 미리 잡던 방식은 단편화로 GPU 메모리를 크게 낭비했어요. PagedAttention은 KV 캐시를 고정 크기 블록으로 나누고, OS의 가상 메모리처럼 시퀀스마다 블록 테이블로 논리 블록 → 물리 블록을 매핑해 필요할 때만 할당해요. 이 덕분에 메모리 단편화를 60~80%에서 4% 미만으로 줄일 수 있어요.
블록 기반 디코딩
디코딩 시퀀스의 KV 캐시가 블록 단위로 관리되므로, 여러 시퀀스가 메모리를 유연하게 공유해요. 컨커런트한 요청 수를 크게 늘릴 수 있는 게 인지상의 최대 이점이에요.
멀티헤드 어텐션 커널
vLLM은 자체 멀티헤드 쿼리 어텐션 커널(attention_kernels.cu)을 사용해, KV 캐시가 블록으로 나뉘어 있어도 효율적으로 QK·밸류 계산을 수행해요. 각 스레드 블록이 하나의 쿼리 토큰과 한 컨텍스트의 키 토큰들을 처리하는 구조예요. BLOCK_SIZE·HEAD_SIZE 같은 컴파일 타임 인자가 성능을 결정해요.
왜 중요한가
장문 디코딩에서 메모리 절약 → 더 큰 배치 → 더 높은 처리량. PagedAttention은 이후 모든 LLM 서빙 엔진의 표준적인 사고가 됐어요.