AI
vLLM의 핵심 이해: PagedAttention
2025. 3. 25. 13:51

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