메모리와 모델

LLM KV 캐시란? 문맥 메모리와 속도 이해

이전 토큰의 계산 상태를 보관해, 새 토큰마다 과거 전체를 다시 계산하지 않게 합니다.

쉽게 말하면

KV 캐시는 AI가 지금까지 읽은 대화의 계산 메모입니다. 이 메모가 있어야 답변을 이어 쓸 때 앞부분을 매번 처음부터 다시 계산하지 않습니다.

장비를 고를 때

대화를 길게 하거나 여러 사람이 함께 쓰려면 모델 파일이 들어간 뒤에도 KV 캐시용 메모리가 남아 있어야 합니다.

이 글에서 확인할 내용

  • KV 캐시는 모델 가중치와 별도의 실행 중 메모리입니다.
  • 입력과 출력 토큰이 늘수록 일반적으로 커집니다.
  • 캐시 양자화는 메모리를 줄이지만 짧은 문맥에서는 느릴 수 있습니다.

왜 대화 내용을 따로 기억하나

LLM은 답변의 다음 토큰을 만들 때 앞에서 나온 내용을 다시 참고합니다. 앞부분에서 이미 끝낸 계산을 저장하지 않으면 새 토큰을 만들 때마다 처음부터 같은 계산을 반복해야 합니다.

KV 캐시는 이 계산 결과를 모델의 여러 층별로 보관하고 새로 생긴 부분만 더합니다. 대화 내용 자체를 복사해 두는 저장소라기보다, 빠르게 이어 쓰기 위한 계산 메모에 가깝습니다.

대화가 길수록 메모리를 더 씁니다

KV 캐시는 입력한 질문과 문서, 이미 생성한 답변이 길어질수록 커집니다. 모델의 구조와 캐시 정밀도, 동시에 처리하는 대화 수에 따라서도 크기가 달라집니다.

모델이 최대 128K 토큰을 지원한다고 해도 내 장비에서 그 길이를 쓸 수 있다는 뜻은 아닙니다. 모델 파일과 긴 대화용 캐시가 메모리에 함께 들어가는지 확인해야 합니다.

긴 입력에서 계산한 내용을 서랍에 저장하고 다음 토큰 생성 때 필요한 값을 다시 꺼내 쓰는 KV 캐시 개념 그림
KV 캐시는 앞선 입력에서 계산한 값을 보관해 다시 계산하는 일을 줄입니다. 입력이 길수록 이 보관 공간도 커집니다.

KV 캐시도 압축할 수 있습니다

KV 캐시를 4비트나 8비트로 줄여 저장하면 긴 대화에서 메모리를 아낄 수 있습니다. 모델 파일을 Q4로 내려받는 것과 KV 캐시를 4비트로 쓰는 것은 서로 다른 설정입니다.

압축하고 다시 푸는 작업이 추가되므로 짧은 대화에서는 오히려 조금 느려질 수 있습니다. 메모리가 부족할 때 쓰는 선택지로 보고, 켠 뒤 답변 품질과 속도를 비교하세요.

회전 캐시와 슬라이딩 윈도

캐시 크기에 상한을 두고 오래된 토큰 상태를 버리는 회전 캐시나 슬라이딩 윈도 방식은 메모리가 무한히 늘지 않게 합니다. 대신 버려진 세부 정보를 이후 생성이 직접 참조할 수 없습니다.

모델이 원래 슬라이딩 어텐션으로 학습되었는지, 런타임이 임의로 캐시를 잘라내는지에 따라 품질 영향이 다릅니다. 설정 숫자만 늘리기 전에 모델 구조를 확인해야 합니다.

MTP와 배칭에서의 주의점

추측 디코딩은 여러 후보 위치를 한꺼번에 검증하므로 일반 단일 토큰 디코드와 캐시 갱신 모양이 다를 수 있습니다. 특정 MTP 구현과 KV 양자화 조합은 지원 범위가 제한될 수 있습니다.

동시 요청이 늘면 요청마다 KV 상태가 필요합니다. 서버 처리량을 높이려면 가중치가 들어가는지만 볼 것이 아니라 남은 메모리로 몇 개의 캐시 블록을 유지할 수 있는지 봐야 합니다.