PE Notes · AI
KV 캐시 (Key-Value Cache)
오토리그레시브 생성에서 이미 계산한 Key·Value를 저장해 재계산을 없애는 KV 캐시의 프리필·디코딩, 메모리 최적화, 속도와 보안 트레이드오프를 정리합니다.
트랜스포머 언어모델은 다음 토큰을 만들 때마다 지금까지의 문맥을 다시 봅니다. 캐시가 없으면 매 스텝마다 토큰 1부터 t까지의 Key·Value를 다시 곱합니다. 길이가 늘수록 지연과 연산이 눈덩이처럼 커집니다. 는 이미 본 토큰의 K·V를 메모리에 남겨, 새 토큰의 Query만 계산하게 하는 추론 최적화입니다.
프리필과 디코딩
Self-Attention은 Query·Key·Value 세 행렬로 문맥 벡터를 만듭니다. 생성은 한 토큰씩 이어지므로, 과거 K·V는 값이 바뀌지 않습니다. 바뀌는 것은 새로 나온 토큰의 행뿐입니다.
캐시가 없을 때 길이 (n)의 총 계산은 대략 (O(n^{2}))입니다. 캐시를 쓰면 디코딩 한 스텝은 새 토큰과 저장된 문맥의 곱, 즉 (O(n))에 가깝습니다.
| 단계 | 하는 일 |
|---|---|
| 입력 프롬프트의 K·V를 한 번에 계산해 캐시에 넣는다. 첫 토큰까지의 시간()이 여기서 결정된다. | |
| 디코딩 | 새 토큰의 Q만 만들고, 캐시된 K·V와 어텐션한다. 토큰당 시간(TPOT)이 여기다. |
| 추가 | 방금 만든 토큰의 K·V를 캐시 끝에 붙인다. |
효과는 긴 컨텍스트에서 두드러집니다. GPU 연산이 줄면 처리량도 같이 오릅니다. sLLM 서빙이든 대형 모델이든, 캐시 없이는 긴 대화를 버텨 내기 어렵습니다.
메모리를 줄이는 기법
이득의 대가는 메모리입니다. 캐시 크기는 시퀀스 길이 × 레이어 수 × 헤드 수 × 차원에 비례해 을 밀어 올립니다.
| 기법 | 무엇을 줄이나 |
|---|---|
| MQA | 여러 Query 헤드가 하나의 K·V 헤드를 공유한다. |
| 헤드를 그룹으로 묶어 K·V 개수를 중간쯤으로 낮춘다. | |
| 양자화 | K·V를 INT8·FP8 등으로 눌러 용량을 줄인다. |
| OS 페이징처럼 캐시를 페이지로 나눠 단편화를 줄인다. | |
| Sliding Window | 최근 N개만 남겨 길이를 고정한다. |
| KV 축출 | 중요도가 낮은 과거 토큰을 버린다. |
| Prefix Cache | 같은 시스템 프롬프트의 K·V를 요청 사이에 재사용한다. |
| CPU 오프로드 | VRAM이 부족하면 일부를 호스트 메모리로 내린다. |
GQA는 품질과 용량의 타협으로 많이 쓰이고, PagedAttention은 배치마다 길이가 다른 서빙에서 낭비를 줄입니다. 양자화는 sLLM 경량화의 양자화와 같은 축이되, 대상이 가중치가 아니라 런타임 캐시입니다.
한계와 격리
길이를 늘리면 캐시가 선형으로 커지고, OOM이 나면 배치를 줄여 처리량이 떨어집니다. 반대로 캐시를 비우고 매번 다시 계산하면 메모리는 살지만 속도가 죽습니다. 서빙은 이 사이에서 윈도우·양자화·페이지를 고릅니다.
| 한계 | 결과 |
|---|---|
| VRAM 선형 증가 | 최대 컨텍스트가 카드 용량에 묶인다. |
| 배치 비효율 | 요청마다 캐시 길이가 다르면 패딩·조각이 생긴다. |
| 공유 캐시 | 같은 프리픽스를 쓰는 세션 사이에 프롬프트가 샐 수 있다. |
| 캐시 추출 | 메모리에서 K·V를 읽으면 대화 문맥이 복원된다. |
멀티테넌트 서빙에서는 테넌트별 캐시 분리, 만료, 접근 제어가 성능 옵션이 아니라 보안 통제입니다. 최적화 답을 쓸 때 속도만이 아니라 격리를 한 줄 붙이면 점수가 갈립니다.
기술사 답안 포인트
관련 용어
관련 토픽
AI
PLM, 프롬프트·하네스 엔지니어링, Multimodal LLM
사전학습 언어모델이 어떻게 만들어지고, 프롬프트와 실행 환경(하네스)이 무엇을 나누며, 이미지·음성·텍스트를 한 코어에서 다루는 멀티모달 LLM을 정리합니다.
AI
sLLM — Smaller Large Language Model
초거대 LLM을 증류·양자화·가지치기로 줄여, 온프레미스와 온디바이스에서 낮은 지연으로 쓰는 소형 언어모델의 위치와 한계를 정리합니다.
AI
오토인코더·VAE, NER, 임베딩, 트랜스포머
재구성과 생성으로 갈리는 오토인코더와 VAE, 개체명 인식, 정적·문맥 임베딩, Self-Attention 트랜스포머, 그리고 서빙 체감인 TTFT·TPOT을 한 장에서 잇습니다.