vLLM — FP8 KV 캐시 양자화로 메모리 절감

vLLM — FP8 KV 캐시 양자화로 메모리 절감

KV 캐시를 FP8 형식으로 양자화하면 메모리 점유를 크게 줄일 수 있어요. 더 많은 토큰을 메모리에 저장할 수 있어 스루풋이 오르고 더 긴 컨텍스트 창을 지원할 수 있어요.

두 가지 양자화 방식

  • Per-tensor: Q, K, V 각 텐서에 스케일 하나(q/k/v_scale=[1])를 적용.
  • Per-attention-head: 어텐션 헤드별 스케일(q_scale=[num_heads]). Flash Attention 백엔드 + llm-compressor 교정 경로 필요.

스케일 보정 방식 3가지

  1. 보정 없음(기본, 스케일=1.0) — kv_cache_dtype="fp8", calculate_kv_scales=False
  2. 랜덤 토큰 보정(온더플라이) — calculate_kv_scales=True
  3. 데이터셋 보정(권장) — llm-compressor로 최대 정확도

레이어 건너뛰기

sliding-window처럼 민감한 레이어는 --kv-cache-dtype-skip-layers sliding_window로 기본 정밀도를 유지할 수 있어요.

llm = LLM(model="meta-llama/Llama-3.1-8B-Instruct", kv_cache_dtype="fp8",
          kv_cache_dtype_skip_layers=["sliding_window"])

더 알아보기