AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

KVarN – FP16 정확도와 처리량을 유지하면서 KV 캐시를 4배 확장하는 vLLM 양자화 백엔드

KVarN은 Huawei CSL이 개발한 vLLM용 네이티브 KV 캐시 양자화(KV-cache quantization) 백엔드다. 기존 방식(TurboQuant 등)이 KV 캐시 용량을 늘리는 대신 처리량을 40-52% 희생하는 문제를 해결해, FP16과 같은 정확도와 처리량을 유지하면서 KV 캐시를 최대 4배 확장한다.

기존 KV 캐시 양자화의 한계

vLLM의 TurboQuant 블로그에 따르면, 기존 방식은 2.3-3.7배 KV 캐시 용량 확장을 제공하지만 처리량이 40-52% 감소한다. 속도와 품질을 동시에 잃는 이유로 실제 프로덕션에서는 KV 캐시 양자화가 거의 사용되지 않았다.

KVarN의 접근법: 분산 정규화(Variance Normalization)

KVarN은 분산 정규화 기법으로 기존 방식의 병목을 해소한다. Qwen3-32B(AIME25, 16K 컨텍스트, TP=2) 기준:

항목KVarNFP16
KV 캐시 용량~4배기준
정확도FP16 수준기준
처리량FP16 초과기준

기존 방식(TurboQuant)이 도달하지 못하는 우상단 영역(고정확도 + 고처리량 + 대용량)을 달성한다.

설치 및 사용

KVarN은 vLLM 포크 형태로 배포된다. 설치 후 kv_cache_dtype 하나만 바꾸면 된다:

git clone https://github.com/huawei-csl/KVarN.git
cd KVarN
VLLM_USE_PRECOMPILED=1 pip install -e .
from vllm import LLM, SamplingParams

llm = LLM(
    model="Qwen/Qwen3-32B",
    dtype="float16",
    kv_cache_dtype="kvarn_k4v2_g128",  # KVarN 활성화
    block_size=128,
)

서빙도 동일하게 플래그 하나로 전환된다:

vllm serve Qwen/Qwen3-32B --dtype float16 --kv-cache-dtype kvarn_k4v2_g128 --block-size 128

캘리브레이션 없이 즉시 적용 가능하다. 커널은 Triton으로 JIT 컴파일된다.

주의사항

  • 현재 타일/페이지 크기는 128로 고정 (다른 크기는 예정)
  • float16 계산 모드에서만 실행
  • 타이트한 단일 GPU 환경에서는 VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0 설정 권장

어떤 케이스에 유용한가

  • 긴 컨텍스트 추론이 필요해 KV 캐시 부족이 병목인 경우
  • KV 캐시 양자화를 검토했지만 처리량 손실이 우려됐던 경우
  • vLLM 기반으로 Qwen3 등 대형 모델을 서빙하는 팀

논문 정보

  • 제목: KVarN: Variance-Normalized KV-Cache Quantization Mitigates Error Accumulation in Reasoning Tasks
  • arXiv: 2606.03458

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)