멀티모달 LLM 추론에서 KV Cache 양자화 탐구
Exploring KV Cache Quantization in Multimodal Large Language Model Inference
TL;DR Highlight
멀티모달 LLM의 KV Cache 양자화는 첫 토큰 응답속도를 1.7배, 출력속도를 4.3배 향상시킨다.
Who Should Read
고해상도 이미지 처리 시 GPU 메모리 부족이나 응답 지연을 겪는 멀티모달 LLM 서비스 개발자. KV Cache 오프로드 비용을 줄이고 싶은 MLOps 엔지니어.
Core Mechanics
- 멀티모달 LLM은 고해상도 이미지 처리 시 KV Cache(어텐션 연산 중간 결과 저장소)가 폭발적으로 커져 GPU 메모리를 초과, CPU로 오프로드하면서 지연이 발생함
- 텍스트 토큰 위주 보존 전략: 전체 토큰 중 10%만 고정밀도(FP16)로 유지하고, 나머지 90%(주로 이미지 토큰)는 낮은 비트 수로 양자화
- 이미지 토큰은 텍스트 토큰보다 정밀도 손실에 덜 민감하다는 특성을 활용해 선택적 양자화를 적용
- CPU-GPU 혼합 시스템에서 KV Cache 전송량을 줄여 TTFT(첫 토큰 응답 시간)와 TPOT(토큰 생성 간격) 모두 대폭 단축
- 정확도 손실은 무시할 수준으로, 성능을 희생하지 않고 속도·메모리 효율을 동시에 개선
Evidence
- TTFT(Time-To-First-Token, 첫 토큰까지 걸리는 시간) 1.7배 단축
- TPOT(Time-Per-Output-Token, 토큰당 생성 시간) 4.3배 단축
- 전체 토큰의 10%만 고정밀도로 유지해도 정확도 손실이 무시할 수준
How to Apply
- 멀티모달 추론 파이프라인에서 KV Cache 저장 시, 텍스트 토큰은 FP16 유지, 이미지 토큰은 INT4/INT8로 양자화하는 혼합 정밀도 전략을 도입
- CPU 오프로드를 사용하는 heterogeneous 시스템이라면, 이미지 토큰 KV Cache를 양자화해 CPU-GPU 전송 데이터량을 줄이고 대역폭 병목을 완화
- 고해상도 이미지를 많이 처리하는 VQA, 문서 이해, 영상 분석 서비스에서 응답 지연 개선을 위해 우선 적용 검토
Code Example
# 개념적 적용 예시 (PyTorch pseudo-code)
import torch
def mixed_precision_kv_cache(keys, values, text_token_mask, quant_bits=4):
"""
text_token_mask: True인 위치는 텍스트 토큰 (상위 10%)
이미지 토큰은 낮은 비트로 양자화
"""
# 텍스트 토큰: 고정밀도 유지
keys_text = keys[text_token_mask] # FP16 그대로
values_text = values[text_token_mask]
# 이미지 토큰: INT4 양자화
keys_img = keys[~text_token_mask]
values_img = values[~text_token_mask]
scale_k = keys_img.abs().max() / (2 ** (quant_bits - 1) - 1)
keys_img_q = (keys_img / scale_k).round().to(torch.int8)
scale_v = values_img.abs().max() / (2 ** (quant_bits - 1) - 1)
values_img_q = (values_img / scale_v).round().to(torch.int8)
return {
"keys_text": keys_text,
"values_text": values_text,
"keys_img_quantized": keys_img_q,
"keys_img_scale": scale_k,
"values_img_quantized": values_img_q,
"values_img_scale": scale_v,
}Terminology
관련 논문
Claude Code는 프롬프트 읽기 전에 33k 토큰을 전송한다; OpenCode는 7k
동일한 모델과 작업 환경에서 Claude Code와 OpenCode의 실제 토큰 사용량을 API 레벨에서 측정한 결과, Claude Code가 시스템 프롬프트 오버헤드만으로 OpenCode 대비 4.7배 더 많은 토큰을 소비한다는 것을 확인했다.
Mesh LLM: iroh 기반 분산 AI 컴퓨팅
사무실, 집, 클라우드에 흩어진 GPU들을 하나의 OpenAI 호환 API로 묶어주는 분산 LLM 실행 시스템으로, 비싼 API 비용 없이 큰 모델을 직접 운영할 수 있다.
Frugon – LLM API 호출 로그를 분석해서 더 싼 모델로 대체 가능한 구간을 찾아주는 로컬 도구
내 LLM API 비용이 어디서 새는지 로컬에서 분석해주는 오픈소스 CLI 도구로, 비싼 모델 대신 저렴한 모델로 전환 가능한 호출을 골라낸다.
로컬에서 SOTA LLM 실행하기 완전 가이드 (하드웨어부터 설정까지)
2천 달러짜리 RTX 3090 한 장부터 4만 달러짜리 RTX PRO 6000 4장 셋업까지, 로컬에서 최신 LLM을 직접 돌리는 방법을 하드웨어 선택·구성·실행 설정까지 통째로 정리한 실전 가이드다.
Manticore Search에서 ONNX 경로를 재설계해 임베딩 속도를 14배 높인 방법
Manticore Search가 기존 SentenceTransformers/Candle 백엔드를 ONNX Runtime으로 교체해 텍스트 임베딩 생성 속도를 평균 14배 향상시켰다. 별도 모델 서비스 없이 DB 내부에서 직접 임베딩을 처리하는 구조에서 INSERT 속도가 곧 임베딩 속도이기 때문에 이 개선은 실질적인 ingest 처리량 향상으로 직결된다.
Asymmetric Quantization: 97% 스토리지 절감으로 Late Interaction 검색 품질 유지하기
멀티벡터 검색 모델의 문서 벡터를 1비트 이진값으로 압축하고 쿼리 벡터만 int8로 유지하는 비대칭 양자화 기법으로, 스토리지를 97% 줄이면서 검색 품질 손실을 0.61점(NDCG@10 기준)에 그치게 만든 실제 프로덕션 적용 사례다.
Original Abstract (Expand)
Multimodal large language models (MLLMs) have demonstrated strong performance across modalities, such as image, video, and audio understanding, by leveraging large language models (LLMs) as a backbone. However, a critical challenge in MLLM inference is the large memory capacity required for the key–value (KV) cache, particularly when processing high-resolution images. This pressure often forces heterogeneous CPU–GPU systems to offload the KV cache to CPU memory, introducing substantial transfer latency. KV cache quantization is a promising way to reduce this memory demand, yet it remains underexplored for MLLM inference. In this work, we characterize MLLM inference and present a text-centric KV cache quantization method that retains only 10% of tokens in high precision while quantizing the rest. Our method reduces Time-To-First-Token (TTFT) by <inline-formula><tex-math notation="LaTeX">$1.7\times$</tex-math><alternatives><mml:math><mml:mrow><mml:mn>1</mml:mn><mml:mo>.</mml:mo><mml:mn>7</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math><inline-graphic xlink:href="rhu-ieq1-3646170.gif"/></alternatives></inline-formula> and Time-Per-Output-Token (TPOT) by <inline-formula><tex-math notation="LaTeX">$4.3\times$</tex-math><alternatives><mml:math><mml:mrow><mml:mn>4</mml:mn><mml:mo>.</mml:mo><mml:mn>3</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math><inline-graphic xlink:href="rhu-ieq2-3646170.gif"/></alternatives></inline-formula>, with negligible accuracy loss.