Qwen 3.8 27B KV f16과 q8_0은 동일하지 않음
Qwen 3.8 27B KV f16 vs q8_0 are not equivalents
핵심 요약
KV 캐시 양자화(F16 vs Q8_0)가 모델 성능에 미치는 영향과 고컨텍스트 환경에서의 실제 체감 성능에 대한 논쟁입니다.
- KV 캐시 양자화 — F16과 Q8_0의 성능 차이에 대한 사용자 경험 공유함
- 성능 저하 논란 — 고컨텍스트 환경에서 양자화가 모델 지능에 미치는 영향 논의됨
- 벤치마크 한계 — 합성 벤치마크와 실제 사용 경험 간의 괴리 지적됨
- 기술적 해결책 — 하다마드 회전 등 양자화 손실을 줄이기 위한 최신 기법 언급됨
출시 때부터 계속 테스트 중인데, 이번에 AMD R9700에서 ROCm으로 UD 3.0 돌려보니까 다들 F16이랑 KV 캐시 q8_0이 사실상 똑같다고 하길래 직접 테스트해 봤거든? 근데 확실히 차이가 있더라.
차이가 미미한 부분도 있긴 한데, F16이 구조화된 출력이나 자유로운 글쓰기에서 훨씬 더 꼼꼼하고 디테일함. 사고 과정도 거의 항상 핵심을 찌르고, 120k 컨텍스트 넘어가도 50k 미만일 때처럼 성능 유지 잘 됨(기억력도 좋고).
유튜브나 커뮤니티 글들 보면 평이 안 좋거나 갈리는 경우가 좀 보이던데, 자세히 읽어보니까 KV 캐시를 q4_0으로 쓰고 있더라고... 아우, 그건 좀 아니지.
혹시 이거 눈치챈 사람 있냐? 아니면 Qwen 모델에서만 유독 이런 건가?
이건 내 설정값이야(Q6_K_M으로도 써봤는데, 솔직히 Q4_K_KL이랑 큰 차이는 못 느꼈음):
[*]
; device / offload
device = ROCm0
n-gpu-layers = -1
n-cpu-moe = 0
flash-attn = on
swa-full = true
kv-unified = true
kv-offload = true
; threads / misc
threads = 24
threads-batch = 24
fit = off
poll = 100
verbosity = 3
warmup = false
log-timestamps = false
jinja = true
; memory
load-mode = mlock
cache-ram = 40960
cache-type-k = f16
cache-type-v = f16
; cache / slots
cache-ram = -1
ctx-checkpoints = 32
checkpoint-min-step = 8192
parallel = 1
cont-batching = false
image-min-tokens = 1024
image-max-tokens = 2048
; ------------------------------------------------------------------------
[qwen3.8-27B]
alias = coding-model,tool-model,planner-model,flash-model,vision-model,chat-model
model = /root/models/unsloth/Qwen3.8-27B-GGUF/Qwen3.8-27B-UD-Q4_K_XL.gguf
mmproj = /root/models/unsloth/Qwen3.8-27B-GGUF/mmproj-F16.gguf
; ctx-size = 262144
ctx-size = 184320
; speculative decoding: MTP + ngram-mod
spec-type = ngram-mod,draft-mtp
spec-draft-p-min = 0
spec-draft-n-max = 3
spec-draft-type-k = f16
spec-draft-type-v = f16
spec-ngram-mod-n-match = 24
spec-ngram-mod-n-min = 48
spec-ngram-mod-n-max = 64
; sampling (swap filter setParams)
temp = 1.0
top-p = 0.95
top-k = 20
min-p = 0.0
presence-penalty = 0.0
repeat-penalty = 1.0
; reasoning
reasoning = on
reasoning-format = deepseek
reasoning-preserve = true
; reasoning-budget = 8192
; chat-template-kwargs = {"preserve_thinking": true, "reasoning_effort": "medium"}
chat-template-file = /root/models/chat_template.jinja

