Q4/FP8 캐시 평가 (cache evaluation)

Q4/FP8 캐시 평가 (cache evaluation)

K/V 캐시를 FP16 대신 Q4(4비트)나 FP8로 양자화하면 VRAM을 아낄 수 있는데, 정확도는 얼마나 떨어질까 하는 걸 실측해 놓은 문서예요. 결론부터 말하면 손실이 아주 작고, 심지어 Q4가 FP8보다 더 정확하기도 해요. 캐시만 줄여도 되는 상황인지 판단할 때 바로 이 페이지를 참고하면 돼요.

요약(tl;dr):

  • Q4·FP8 캐시 모두 FP16에 비해 손실이 아주 작아요
  • Q4는 의외로 FP8보다 더 정확해요
  • HumanEval에서 Q4로 인한 성능 저하는 오차 범위 안이에요
  • 긴 컨텍스트 요약에서도 출력에 뚜렷한 영향이 없어요

퍼플렉서티 (Perplexity)

다양한 풀정밀도·양자화 모델을 FP16·FP8·Q4 캐시 모드로 돌린 토큰 단위 퍼플렉서티 테스트예요. 데이터셋은 The Pile이고, 테스트당 512 토큰 행 10개를 써요.

결과는 키/밸류에 Hadamard 회전을 쓰는 새 방식으로 갱신됐고, 0.0.18 이전 버전의 옛 결과는 참고용으로 남아 있어요.

Model Precision FP16 cache FP8 cache Q4 cache (old) Q4 cache
Mistral 7B Instruct 3.0 bpw 13.33 13.43 13.41 13.37
-- 3.5 bpw 13.07 13.14 13.12 13.09
-- 4.0 bpw 12.90 12.90 12.90 12.90
-- 5.0 bpw 12.73 12.73 12.75 12.75
-- 6.0 bpw 12.73 12.75 12.74 12.74
-- FP16 12.69 12.71 12.72 12.69
Mixtral 8x7B 3.5 bpw 10.27 10.41 10.39 10.32
-- 4.0 bpw 10.09 10.26 10.23 10.19
-- 5.0 bpw 10.02 10.16 10.15 10.04
Llama2 7B 4.0 bpw 11.43 11.92 11.74 11.60
-- 5.0 bpw 11.13 11.40 11.31 11.19
-- FP16 10.91 11.24 11.16 11.05

(각 행에서 굵게 표시된 값이 해당 열의 캐시 모드 결과값이고, 원문 표다 보니 행별로 FP16이 기준점이에요.)

HumanEval

풀정밀도·양자화 모델을 FP16·Q4 캐시로 각각 돌린 HumanEval 테스트예요. 태스크당 샘플 수는 10개로 제한했고, 총 39,360개의 완성본이 24시간에 걸쳐 생성됐어요. (참고로 아래 테스트들은 0.0.18-dev의 개선 사항이 적용되기 전에 수행된 거예요.)

pass@1

Model Precision FP16 cache Q4 cache diff
Mistral 7B Instruct 3.0 bpw 21.8% 20.9% -0.9%
-- 3.5 bpw 23.1% 23.3% +0.2%
-- 4.0 bpw 23.3% 24.0% +0.7%
-- 5.0 bpw 25.1% 27.3% +2.2%
-- 6.0 bpw 25.3% 26.0% +0.7%
-- FP16 25.1% 26.0% +0.9%
Gemma 7B 3.0 bpw 11.9% 11.9%
-- 4.0 bpw 29.7% 29.8% +0.1%
-- 5.0 bpw 31.1% 31.2% +0.1%
-- 6.0 bpw 31.7% 32.0% +0.3%
-- FP16 30.4% 32.0% +1.6%
Mixtral 8x7B 4.0 bpw 33.5% 31.3% -2.2%

pass@10

Model Precision FP16 cache Q4 cache diff
Mistral 7B Instruct 3.0 bpw 43.3% 47.0% +3.7%
-- 3.5 bpw 48.2% 53.0% +4.8%
-- 4.0 bpw 45.7% 48.2% +2.5%
-- 5.0 bpw 51.2% 51.2%
-- 6.0 bpw 50.6% 51.2% +0.6%
-- FP16 49.4% 53.0% +3.6%
Gemma 7B 3.0 bpw 28.7% 29.9% +1.2%
-- 4.0 bpw 59.8% 57.9% -1.9%
-- 5.0 bpw 64.0% 62.8% -1.2%
-- 6.0 bpw 61.5% 65.2% +3.7%
-- FP16 64.0% 60.9% -3.1%
Mixtral 8x7B 4.0 bpw 59.8% 62.8% +3.0%

pass@1 기준 대부분의 모델에서 Q4 캐시의 diff가 ±1% 안쪽이라 정확도 영향이 거의 없다고 볼 수 있어요. 몇몇은 오히려 소폭 올라가기도 하는데, 이는 오차 범위 안의 변동으로 보는 게 맞아요.

요약 (Summarization)

긴 컨텍스트에서 캐시 양자화가 요약 품질에 주는 영향을 보기 위해, 2024년 3월 게재된 가디언 기사(총 8,879 토큰)를 Miqu-70B(4.25 bpw)의 기본 설정과 ### Story summary: 프롬프트로 요약했어요. 각 캐시 모드(FP16·FP8·Q4)에서 3회씩 생성한 결과를 비교했는데, 어떤 모드의 요약도 내용적으로 눈에 띄는 차이를 보이지 않았어요. FP8·Q4도 FP16과 비슷한 수준으로 기사의 핵심 사실(인물·날짜·혐의·선고 등)을 정확히 담아냈어요.

또 다른 가디언 기사(2023년 11월, 총 11,975 토큰)로도 같은 비교를 했고, 역시 세 캐시 모드 간에 질적으로 뚜렷한 차이를 보이지 않았어요.

더 알아보기

  • 다이내믹 제너레이터 — Q4 캐시 모드(ExLlamaV2Cache_Q4)가 적용되는 추론 API
  • 평가 스크립트 — Q4/Q6/Q8 캐시를 켜고 HumanEval·MMLU를 돌리는 법
  • EXL2 양자화 변환 — 캐시가 아니라 가중치 자체를 양자화하는 법
  • 원본: Q4 and FP8 cache evaluation 문서