LLM(대형 언어 모델)을 실제로 서빙(inference)할 때 가장 큰 고민은 속도와 자원 효율입니다. 특히 사용자 수가 많아질수록, 토큰을 캐시하고 불러오는 구조가 성능에 직접적인 영향을 미치게 됩니다.
그 중심에 있는 것이 바로 PagedAttention입니다.
이 글에서는 GPU 메모리 관리 방식부터 기존 Attention 캐시 구조의 문제점, 그리고 PagedAttention이 이를 어떻게 해결하는지를 단계별로 설명합니다.
📦 1. GPU 메모리는 왜 "블록 단위"로만 할당할까?
GPU는 CPU보다 훨씬 많은 연산 유닛을 가지고, 이 유닛들이 동시에 대량의 데이터를 처리하기 위해 설계되어 있습니다.
그러기 위해 GPU는 메모리를 이렇게 다룹니다:
- 연속된 고정 크기의 블록(chunk) 단위로만 메모리를 할당합니다.
- 일반적으로는 128개 토큰 또는 256개 토큰 정도가 하나의 블록 크기로 사용됩니다.
🧠 예: 메모리를 1칸씩 자유롭게 할당하면 오버헤드가 커지고,
연산 유닛들이 효율적으로 데이터를 읽어올 수 없게 됩니다.
그래서 일정한 크기의 “블록”으로 한 번에 가져오는 구조(coalesced access)를 유지합니다.
📌 2. 기존 Attention 캐시는 어떻게 동작했을까?
LLM에서 다음 토큰을 예측할 때 필요한 정보는 다음과 같습니다:
- 이전 토큰들의 Key (K), Value (V) 벡터
- 이 K/V 벡터는 레이어별로, 모든 토큰마다 저장되어야 함
기존 방식 요약:
- 시퀀스마다 고정된 크기의 연속된 메모리 공간을 할당받음
- K/V 값은 이 공간에 토큰 순서대로 저장됨
- 다음 토큰 예측 시, 저장해둔 K/V 값을
slice해서 불러와 사용
예시:
# 기존 방식 (시퀀스 길이 = 5)
K_all = K_cache[layer][:5] # 연속된 5칸
V_all = V_cache[layer][:5]
❗️3. 기존 방식의 한계
이 구조는 단순하지만 심각한 단점이 있습니다.
| 문제점 | 설명 |
|---|---|
| 낭비 | 짧은 시퀀스도 블록 단위로 할당 → 안 쓰는 칸 많음 |
| 메모리 단편화 | 시퀀스마다 공간 따로 할당 → GPU 메모리 공간이 조각남 |
| 재사용 어려움 | 시퀀스가 끝나도 공간을 다른 요청에 바로 할당하기 어려움 |
| 배치 처리 어려움 | 시퀀스 길이 다르면 병렬 처리 비효율 |
💡 4. 그래서 등장한 PagedAttention
PagedAttention은 기존 K/V 캐시의 비효율적인 메모리 사용을 해결하기 위해 등장한 구조입니다.
GPT, LLaMA, Mistral 등의 모델을 훨씬 효율적으로 서빙할 수 있도록 만들어졌으며,
vLLM, OpenAI, Google 등의 최신 추론 시스템에서 실제로 사용되고 있습니다.
핵심 개념은 이렇습니다:
✅ "GPU 메모리를 페이지 단위로 나누고, 유연하게 할당하고 재사용한다."
📄 페이지란?
- 하나의 페이지는 고정된 크기(예: 128칸)의 메모리 블록
- 시퀀스는 필요한 만큼 페이지를 조립해서 사용 가능
- 여러 시퀀스가 동일한 페이지를 함께 나눠 쓸 수도 있음
📌 5. PagedAttention의 작동 방식 예시
예시 1: 시퀀스 A가 5칸 필요할 때
- 기존 방식:
- 1페이지 (4칸) → 꽉 채움
- 1페이지 (4칸) → 1칸만 사용 → 3칸 낭비
- PagedAttention:
- 1페이지 (4칸) → A가 독립적으로 사용
- 1페이지 (4칸) → A가 1칸 사용 + B가 3칸 함께 사용
✅ 즉, 페이지 안의 슬롯을 여러 시퀀스가 공유하여 쓸 수 있음
🧠 6. 내부적으로는 이렇게 관리됨
PagedAttention은 다음과 같은 메타데이터 구조를 활용합니다:
| 자료구조 | 역할 |
|---|---|
| TokenTable | 각 토큰이 어떤 페이지의 몇 번째 칸에 있는지 매핑 |
| BlockTable | 페이지 상태 및 사용 여부 추적 |
| SlotAllocator | 빈 칸 추적하고 새로운 토큰 할당 시 결정 |
이렇게 해서 어떤 토큰이 어떤 페이지에 있는지를 빠르게 참조할 수 있고,
필요한 페이지들만 가져와서 Sparse하게 계산합니다.
✅ 7. 성능 개선 효과
PagedAttention의 결과는 놀라운 수준의 추론 성능 개선으로 이어집니다.
| 항목 | 기존 방식 | PagedAttention |
|---|---|---|
| 메모리 효율 | 낮음 | 매우 높음 |
| 시퀀스 수 | 수십~수백 개 | 수천 개 이상 병렬 가능 |
| 재사용성 | 낮음 | 높음 |
| 연산 최적화 | 블록 기반 강제 | 유연한 스케줄링 가능 |
✅ 정리하며
PagedAttention은 단순히 "빠른 Attention"이 아니라,
GPU 메모리 모델의 제약을 우회하면서도 고성능 추론을 가능하게 만든 구조적 혁신입니다.
GPT처럼 수십억 파라미터를 가진 모델이 실시간으로 동작할 수 있는 데에는
단순히 모델의 구조만이 아니라,
이런 메모리 효율적인 서빙 전략들이 함께 작동하기 때문입니다.
'AI' 카테고리의 다른 글
| 학습시킨 LLM 얼마나 똑똑한지 알고있니? (0) | 2025.12.10 |
|---|---|
| vLLM의 핵심 이해: Semantic-Aware Scheduling (0) | 2025.03.25 |
| vLLM 이란? (0) | 2025.03.25 |
| 트랜스포머 (Transformer) #3 (0) | 2025.03.24 |
| 트랜스포머 (Transformer) #2 (0) | 2025.02.14 |