Gemma 4 31B QAT Q4 vs 표준 Q4 — Top1 KLD 벤치마크 결과가 이해가 안 가네요. 설명해주시거나 반박해주실 분?
Gemma 4 31B QAT Q4 vs standard Q4 — Top1 KLD benchmark results have me confused. Someone please explain or poke holes in this.
핵심 요약
QAT 모델이 표준 Q4보다 성능이 낮게 나오는 벤치마크 결과에 대해 커뮤니티의 의견을 구하는 글입니다.
- 벤치마크 의문 — QAT 모델이 표준 Q4 모델보다 성능이 낮게 측정됨
- 방법론 검토 — KLD 지표와 참조 모델 선택의 적절성 논의
- 결과 분석 — QAT 모델의 최적화 방식과 벤치마크 환경 간의 불일치 가능성
- 커뮤니티 피드백 — 참조 모델 설정 오류 및 벤치마크 지표의 한계 지적
수정됨 -
더 파고들어서 Unsloth 포스트를 다시 꼼꼼히 읽어보니까, 결과가 다르게 나온 이유가 내가 "기준(reference)" 모델로 BF16 QAT 모델을 안 써서 그런 것 같음....
우리 벤치마크에서 QAT랑 일반 Q4를 비교한 건 사과랑 오렌지를 비교한 격임. QAT 모델들은 애초에 최적화 대상이 아니었던 모델을 기준으로 평가받았거든. 일반 Q4_0이랑 Q4_K_M 비교는 유효함. "QAT가 더 구리다"는 결론에는 큰 별표를 달아야 함. 우리가 올바른 기준 모델을 안 썼기 때문에 QAT 모델이 실제로 얼마나 좋은지는 사실 알 수가 없음.
QAT Bf16 모델로 QAT 다시 돌리는 중
-- 아래는 원문:
솔직히 말할게. Claude Sonnet 4.6으로 대충 벤치 돌리고 대충 보고서 썼는데, 올리기 전에 다 검토하고 수정은 했음(AI가 쓴 대시 기호 같은 거 일일이 지우기 귀찮아서 그냥 둠). 그러니까 누가 이거 AI가 쓴 쓰레기라고 생각 안 했으면 좋겠다. 더 중요한 건, 왜 이런 직관적이지 않은 결과가 나오는지 도무지 이해가 안 가서 그래. 누가 좀 설명해주거나 내가 뭘 잘못했는지 알려줬으면 좋겠어.
배경
내가 돌리는 로컬 LLM 중에 Gemma 4 31B Q8 모델이 있는데, 이건 16GB GPU에 맞추려고 Q3으로 내렸을 때 생기는 품질 저하를 감당할 수가 없어서 CPU로만 돌리는 중임. 내 사양은 듀얼 Xeon Platinum 8358(128 스레드), 256GB DDR4야. Gemma 4 31B Q8_0은 대충 4 t/s 정도 나오는데... 느리긴 해도 배경 작업이나 밤새 돌려놓는 작업처럼 속도보다는 똑똑하고 정확하게 긴 텍스트를 추론해야 하는 품질 민감형 작업에서는 제값을 함.
새로 나온 QAT Q4 모델들이 꽤 매력적이더라고. 17GB 대 32GB니까 대역폭 제한이 있는 하드웨어에서는 생성 속도가 거의 두 배거든. 구글이 체크포인트를 내놓긴 했는데 정량적인 정확도 비교는 하나도 안 올렸더라고. Unsloth가 자기들 수치(BF16 대비 96.67% top-1)를 올렸는데 꽤 괜찮아 보였음. 나는 LocalBench에서 쓰는 지표인 KLD로 결과를 보고 싶어서 직접 벤치마크를 돌려봤어.
예상치 못한 결과: 일반 Q4_0이 QAT Q4_0을 압살함. 그것도 아주 많이. 심지어 Q4_K_M이 다 이겨버림. 이거에 대해 딱히 설명할 방법이 없어서 누가 좀 알려줬으면 좋겠어.
왜 전체 wikitext-2 테스트 셋이 아니라 처음 5,000 토큰만 썼냐고?
전체 셋은 토큰이 245,000개 정도 됨. Q8_0 기준으로 CPU에서 4 t/s로 돌리면 전체 스트라이드-1 평가하는 데만 13시간 걸림. 그래서 그냥 처음 5,000 토큰, 스트라이드 5, 모델당 샘플 위치 약 820개로 타협함. 재현 가능함 — 같은 파일, 같은 파라미터, 같은 결과.
결과가 결정론적(deterministic)이냐고? 응, 모델당 3번씩 돌렸는데 모든 실행에서 표준 편차 ±0.00%였음. Temperature=0에 CPU 추론이면 완벽하게 결정론적이지. 그러니까 3번 돌려본 걸로 노이즈는 아니라는 게 확인됨.
추론 엔진
메인라인 llama.cpp (llama-xeon8358 이미지). 실행 플래그: numactl --interleave=all , --numa distribute , --threads 64 , --no-mmap --mlock . KV 캐시는 모든 모델에서 f16으로 강제함 — KV 노이즈 섞이지 않게 가중치 양자화 품질만 딱 떼어내서 보려고. (실제 운영 환경에서는 Xeon 최적화 커널 때문에 IK_LLama 포크를 쓰는데, 이게 긴 슬라이딩 윈도우 컨텍스트에서 FA 어설션 버그가 있어서 여기선 메인라인을 썼음 — GGUF 파일이랑 수학적 계산은 똑같음.)
테스트한 모델
| Repo | 파일 | 크기 | 기준 |
|---|---|---|---|

