피드로 돌아가기
Dev.toAI/ML
원문 읽기
FP8/INT8 KV Cache Quantization을 통한 메모리 50% 절감 및 처리량 확대
KV cache quantization: what FP8/INT8 K and V actually buy you, and where they break
AI 요약
Context
Llama-3 70B 모델의 32k context 설정 시 요청당 약 10.7 GB의 KV Cache가 발생하여 HBM 용량 한계에 직면함. 모델 가중치는 고정적이나 KV Cache는 batch_size와 seq_len에 비례해 동적으로 증가하여 long-context 워크로드에서 시스템 병목의 주원인이 됨.
Technical Solution
- BF16 정밀도의 K, V 텐서를 저장 시점에만 FP8/INT8로 압축하여 메모리 풋프린트를 50%~75% 수준으로 축소
- Attention Kernel 내부에 Dequantization 단계를 융합하여 연산 직전 BF16으로 복원하는 On-the-fly 방식 채택
- FP8 E4M3 포맷을 통해 Softmax로 제한된 K, V 활성화 값의 다이내믹 레인지를 최적화하고 정밀도 유지
- Per-token scale 방식을 도입하여 헤드 내 이상치(Outlier)로 인한 정보 손실을 방지하고 양자화 오차 최소화
- 연산(FLOPs)은 BF16으로 유지하되 저장 공간과 Memory Bandwidth만 최적화하여 성능 저하 방지
실천 포인트
- H100/B100 등 Hopper 아키텍처 이상에서는 FP8(E4M3) 우선 적용 검토 - Speculative Decoding 병행 시 Target 모델의 Logit 분포 변화로 인한 Acceptance Rate 하락 여부 측정 및 num_speculative_tokens 재조정 - MoE 등 Outlier가 강한 모델 구조에서는 Per-tensor/Per-head 대신 Per-token scale 필수 적용 - 의료/금융 등 고정밀 SLO 요구 도메인의 경우 벤치마크 외 실제 배포 데이터 기반의 검증 수행