쉽게 이해하는 KV cache




최근 TurboQuant가 대두되면서 KV cache 얘기가 많이 나오는데, 간략히 이에 대한 개념을 정리할 겸 글을 써봅니다.
일단 쉽게 이해하는이니까 정보 전달에 대해서부터 말해보겠습니다.
텍스트 데이터는 순서가 중요한 데이터입니다. 주가처럼 전형적인 시계열과는 조금 다르지만 앞에서 나온 정보가 뒤의 해석에 영향을 준다는 점에서 넓게 보면 같은 순서 기반 데이터라고 볼 수있습니다.
우리는 특정 단어를 볼 때 그 단어만 따로 보지 않습니다. 항상 앞에 어떤 말이 나왔는지, 즉 맥락을 함께 보고 뜻을 이해합니다. 같은 표현이라도 앞 문장에 따라 의미가 달라지기 때문입니다.
그래서 언어모델도 현재 토큰을 이해하려면, 이전에 등장한 정보들이 어느 정도 뒤로 전달되어야 합니다.
컴퓨터는 언어를 그대로 이해하지 못하기 때문에 텍스트를 숫자의 형태로 바꿔서 처리합니다.
흔히 컴퓨터는 0과 1로 대화한다고 하고 01010111111111010 과 같은 이미지나 글을 종종 보곤 하는데, 이러한 이유 때문입니다.
다만 단어를 너무 단순하게 숫자 하나로만 바꾸면 문제가 생깁니다.
예를 들어 봄, 여름, 가을, 겨울을 각각 1, 2, 3, 4로 바꾼다면 원래는 없는 크기 관계가 생깁니다.
현실에서는 겨울이 가을보다 "크다"거나, 가을이 여름보다 "높다"는 개념은 없지만 숫자로 두면 4 > 3 > 2 > 1 같은 관계가 생깁니다.
그래서 실제로는 이런 범주형 정보를 보통 벡터 형태로 바꿔 표현합니다.
예를 들면
봄 = [1, 0, 0, 0],
여름 = [0, 1, 0, 0],
가을 = [0, 0, 1, 0],
겨울 = [0, 0, 0, 1]
같은 식입니다.
즉, 컴퓨터는 언어를 단순한 번호표가 아니라 숫자의 묶음인 벡터로 바꿔 다룹니다.
그렇다면 긴 문장에서 앞쪽 정보를 뒤로 어떻게 전달할까? 라는 의문을 던져보면,
가장 직관적인 방법은 특정 정보를 저장하는 칸을 하나 두고 그 칸을 ...

아자쓰!

RNN 도 벡터연산 기반이였군요. 처음 알았습니다! 감사합니다~!

와.... 이렇게 쉽게 설명해주시다니.. 감사합니다..

친절한설명 감사합니다

그러면 터보퀀트를 통해 메모리 사용효율화에 따른 부작용은 없을까요?? 코드 형태가 너무 최적화라서 사용이 파라미터 변경이 제한적이라거나.. 하드웨어적인 조합 문제라거나..

시간이 되면 써보겠습니다....
근데 저도 잘 아는 거는 아니라 효용이 있을 지는 모르겠네요