KV cache 압축 측정 오류와 2비트 절감 실험
긴 문맥을 쓰는 은 이전 단어들의 계산 결과를 에 저장해 다음 단어를 더 빨리 만듭니다. 이 실험에서는 품질을 재는 흔한 방식에 문제가 있다고 봅니다. 많은 검사는 캐시를 끈 상태에서 한 번만 계산하기 때문에, 압축된 캐시를 실제로 읽지 않습니다.
그래서 전체 정밀도, 4비트, 2비트 설정이 모두 3.6416이라는 같은 값을 냈고, 값 캐시 압축 오류를 잡아내지 못했습니다. 이를 고치기 위해 먼저 문맥을 채운 뒤 단어를 하나씩 생성하면서 압축된 캐시를 실제로 읽는 방식으로 다시 측정했습니다. 새 방법은 값 벡터를 로 돌린 뒤 2비트 uniform 을 적용합니다.
키는 KIVI int4 방식을 그대로 두고 값만 바꿨습니다. 수정된 측정에서는 2비트 값 캐시가 KIVI 4비트와 소수 셋째 자리까지 비슷한 품질을 보였고, 메모리는 약 20% 덜 썼으며, fp16보다 약 4배 적게 썼습니다. 결과는 Llama 2 7B와 TinyLlama에서 확인됐고, 다른 기계에서도 재현됐습니다.
핵심 포인트
- 기존 검사는 캐시를 끈 상태로 재서 압축 오류를 놓칠 수 있습니다.
- 전체 정밀도, 4비트, 2비트가 모두 3.6416으로 같게 나와 측정 방식이 잘못됐음을 보였습니다.
- 압축된 캐시를 실제로 읽도록 문맥 채우기와 한 단어씩 생성을 함께 테스트했습니다.
- 와 2비트 uniform 으로 값 캐시를 더 작게 만들었습니다.
- KIVI 4비트와 비슷한 품질을 내면서 메모리를 약 20% 줄이고, fp16 대비 약 4배 줄였습니다.