Yolo 비전 선전
선전
지금 참여하기
용어집

페이지별 주의력

PagedAttention이 어떻게 LLM 메모리 관리와 KV 캐시 효율성을 최적화하는지 알아보세요. 처리량에 미치는 영향과 Ultralytics 성능과 비교한 결과를 확인해 보세요.

PagedAttention은 대규모 언어 모델(LLM)의 추론 속도와 처리량을 최적화하기 위해 설계된 고효율 메모리 관리 알고리즘입니다. 기존 운영 체제의 가상 메모리 및 페이징 개념에서 영감을 얻은 이 기술은 텍스트 생성 과정에서 발생하는 키-값 캐시(흔히 KV 캐시라고도 함)와 관련된 막대한 메모리 소비 문제를 해결합니다. 캐시에 필요한 연속적인 메모리 블록을 더 작고 비연속적인 "페이지"로 분할함으로써, PagedAttention은 내부 및 외부 메모리 조각화를 효과적으로 제거합니다. 이를 통해 AI 서버는 훨씬 더 많은 요청을 동시에 일괄 처리할 수 있어 GPU 극대화합니다.

페이지별 주의력 대 순간적 주의력

두 기술 모두 신경망 성능을 최적화하지만, 각각 다른 병목 현상을 해결 대상으로 삼습니다. Flash Attention은 GPU 전반에 걸친 느린 메모리 읽기 및 쓰기 작업을 최소화하여 어텐션 메커니즘 자체의 속도를 높이는 연산 수준 최적화 기법입니다. 반면, PagedAttention은 메모리 할당 전략입니다. 이 기법은 순전히 컨텍스트 윈도우용 메모리가 어떻게 구조화되고 저장되는지에 초점을 맞추며, 크고 비효율적인 메모리 블록을 미리 할당하지 않고도 동적으로 확장할 수 있게 해줍니다.

실제 애플리케이션

PagedAttention이 실현한 메모리 효율성은 대규모 생성 모델이 실전 환경에 배포되는 방식을 혁신적으로 변화시켰습니다.

  1. 고속 처리 API 제공: GPT-4와 유사한 모델을 제공하는 프로덕션 시스템은 vLLM과 같은 프레임워크를 통해 PagedAttention을 활용합니다. 서로 다른 사용자 요청 간에 메모리 블록을 공유함으로써, 제공업체는 동일한 하드웨어에서 최대 4배 더 많은 사용자에게 서비스를 제공할 수 있어, 클라우드 기반 AI 서비스 운영 비용을 획기적으로 절감할 수 있습니다.
  2. 복합 디코딩 전략: AI 모델이 한 번에 여러 개의 잠재적 응답을 생성할 때(빔 검색이나 병렬 샘플링과 같은 경우), PagedAttention은 이러한 병렬 시퀀스가 동일한 기본 메모리 페이지를 안전하게 공유할 수 있도록 합니다. 이를 통해 시스템이 중복된 메모리를 생성하는 것을 방지하여, 복잡한 추론 작업의 속도를 크게 향상시킵니다.

컴퓨터 비전에서의 메모리 효율성

PagedAttention은 주로 자연어 처리 분야에서 활용되지만, 엄격한 메모리 최적화라는 기본 원칙은 컴퓨터 비전(CV) 분야에서도 마찬가지로 중요합니다. 하드웨어 자원이 제한된 엣지 기기에 모델을 배포할 때는 메모리 과다 사용을 방지하는 것이 필수적입니다. Ultralytics 엔드투엔드(end-to-end) 방식의 NMS(네트워크 관리 시스템)가 필요 없는 아키텍처를 활용하여 복잡한 캐시 관리의 필요성을 배제함으로써, 네이티브 방식으로 실시간 추론 효율성을 달성합니다.

객체 탐지 파이프라인의 메모리 및 내보내기 요구 사항을 원활하게 처리하고자 하는 개발자들을 위해, Ultralytics 최적의 하드웨어 실행을 위해 모델을 패키징하는 자동화된 배포 도구를 Ultralytics .

코드 예제

PagedAttention은 서빙 프레임워크 내부에서 작동하며, 표준 어텐션 함수를 최적화된 Cuda 대체합니다. 다음은 PyTorch에서 표준 어텐션을 어떻게 정의할 수 있는지 보여주는 개념적인 예시입니다. 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 업계는 첨단 메모리 할당 전략을 활용하여 가능성의 한계를 계속해서 넓혀가고 있으며, 이를 통해 방대한 규모의 파운데이션 모델을 전 세계적으로 효율적으로 확장하고 활용할 수 있도록 하고 있습니다.

함께 AI의 미래를 만들어 갑시다!

미래의 머신러닝 여정을 시작하세요