문서에 관해 두 번째 질문을 했더니 답이 빨리 온다. 다음 날에는 내가 짧은 답을 좋아한다는 것도 기억한다. 둘 다 기억처럼 보이지만, 해결하는 문제는 다르다.
이번 질문 안에 들어오는 것
컨텍스트 윈도는 모델 요청 하나에 쓸 수 있는 토큰의 한도다. 토큰은 모델이 입력과 출력을 처리하는 작은 단위이며, 반드시 단어 하나와 같지는 않다. 입력·출력과 일부 모델의 추론 토큰이 이 한도를 함께 쓴다. 앱에 저장된 대화 전체가 지금의 윈도 안에 들어 있다는 뜻은 아니다.
캐시에 남는 것
KV 캐시는 어텐션 기반 추론에서 앞선 토큰으로 계산한 키와 값이라는 수치 데이터를 보관한다. 답을 이어 쓸 때 같은 키와 값을 다시 계산하는 일을 줄인다. 새 토큰의 계산까지 없어지는 것은 아니다. 사용자의 취향 목록이 아니라, 생성을 효율적으로 만드는 장치다.
다음은 이해를 위한 가상 요청 순서다. 실측 결과나 특정 채팅 앱의 동작 보장이 아니다. 일반적인 인과적 트랜스포머 서비스에서 모델 설정이 같고, 설명서가 컨텍스트 한도 안에 들어간다고 가정한다.
첫 질문
첫 요청. 긴 장비 설명서를 주고 “어떻게 재시작해?”라고 묻는다. 재사용할 캐시가 없다면 서비스는 입력을 처리한 뒤 답을 생성한다. 이때 계산한 KV 상태를 재사용하도록 보관할 수 있다.
두 번째 질문
두 번째 요청. “그 전에 어떤 경고를 확인해야 해?”라고 묻는다. 앱은 대화 상태를 이용하거나 이전 대화를 다시 보내는 등의 방식으로 필요한 앞선 내용을 제공해야 한다. 바뀌지 않은 요청 앞부분과 재사용 가능한 캐시가 일치하면 접두부 캐싱으로 그 부분의 입력 처리를 건너뛸 수 있다. vLLM 문서는 같은 문서에 대한 반복 질문과 이어지는 대화를 이런 사례로 든다. 주로 줄이는 것은 입력 처리이며, 새 답을 생성하는 계산은 남는다.
앞부분을 고쳤다면
세 번째 요청. 설명서 앞부분의 문장을 고쳐 다시 묻는다. 정확한 접두부 일치를 쓰는 방식에서는 변경된 지점 앞의 같은 부분만 재사용 후보가 된다. 실제 재사용 범위는 그 안에서 서비스가 허용하는 캐시 경계까지다. 뒤쪽 단어가 대부분 같아도 예전 접두부가 되지는 않는다. OpenAI API에는 캐시 대상과 경계에 관한 조건도 있어, 눈에 보이는 글이 같다는 이유만으로 적중을 보장할 수 없다.
따라서 프롬프트 캐시는 서비스가 제공하는 재사용 기능을, KV 캐시는 이런 구현에서 재사용하는 계산 상태를 가리킨다. 연결된 개념이지만, 이름만으로 모든 서비스의 보관 기간·요청 배분·대화 처리 방식을 알 수는 없다.
다음 날의 기억
네 번째 요청은 다음 날 새 대화에서 한다. 어제의 계산 캐시가 없어도 제품의 메모리 기능이 짧은 답을 선호한다는 정보를 가져올 수 있다. ChatGPT는 메모리가 켜져 있을 때 이용 가능한 과거 맥락으로 답을 개인화한다고 설명한다. 제공 범위는 계정과 설정 등에 따라 다르며, 모든 세부 내용을 보관한다고 약속하지 않는다. 다른 제품의 연속성 구현도 제각각이다.
정보를 고를까, 계산을 다시 쓸까?
어떤 계산을 다시 하지 않을까?
조건이 맞는 앞부분의 계산 상태를 재사용
계산 재사용어떤 과거 맥락을 가져올까?
설정과 제공 범위에 따라 선호·맥락을 반영
맥락 선택이제 저장 장소의 문제
이제 질문을 둘로 나눌 수 있다. 이번 답에 어떤 정보가 제공되는가? 어떤 계산을 재사용할 수 있는가? 여기서 SK하이닉스 기사로 넘어가면 다음 문제가 보인다. 이미 계산한 수치 데이터를 서버의 어디에 둘 것인가?