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 문서