← AI 용어집

AI 용어집 · 심화 · 효율·인프라

페이지드 어텐션 PagedAttention

페이지드 어텐션은 LLM이 답을 만드는 동안 쌓이는 KV 캐시를 작은 블록(페이지)으로 나눠, GPU 메모리 빈 곳에 필요한 만큼만 담는 메모리 관리 기법이다. 추론 엔진 vLLM이 이 기법으로 널리 알려졌다.

용어 정보
난이도
심화 · 구조·원리까지 알아야 하는 전문 용어
추가
2026-10-12
쉽게 말하면 단체 손님을 위해 좌석 한 줄을 통째로 미리 잡아 두는 대신, 온 사람 수만큼 빈자리를 아무 데나 배정하고 좌석표로 위치를 관리하는 것과 같다. 컴퓨터 운영체제가 메모리를 페이지 단위로 나눠 관리하는 방식에서 따온 생각이다.

어떻게 작동하나

KV 캐시는 지금까지 읽고 쓴 토큰의 계산 결과를 저장해 두는 공간이라, 답이 길어질수록 커진다. 예전 방식은 요청마다 최대 길이만큼 이어진 메모리를 미리 잡아 둬서, 답이 짧게 끝나면 그 자리가 그대로 낭비됐다. 페이지드 어텐션은 KV 캐시를 일정한 토큰 수 단위의 블록으로 쪼개 두고, 필요할 때마다 빈 블록을 하나씩 내준다. 블록이 메모리 여기저기 흩어져 있어도 블록 표로 위치를 기억해 두었다가 어텐션 계산 때 찾아 읽는다.

블록 표로 흩어진 블록 관리요청 A → 블록 표; 요청 B → 블록 표; 블록 표 → 블록 · A; 블록 표 → 블록 · B; 블록 표 → 블록 · A; 블록 표 → 빈 블록(필요할 때)GPU 메모리 · KV 캐시 자리요청 A답이 길어지는 중요청 B짧은 답블록 표요청별 블록 위치블록 · A블록 · B블록 · A빈 블록다음 요청 몫필요할 때
블록 표로 흩어진 블록 관리 요청마다 필요한 만큼만 블록을 받고, 블록 표가 각 블록의 위치를 기억한다. 블록이 메모리에 흩어져 있어도 괜찮다.

왜 중요한가

낭비되는 메모리가 줄어 같은 GPU에 더 많은 요청을 동시에 올릴 수 있다. 이것이 연속 배칭과 만나면 처리량이 크게 올라간다. 같은 시스템 프롬프트로 시작하는 요청끼리 앞부분 블록을 함께 쓰기도 쉬워져, 서버 쪽 프롬프트 캐싱(prefix caching)의 바탕이 된다. 지금은 여러 추론 엔진이 비슷한 방식으로 KV 캐시를 관리한다.

알아 둘 점

직접 구현할 일은 거의 없고, vLLM을 띄울 때 로그에 찍히는 KV 캐시 블록 수나 GPU 메모리 사용 비율(gpu-memory-utilization), 블록 크기 설정으로 만난다. 감을 잡으려면 'GPU 메모리 − 모델 가중치 ≈ KV 캐시에 쓸 수 있는 자리'로 생각하면 된다. 이 자리가 클수록 동시에 받을 수 있는 요청 수와 컨텍스트 길이가 늘어난다. 페이지드 어텐션은 메모리를 덜 낭비하게 할 뿐 KV 캐시 자체를 작게 만들지는 않으므로, 컨텍스트가 아주 길면 여전히 메모리가 모자랄 수 있다.

예시

한 개발자가 GPU 한 장에 vLLM으로 모델을 띄웠더니, 모델 카드에 적힌 최대 컨텍스트 길이를 감당할 KV 캐시 자리가 부족하다는 오류가 났다고 하자. 로그에 나온 KV 캐시 블록 수를 보고, 서비스에 실제로 필요한 만큼으로 최대 컨텍스트 길이를 줄이거나 GPU 메모리 사용 비율을 높인다. 그래도 모자라면 양자화 버전 모델로 바꿔 가중치가 차지하는 자리를 줄이고, 그만큼 KV 캐시 블록을 더 확보한다.

함께 보면 좋은 용어