MTP KV 캐시 양자화는 공짜 점심일까?
Quantizing MTP KV Cache = free lunch?
핵심 요약
Qwen 모델의 MTP 레이어 KV 캐시를 양자화하여 VRAM을 절약하고 성능을 유지하는 방법을 실험함.
- MTP 레이어 — Qwen 모델의 MTP 레이어는 추가 VRAM을 요구함.
- KV 캐시 양자화 — -cache-type-k-draft와 -cache-type-v-draft 옵션으로 캐시를 q8_0으로 양자화함.
- 성능 벤치마크 — 양자화 적용 전후의 수용률과 처리 속도를 비교함.
- 결과 분석 — 성능 저하 없이 VRAM 효율을 높일 수 있는 가능성을 확인함.
Qwen3.6/3.5 모델의 llama.cpp 구현에서 MTP 레이어는 더 많은 VRAM을 요구합니다. 하지만 많은 사람들이 이 레이어에도 자체적인 KV 캐시가 있으며, 이를 양자화할 수 있다는 사실을 잘 모릅니다:
-cache-type-k-draft q8_0 -cache-type-v-draft q8_0
그렇다면 이것은 더 많은 컨텍스트를 담을 수 있게 해주는 공짜 점심일까요?
Qwen3.6-27B-Q8_0에 대한 짧은 벤치마크 결과는 확실히 그런 것으로 보입니다:
--spec-type draft-mtp --spec-draft-n-max 3
Aggregate: {
"n_requests": 9,
"total_predicted": 1404,
"total_draft": 1302,
"total_draft_accepted": 957,
"aggregate_accept_rate": 0.735,
"wall_s_total": 49.46
}
--spec-type draft-mtp --spec-draft-n-max 3 -cache-type-k-draft q8_0 -cache-type-v-draft q8_0
Aggregate: {
"n_requests": 9,
"total_predicted": 1404,
"total_draft": 1302,
"total_draft_accepted": 957,
"aggregate_accept_rate": 0.735,
"wall_s_total": 49.32
}
텐서 병렬 처리(tensor parallelism)로도 테스트했습니다:
-sm tensor --spec-type draft-mtp --spec-draft-n-max 3
Aggregate: {
"n_requests": 9,
"total_predicted": 1404,
"total_draft": 1294,
"total_draft_accepted": 959,
"aggregate_accept_rate": 0.7411,
"wall_s_total": 38.42
}
-sm tensor --spec-type draft-mtp --spec-draft-n-max 3 -cache-type-k-draft q8_0 -cache-type-v-draft q8_0
Aggregate: {
"n_requests": 9,
"total_predicted": 1404,
"total_draft": 1294,
"total_draft_accepted": 959,
"aggregate_accept_rate": 0.7411,
"wall_s_total": 38.29
}
제가 착각하고 있는 것인지, 아니면 다른 경험이 있으신지 알려주세요.
2xMi50 32GBs @ PCIe 4.0 x 8 환경에서 테스트했습니다.

