Paged Attention

김동준·2025년 10월 20일

PagedAttention은 KV 캐시를 효율적으로 관리하기 위해 운영체제의 가상 메모리 페이징 개념을 적용한 기술입니다. vLLM에서 처음 도입되었습니다.

기존 KV 캐시의 문제점

1. 메모리 낭비 (Internal Fragmentation)

예상 최대 길이: 2048 토큰
실제 생성: 500 토큰
→ 1548 토큰 분량의 메모리 낭비!

2. 메모리 단편화 (External Fragmentation)

요청 A: [████░░░░] 일부 사용
요청 B: [██████░░] 일부 사용
→ 중간에 사용되지 않는 공간이 흩어져 있음

3. 유연하지 못한 할당

  • 요청마다 최대 길이를 미리 예약해야 함
  • 동적으로 늘리거나 줄이기 어려움

PagedAttention의 해결책

핵심 아이디어

OS의 가상 메모리처럼 KV 캐시를 작은 블록(페이지)으로 나누어 관리합니다.

기존 방식:
요청 A: [████████████████] (연속된 큰 메모리 블록)

PagedAttention:
요청 A: [페이지1] → [페이지3] → [페이지5]
         ████      ████      ████
물리 메모리: [1][2][3][4][5][6]...

주요 구성 요소

1. 논리적 블록 (Logical Blocks)

  • 사용자가 보는 연속적인 KV 캐시
  • 가상 주소 공간

2. 물리적 블록 (Physical Blocks)

  • GPU 메모리의 실제 페이지 (예: 16~64 토큰 단위)
  • 비연속적으로 저장 가능

3. 블록 테이블 (Block Table)

  • 논리적 블록 → 물리적 블록 매핑
  • OS의 페이지 테이블과 동일한 개념

작동 예시

토큰 생성 과정:

초기 (0~16 토큰):
논리 블록 0 → 물리 블록 3
[████████████████]

17~32 토큰 생성:
논리 블록 0 → 물리 블록 3
논리 블록 1 → 물리 블록 7 (새로 할당)
[████████████████][████████████████]

33~48 토큰 생성:
논리 블록 0 → 물리 블록 3
논리 블록 1 → 물리 블록 7
논리 블록 2 → 물리 블록 2 (새로 할당)

주요 장점

1. 메모리 효율성 향상

  • 내부 단편화 거의 제거 (페이지 크기만큼만 낭비)
  • 외부 단편화 최소화
  • 메모리 사용량 55% 감소 (vLLM 논문 기준)

2. 동적 할당

토큰을 생성하면서 필요한 만큼만 할당
초기: 1 페이지
중간: 3 페이지로 확장
종료: 5 페이지까지 성장

3. 메모리 공유 (Copy-on-Write)

Beam Search나 Parallel Sampling 시:

원본 프롬프트: [페이지1][페이지2]
↓
생성 경로 A: [페이지1][페이지2] → [페이지5] (공유)
생성 경로 B: [페이지1][페이지2] → [페이지6] (공유)

공통 부분은 메모리에 한 번만 저장!

4. 배치 처리 개선

  • 더 많은 요청을 동시에 처리 가능
  • 처리량(Throughput) 2~4배 향상

구현 세부사항

블록 크기 선택:

  • 너무 작으면: 관리 오버헤드 증가
  • 너무 크면: 내부 단편화 증가
  • 일반적으로: 16~64 토큰

메모리 할당자:

# 의사 코드
class BlockAllocator:
    def allocate_block(self):
        # 빈 물리 블록 찾아서 할당
        return physical_block_id
    
    def free_block(self, block_id):
        # 블록 해제하여 재사용 풀에 반환
        pass

성능 비교

vLLM (PagedAttention) vs 기존 시스템:

지표개선도
메모리 사용량55% 감소
처리량 (Throughput)2~4배 향상
배치 크기2~3배 증가 가능
지연시간 (Latency)유사하거나 약간 향상

실제 응용

1. vLLM

  • PagedAttention의 원조
  • 가장 널리 사용되는 LLM 추론 엔진

2. TensorRT-LLM

  • NVIDIA의 최적화 라이브러리
  • PagedAttention 개념 차용

3. 상용 서비스

  • 많은 LLM API 서비스가 내부적으로 사용
  • 비용 절감과 성능 향상에 기여

한계점

  • 추가 간접 참조: 블록 테이블 조회 오버헤드 (하지만 미미함)
  • 구현 복잡도: 메모리 관리 로직이 복잡해짐
  • 페이지 크기 튜닝: 워크로드에 따라 최적값이 다름

PagedAttention은 LLM 서빙 효율성을 혁신적으로 개선한 기술로, 현재 대부분의 고성능 LLM 서비스에서 표준처럼 사용되고 있습니다!

profile
Story Engineer

0개의 댓글