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.0) —
kv_cache_dtype="fp8",calculate_kv_scales=False - 랜덤 토큰 보정(온더플라이) —
calculate_kv_scales=True - 데이터셋 보정(권장) —
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"])