KV 캐시
KV Cache · 고급
트랜스포머 기반 언어 모델이 토큰을 하나씩 생성할 때 이미 계산한 어텐션의 키(Key)와 값(Value) 벡터를 저장해 두었다가 다음 토큰 생성 시 재사용함으로써 중복 계산을 없애는 추론 최적화 기법을 말한다.
자기회귀 방식으로 토큰을 생성하는 언어 모델은 매 스텝마다 지금까지 나온 모든 토큰에 대한 어텐션을 다시 계산하면 시퀀스가 길어질수록 연산량이 눈덩이처럼 불어나 응답 속도가 크게 떨어진다. 이를 막기 위해 각 트랜스포머 레이어는 이전 토큰들에서 계산된 키·값 벡터를 GPU 메모리에 캐시로 저장해 두고, 새 토큰이 들어오면 그 토큰의 쿼리만 새로 계산해 캐시된 키·값과 어텐션을 수행한 뒤 결과를 캐시에 이어붙인다. 실무에서는 긴 대화나 문서를 처리하는 서비스의 요청당 메모리 사용량을 산정하거나, 추론 서버가 동시에 처리할 수 있는 요청 수(배치 크기)를 결정할 때, 또는 캐시를 효율적으로 나눠 관리하는 기법을 도입할 때 KV 캐시 크기가 핵심 변수로 등장한다. 캐시 크기는 시퀀스 길이와 배치 크기에 비례해 커지기 때문에 긴 컨텍스트를 다루는 서비스일수록 GPU 메모리 부족의 주된 원인이 되며, 이를 줄이기 위해 그룹쿼리 어텐션 같은 모델 구조 변경이나 캐시 양자화 기법이 함께 활용된다. KV 캐시는 계산 결과를 재사용하는 것일 뿐 모델의 출력값 자체를 바꾸지 않는다는 점을 흔히 오해하는 경우가 있다.
함께 보기
최적화 분야의 다른 용어
모델별 가격·컨텍스트 길이 같은 수치는 이 글에 쓰지 않습니다. 모델 카탈로그에서 출처와 확인일이 붙은 값만 보여줍니다.