상상해 보세요. AI 는 거대한 도서관 사서님입니다. 사용자가 "이 4K 고해상도 사진의 구석에 있는 작은 고양이 찾아줘!"라고 요청하면, AI 는 사진의 모든 부분을 잘게 쪼개서 (예: 4 만 개 이상의 조각) 도서관의 '기억 창고 (KV 캐시)'에 저장해야 합니다.
기존의 문제점 (기존 방식): 기존의 AI 는 요청을 받자마자 사진의 모든 조각을 한 번에 다 가져와서 창고에 쌓아둡니다.
문제: 사진이 너무 크거나 동영상이 너무 길면, 창고가 순식간에 가득 차서 **메모리 폭탄 (OOM, Out of Memory)**이 터집니다.
비유: "책을 다 읽기 전에 책장 전체를 미리 다 채워놨다가, 책장이 너무 무거워서 무너져버리는 상황"입니다.
기존 해결책: 모든 책을 다 쌓아둔 뒤에, "어? 책장이 너무 꽉 찼네? 그럼 나중에 불필요한 책 좀 버리자"라고 합니다. 하지만 이미 책장이 무너진 후에는 늦은 것입니다.
💡 이 논문의 해결책: "작은 상자를 하나씩 채우며 정리하는 방법"
이 논문은 **"처음부터 끝까지 한 번에 다 쌓지 말고, 필요한 만큼만 채우면서 정리하자"**고 제안합니다.
1. "조각조각 나누어 처리하기" (Block-wise Prefill)
AI 가 사진을 볼 때, 한 번에 4 만 조각을 다 가져오지 않습니다. 대신 작은 상자 (블록) 단위로 나누어 가져옵니다.
비유: 책장을 채울 때, 책 1 권씩 가져와서 꽂고, 책장이 꽉 차기 직전이 되면 "이중에서 가장 중요한 책만 남기고 나머지는 정리"하는 식입니다.
효과: 책장 (메모리) 의 크기가 일정하게 유지되므로, 아무리 큰 책 (고해상도 이미지) 이 들어와도 책장이 무너지지 않습니다.
2. "무엇을 버릴지 미리 정하기" (구조 인식 압축)
단순히 무작위로 버리는 게 아니라, 이미지의 구조를 이해하고 버립니다.
질문이 있을 때 (Query-Aware): "고양이 찾아줘"라고 했다면, 고양이와 관련된 부분 (눈, 귀 등) 은 꼭 남기고, 배경의 하늘이나 벽 같은 중복된 부분은 과감히 버립니다.
질문이 없을 때 (Query-Agnostic): "무엇이든 보여줘"라고 했다면, 가장 독특하고 다른 특징을 가진 부분 (예: 색이 다른 곳, 모양이 이상한 곳) 을 남기고, 똑같은 패턴이 반복되는 부분은 정리합니다.
비유: 여행 가방을 싸는데, "바다 사진"을 찍으러 간다면 바다 사진만 꽉 채우고, 똑같은 모래알 사진 100 장은 1 장만 남기는 것과 같습니다.
🚀 이 방법이 가져온 변화
메모리 폭탄 방지: 고해상도 이미지나 긴 동영상을 처리할 때, 메모리 사용량이 일정하게 유지되어 AI 가 멈추는 (터지는) 일이 사라졌습니다.
성능 유지: 메모리를 아끼기 위해 중요한 정보를 버린 건 아닙니다. 오히려 불필요한 정보 (중복된 배경 등) 를 먼저 걸러내어, AI 가 핵심에 더 집중할 수 있게 도와주었습니다.
약간의 속도 trade-off: 한 번에 다 처리하는 것보다 조금 더 천천히 (조각조각 처리하므로) 하지만, 아예 실행이 안 되는 것보다는 훨씬 낫습니다.
📝 한 줄 요약
"AI 가 거대한 이미지를 볼 때, 미리 다 쌓아두다가 터지는 대신, 필요한 것만 하나씩 챙기면서 정리해두는 '현명한 정리術'을 개발해서, 고해상도 이미지도 메모리 걱정 없이 볼 수 있게 만들었습니다."
이 기술 덕분에 앞으로 우리는 더 선명한 사진이나 긴 동영상을 AI 와 대화할 때, 컴퓨터가 터지지 않고 더 자연스럽게 대화할 수 있게 될 것입니다.
1. 연구 배경 및 문제 정의 (Problem)
배경: 멀티모달 대규모 언어 모델 (MLLM) 은 고해상도 이미지와 긴 비디오 시퀀스를 처리하기 위해 시각 토큰 (vision tokens) 의 수를 대폭 증가시키고 있습니다. 이는 시각 - 텍스트 추론 능력을 향상시키지만, 키 - 값 (KV) 캐시의 급격한 증가로 인해 추론 시 메모리 오버헤드가 심화되는 문제를 야기합니다.
핵심 문제 (Peak Memory Spike):
기존 KV 캐시 압축 방법들은 주로 전체 멀티모달 컨텍스트가 처리된 후 (post-prefill) 에 적용됩니다.
그러나 MLLM 의 경우, 디코딩 시작 전 프리필 (prefill) 단계에서 고해상도 이미지나 긴 비디오로 인해 수만 개의 시각 토큰이 생성되며, 이때 KV 캐시가 메모리 한도를 초과하는 피크 메모리 사용량 (Peak Memory Usage) 이 발생합니다.
이로 인해 고해상도 입력 처리 시 메모리 부족 (OOM, Out-of-Memory) 오류가 빈번하게 발생하여 실제 적용이 어렵습니다.
기존 방법의 한계:
기존 토큰 가지치기 (Token Pruning) 는 입력 단계에서 토큰을 삭제하지만, 레이어와 어텐션 헤드가 할당하는 토큰의 이질적인 역할을 고려하지 않아 중요한 구조적 정보가 손실될 위험이 있습니다.
기존 KV 캐시 압축은 전체 캐시가 생성된 후 이루어지므로, 피크 메모리 문제를 해결하지 못합니다.
2. 제안 방법론 (Methodology)
저자들은 시각 토큰이 공간적/시간적 구조적 규칙성 (structural regularities) 과 표현적 중복성 (representational redundancy) 을 가진다는 점을 착안하여, 프리필 단계에서 점진적으로 작동하는 구조 인식 KV 캐시 압축 프레임워크를 제안합니다.
2.1 블록 단위 프리필 (Block-wise Prefill)
개념: 전체 입력 시퀀스를 한 번에 처리하는 대신, 연속된 블록 (Block) 단위로 분할하여 순차적으로 처리합니다.
동작: 각 블록이 인코딩되면 해당 블록의 KV 쌍을 캐시에 추가하고, 즉시 고정된 메모리 예산 (Fixed Memory Budget, M) 을 초과하지 않도록 불필요한 KV 쌍을 제거 (Eviction) 합니다.
효과: 전체 KV 캐시가 생성되는 것을 방지하여 프리필 단계 내내 메모리 사용량을 일정하게 유지하고 OOM 을 방지합니다.
2.2 제거 전략 (Eviction Strategies)
블록 단위 처리 내에서 두 가지 전략을 제안합니다:
쿼리 인식 제거 (Query-Aware Eviction):
상황: 단일 턱 (Single-turn) 설정에서 텍스트 프롬프트 (쿼리) 를 사용할 수 있는 경우.
방식: SnapKV 기반. 텍스트 프롬프트에서 추출된 프록시 쿼리 토큰을 사용하여 캐시된 키 (Key) 와의 교차 어텐션 (Cross-attention) 점수를 계산합니다.
원리: 작업과 관련된 시각적으로 중요한 영역 (Salient regions) 은 유지하고, 중요도가 낮은 중복 토큰은 조기에 제거합니다.
쿼리 무관 제거 (Query-Agnostic Eviction):
상황: 멀티 턱 (Multi-turn) 상호작용 등 쿼리 신호가 아직 없는 경우.
방식: KeyDiff 기반. 캐시된 키들의 평균 벡터 (Anchor vector) 와 가장 멀리 떨어진 (다양성이 높은) 키들을 우선적으로 유지합니다.
원리: 쿼리 정보 없이도 시각 토큰의 구조적 다양성과 희귀한 특징을 보존하여 표현력을 유지합니다.
3. 주요 기여 (Key Contributions)
프리필 단계의 메모리 최적화: 기존 '처리 후 압축' 방식에서 '압축하면서 처리 (Compress as you prefill)' 방식으로 패러다임을 전환하여, MLLM 의 가장 큰 병목인 프리필 단계의 피크 메모리 사용을 근본적으로 해결했습니다.
구조 인식 (Structure-Aware) 압축: 이미지 (공간적 타일) 와 비디오 (시간적 프레임) 의 구조적 특성을 반영하여 블록 경계를 설정하고, 시각적 중복성을 효율적으로 제거합니다.
고해상도 입력 처리 가능: 고정된 메모리 예산 하에서도 고해상도 이미지 (수만 토큰) 와 긴 비디오를 처리할 수 있게 하여, 실제 시스템 제약 조건 하에서의 확장 가능한 멀티모달 추론을 가능하게 했습니다.
4. 실험 결과 (Results)
메모리 효율성:
InternVL3.5-8B 및 Qwen2.5-VL-7B 모델에서 약 90% 의 KV 캐시 압축을 달성했습니다.
이미지 타일 수가 증가함에 따라 기존 방법 (Full Cache) 은 메모리가 선형적으로 증가하여 OOM 이 발생했지만, 제안 방법은 피크 메모리를 거의 일정하게 유지하며 OOM 을 방지했습니다.
성능 유지:
ImageNeedleInHaystack, V*, MLVU, Video-MME 등 다양한 벤치마크에서 최대 90% 압축 (KV Budget 1024) 상황에서도 성능 저하가 미미했습니다 (평균 정확도 감소 < 1~2%).
특히 쿼리 인식 방식 (SnapKV) 은 작은 예산에서도 높은 성능을 유지했습니다.
모델 크기 일반화: 8B, 14B, 32B 등 다양한 규모의 모델에서 일관된 성능 향상을 보였습니다.
블록 크기 영향: 모델의 네이티브 시각 토큰화 (예: 28x28) 와 블록 크기를 정렬했을 때 (Block size 784) 최적의 성능을 보였으며, 이는 시각적 구조에 대한 정렬의 중요성을 입증했습니다.
트레이드오프: 메모리 사용량 감소 대신 추론 지연 (Latency, TTFT) 이 약간 증가하는 트레이드오프가 존재하지만, 이는 하이브리드 실행 전략 (Bulk Forward + Block-wise) 으로 완화 가능합니다.
5. 의의 및 결론 (Significance)
이 논문은 MLLM 의 메모리 효율성을 높이기 위해 최종 캐시 크기뿐만 아니라 프리필 단계의 처리 방식이 중요함을 강조합니다. 제안된 방법은 고해상도 이미지와 긴 비디오를 다루는 현대 MLLM 의 실제 배포 장벽인 메모리 부족 문제를 해결하며, 제한된 하드웨어 자원에서도 확장 가능한 멀티모달 추론을 가능하게 합니다. 이는 대규모 시각 입력을 처리하는 AI 시스템의 실용성을 크게 높이는 중요한 기여로 평가됩니다.