PagedAttention
PagedAttention이 LLM 메모리 관리와 KV 캐시 효율성을 최적화하는 방식을 알아보세요. 처리량에 미치는 영향과 Ultralytics YOLO26 성능과의 비교를 살펴보세요.
PagedAttention은 대규모 언어 모델(LLMs)의 추론 속도와 처리량을 최적화하도록 설계된 매우 효율적인 메모리 관리 알고리즘입니다. 기존 운영 체제의 가상 메모리와 페이징 개념에서 영감을 얻은 이 기술은 텍스트 생성 중 키-값 캐시(흔히 KV 캐시라고 함)와 관련된 막대한 메모리 사용량을 해결합니다. PagedAttention은 캐시에 필요한 연속적인 메모리 블록을 더 작고 비연속적인 "페이지"로 분할하여 내부 및 외부 메모리 단편화를 효과적으로 제거합니다. 이를 통해 AI 서버는 더 많은 요청을 동시에 배치할 수 있으므로 GPU 활용률을 극대화할 수 있습니다.
PagedAttention과 Flash Attention 비교#
두 기술 모두 신경망 성능을 최적화하지만 서로 다른 병목을 대상으로 합니다. Flash Attention은 GPU 계층 전반에서 느린 메모리 읽기 및 쓰기를 최소화하여 어텐션 메커니즘 자체의 속도를 높이는 연산 수준의 최적화입니다. 반면 PagedAttention은 메모리 할당 전략입니다. 컨텍스트 윈도우의 메모리가 구성되고 저장되는 방식에만 집중하여, 크고 낭비적인 메모리 블록을 미리 할당하지 않고도 동적으로 확장할 수 있도록 합니다.
실제 적용 사례#
PagedAttention이 제공하는 메모리 효율성은 대규모 생성형 모델을 프로덕션 환경에 배포하는 방식을 변화시켰습니다.
-
고처리량 API 서빙: GPT-4와 유사한 모델을 서빙하는 프로덕션 시스템은 vLLM과 같은 프레임워크를 통해 PagedAttention을 활용합니다. 서로 다른 사용자 요청 간에 메모리 블록을 공유함으로써, 서비스 제공업체는 동일한 하드웨어에서 최대 4배 많은 사용자를 지원할 수 있으며 클라우드 기반 AI 서비스 운영 비용을 크게 줄일 수 있습니다.
-
복잡한 디코딩 전략: AI 모델이 한 번에 여러 잠재적 응답을 생성할 때(빔 서치 또는 병렬 샘플링 등), PagedAttention을 사용하면 이러한 병렬 시퀀스가 동일한 기반 메모리 페이지를 안전하게 공유할 수 있습니다. 이를 통해 시스템이 중복 메모리를 복제하지 않으므로 복잡한 추론 작업을 훨씬 빠르게 수행할 수 있습니다.
컴퓨터 비전에서의 메모리 효율성#
PagedAttention은 주로 자연어 처리에 사용되지만, 엄격한 메모리 최적화라는 기본 원칙은 컴퓨터 비전(CV)에서도 똑같이 중요합니다. 하드웨어 제약이 있는 엣지 디바이스에 모델을 배포할 때는 메모리 비대화를 방지하는 것이 필수적입니다. Ultralytics YOLO26은 종단 간 NMS-free 아키텍처를 활용하여 무거운 캐시 관리가 필요하지 않도록 함으로써 실시간 추론 효율성을 기본적으로 달성합니다.
객체 감지 파이프라인의 메모리 및 export 요구 사항을 원활하게 처리하려는 개발자를 위해 Ultralytics Platform은 최적의 하드웨어 실행을 위해 모델을 패키징하는 자동화된 배포 도구를 제공합니다.
코드 예제#
PagedAttention은 서빙 프레임워크의 내부에서 작동하며, 표준 어텐션 함수를 최적화된 CUDA 커널로 대체합니다. 아래는 PyTorch에서 표준 어텐션을 정의하는 방법을 보여 주는 개념적 예시로, vLLM과 같은 시스템은 모델 배포 중 이를 자동으로 가로채 페이징을 사용해 최적화합니다.
import torch
import torch.nn.functional as F
# Simulated Key, Query, and Value tensors for a standard attention block
batch_size, num_heads, sequence_length, head_dim = 1, 8, 1024, 64
query = torch.randn(batch_size, num_heads, sequence_length, head_dim)
key = torch.randn(batch_size, num_heads, sequence_length, head_dim)
value = torch.randn(batch_size, num_heads, sequence_length, head_dim)
# Standard attention computation (often replaced by PagedAttention kernels in production LLM servers)
attention_output = F.scaled_dot_product_attention(query, key, value)
print(f"Computed attention shape: {attention_output.shape}")고급 메모리 할당 전략을 활용함으로써 AI 업계는 가능한 범위의 한계를 계속 확장하고 있으며, 대규모 기반 모델을 전 세계에서 효율적으로 확장하고 이용할 수 있도록 보장합니다.









