
대부분의 사람들은 추론(inference) 단계에서 실제로 중요한 병목 지점(bottleneck)을 이해하지 못한 채 LLM을 학습합니다.
요약
본 글은 LLM 추론 과정에서 핵심 병목 지점인 KV 캐시의 원리와 최적화 기법을 심층적으로 다룹니다. 토큰 생성 시 과거 컨텍스트를 재사용하는 KV 캐싱의 작동 방식부터, PagedAttention, MQA/GQA 등 고급 트레이드오프까지 상세히 설명합니다.
핵심 포인트
- LLM 추론의 핵심 병목은 KV 캐시이며, 이를 이해해야 합니다.
- KV 캐시는 모델의 메모리가 아닌 임시 추론 상태입니다.
- PagedAttention과 같은 기술이 GPU 메모리 효율성을 높입니다.
- Prefill 단계와 Decode 단계별 최적화 포인트를 알아야 합니다.
대부분의 사람들은 추론(inference) 단계에서 실제로 중요한 병목 지점을 이해하지 못한 채 LLM을 학습합니다.
트랜스포머(transformer)가 아닙니다.
바로 KV 캐시입니다.
LLM이 새로운 토큰을 생성할 때마다, 이전에 나온 모든 내용의 컨텍스트가 필요합니다. 매 단계마다 과거의 키/값(key/value) 상태를 재계산하는 것은 엄청난 양의 계산 자원을 낭비하게 만듭니다.
KV 캐싱은 판도를 바꿉니다:
한 번 계산 → K/V 저장 → 재사용 → 더 빠르게 생성합니다.
하지만 이 간단한 최적화는 전체적인 엔지니어링 트레이드오프(trade-offs)의 사슬을 만듭니다:
→ 왜 KV 캐시는 토큰마다 증가하는가?
→ 긴 컨텍스트가 왜 그렇게 많은 GPU 메모리를 소모하는가?
→ 디코드(decode) 단계는 왜 종종 메모리 대역폭(memory-bandwidth)에 의해 제한되는가?
→ 왜 MHA에서 MQA로, 그리고 GQA로 이동했는가?
→ MLA는 실제로 무엇을 압축하고 있는가?
→ PagedAttention은 왜 존재하는가?
→ 프리픽스 캐싱(prefix caching)은 요청 간 작업량을 어떻게 절약하는가?
→ 캐시를 오프로드하거나 양자화할 수 있는가?
→ 캐시가 더 이상 맞지 않을 때 무슨 일이 발생하는가?
그리고 가장 중요한 점:
KV 캐시는 모델의 '메모리'가 아닙니다.
그것은 임시 추론 상태(temporary inference state)입니다.
저는 KV 캐싱을 기본 원리부터 설명하는 기술 핸드북을 정리했습니다:
01 정확히 무엇이 캐시되는지
02 K/V 텐서 형태(tensor shapes)
03 프리필(Prefill) 대 디코드(Decode)
04 KV 캐시 메모리 계산
05 MHA 대 MQA 대 GQA 대 MLA
06 컨텍스트 길이 스케일링
07 PagedAttention
08 프리픽스 캐싱
09 오프로딩 + 양자화(quantization)
10 제거(Eviction) + 프로덕션 트레이드오프
구체적인 계산, 다이어그램, 원본 논문, 그리고 현재 프레임워크 문서를 포함합니다.
LLM 추론을 구축하거나 최적화하고 있다면, KV 캐시를 이해하는 것은 선택 사항이 아닙니다.
이는 현대 LLM 서빙(serving) 방식의 큰 부분을 설명해 줍니다.
핸드북은 여기에서 공유합니다 ↓
저장하세요. 다시 돌아오게 될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 X @nainsidwiv50980 (자동 발견)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기