1. Introduction: 서빙(Serving)의 적은 연산이 아니라 '낭비'다
LLM을 실제 프로덕션 환경에서 서빙할 때, 시스템의 처리량(Throughput)을 결정짓는 핵심 요소는 한 번에 얼마나 많은 사용자의 요청을 처리할 수 있는가, 즉 배치 크기(Batch Size) 입니다.
하지만 GPU의 VRAM(HBM)은 한정되어 있고, 각 요청마다 쌓이는 KV Cache는 엄청난 공간을 차지합니다. 놀랍게도 기존 시스템에서 배치를 늘리지 못한 이유는 메모리가 '부족해서'가 아니라 '낭비되고 있어서'였습니다. PagedAttention(vLLM의 핵심 기술) 은 운영체제(OS)의 가상 메모리 관리 기법을 차용하여, 이 낭비되는 공간을 긁어모아 처리량을 극대화한 시스템 레벨의 혁신입니다.
2. 하드웨어적 비효율성: 연속적 메모리 할당과 단편화(Fragmentation)
기존 프레임워크(예: HuggingFace Transformers)는 KV Cache를 메모리에 할당할 때 연속된(Contiguous) 메모리 공간을 요구했습니다. 시퀀스의 길이가 얼마가 될지 미리 알 수 없기 때문에, 모델의 최대 허용 길이(예: 2048 토큰)만큼 넉넉하게 메모리를 덩어리째 예약(Pre-allocation)하는 방식을 사용했습니다.
이는 다음과 같은 심각한 메모리 단편화(Memory Fragmentation)를 유발합니다.
- 내부 단편화 (Internal Fragmentation): 2048개의 공간을 예약했지만 모델이 100토큰만 생성하고 응답을 마친 경우, 나머지 1948개의 공간은 아무도 쓸 수 없는 버려진 공간이 됩니다. (실제 분석 결과, 기존 시스템은 KV Cache 메모리의 약 60~80%를 이렇게 낭비합니다.)
- 외부 단편화 (External Fragmentation): 메모리 전체에 빈 공간을 합치면 충분하지만, 그 공간들이 불연속적으로 흩어져 있어 새로운 긴 시퀀스를 할당하지 못하는 현상입니다.
3. 해결책: OS Paging의 도입 (Block 단위 분할)
PagedAttention은 이 문제를 해결하기 위해 컴퓨터 공학의 고전적인 지혜인 운영체제의 페이징(Paging) 기법을 가져옵니다.
OS가 가상 메모리를 고정된 크기의 '페이지(Page)'로 쪼개고 이를 물리 메모리의 흩어진 '프레임(Frame)'에 매핑하듯이, PagedAttention은 거대한 KV Cache 텐서를 고정된 크기(예: 토큰)의 블록(Block) 으로 잘게 쪼갭니다.
- 연속성의 분리: 논리적으로 연속된 토큰들이, 물리적(GPU HBM)으로는 연속적으로 저장될 필요가 없어집니다.
- 동적 할당 (Dynamic Allocation): 미리 거대한 공간을 예약하지 않고, 토큰이 생성되어 현재 블록이 가득 차면 그때그때 새로운 물리적 블록을 하나씩 할당받습니다.
4. Block Table을 통한 논리-물리 매핑
이 불연속적인 물리 블록들을 연속된 문맥처럼 다루기 위해 Block Table (OS의 Page Table 역할) 을 도입합니다.
번째 토큰의 KV 텐서를 계산하기 위해 메모리에서 데이터를 가져오는(Fetch) 논리는 다음과 같이 수학적으로 정의할 수 있습니다. (여기서 는 블록 크기입니다.)
- 논리적 블록 인덱스 (Logical Block Index):
- 블록 내 오프셋 (Offset):
- 물리적 위치 찾기:
Attention 연산을 수행할 때, GPU 커널(Kernel)은 이 Block Table을 참조하여 흩어진 물리적 블록들을 순회하며 연산을 수행합니다. 이로 인해 HBM 상의 메모리 파편화 문제가 근본적으로 해결되며, 낭비되는 메모리(내부 단편화)는 오직 가장 마지막 블록의 남은 공간() 으로 최소화됩니다.
5. System Impact: 메모리 공유(Memory Sharing)의 마법
PagedAttention의 진정한 위력은 단순히 낭비를 줄인 것을 넘어, 메모리 공유(Copy-on-Write) 가 가능해졌다는 점입니다.
- 병렬 디코딩 (Parallel Sampling / Beam Search): 하나의 프롬프트(Prompt)에서 여러 개의 다른 답변을 생성할 때, 기존에는 프롬프트의 KV Cache를 답변의 개수만큼 통째로 복사해야 했습니다.
- vLLM 환경: 다수의 출력 시퀀스가 동일한 프롬프트의 논리적 블록을 가리키도록 Block Table만 수정합니다. 메모리 복사 없이 프롬프트를 공유하다가, 생성되는 내용이 달라지는 시점(Write)에만 새로운 물리 블록을 할당(Copy-on-Write)합니다.
결과적으로 아껴진 막대한 VRAM 공간 덕분에, vLLM은 동일한 GPU에서 기존 대비 최대 2~4배 많은 요청(Batch Size) 을 동시에 처리할 수 있게 되었습니다.
6. 결론: 하드웨어, OS, 그리고 AI 알고리즘의 결합
PagedAttention은 AI 엔지니어가 단순히 모델의 구조(Architecture)만 고민할 것이 아니라, 그 모델이 실행되는 시스템의 가장 밑바닥(메모리 관리, 운영체제 이론)까지 이해해야만 진정한 퍼포먼스를 끌어낼 수 있음을 보여주는 완벽한 교보재입니다.
공간(Sparsity), 시간(Speculative), IO 속도(FlashAttention), 그리고 공간 관리(PagedAttention)에 이르는 LLM Memory Wall 최적화의 4대 기둥을 통해 실제 모델이 실행가능한 시스템의 구축을 달성했습니다.