주제: IO-5 vLLM Paged Attention (KV Cache Paging 기반 서빙 최적화)

분류: llm

타입: concept

난이도: 중상

선수지식: 있음 — KV Cache, LLM Inference, GPU 메모리 구조

문제 설정

LLM inference에서 가장 큰 메모리 사용 요소 중 하나는 KV Cache입니다.

KV cache 메모리:

Memorylayers×heads×sequence×dhead

즉 sequence length가 증가할수록 KV cache가 크게 증가합니다.

문제는 실제 LLM 서비스에서는 요청마다 서로 다른 길이의 context가 존재한다는 점입니다.

직관 비유

이를 해결하기 위해 vLLM은 Paged Attention을 도입했습니다.

1. 기존 KV Cache 문제

일반적인 KV cache는 sequence마다 연속 메모리를 할당합니다.

Request A: [KV KV KV KV KV ....]
Request B: [KV KV KV ....]

문제:

수식

Memorywastemaxsequenceactualsequence

왜 문제인가

많은 요청을 동시에 처리하기 어렵습니다.

2. Paged Attention 아이디어

vLLM은 KV cache를 page 단위로 관리합니다.

Page1 Page2 Page3 Page4 ...

각 sequence는 여러 page를 참조합니다.

Request A → Page1 Page5 Page9
Request B → Page2 Page3

직관 설명

운영체제의 virtual memory paging과 유사합니다.

주의점

연속 메모리가 필요하지 않습니다.

3. KV Cache Paging 구조

KV cache는 다음 구조를 가집니다.

KVcache=page1,page2,...,pagen

각 request는 page table을 가집니다.

Sequence[pageindices]

기호 의미

왜 필요한가

메모리 사용을 유연하게 만들 수 있습니다.

4. Attention 계산

Paged attention에서는 KV cache를 page 단위로 읽습니다.

attention 식:

Attention(Q,K,V) = softmax(QKT/√d_k)V

하지만 K,V는 page에서 로드됩니다.

K = concat(K_page1, K_page5, K_page9)

왜 중요한가

sequence 메모리가 분산되어 있어도 attention 계산이 가능합니다.

5. Memory Fragmentation 감소

방법 메모리 효율
contiguous KV cache 낮음
paged KV cache 높음

Paged attention은 GPU 메모리를 더 효율적으로 사용합니다.

6. Continuous Batching

Paged attention은 continuous batching을 가능하게 합니다.

t1: request A 시작
t2: request B 추가
t3: request C 추가

새 요청이 batch에 동적으로 추가됩니다.

왜 중요한가

GPU utilization이 크게 향상됩니다.

7. Throughput 향상

Paged attention은 다음 효과를 가집니다.

결과:

Throughput 2~4배 향상

8. vLLM 시스템 구조

Request Queue
↓
Continuous Batching
↓
Paged KV Cache
↓
GPU Inference

핵심 기술

코드-수식 연결

개념 코드 설명
vLLM engine from vllm import LLM LLM inference engine
generate llm.generate() paged attention 기반 생성
KV cache paged_kv_cache page 기반 cache

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)