Baidu Unlimited OCR, 40페이지 이상의 분량에서도 KV Cache를 일정하게 유지: Reference Sliding
요약
Baidu가 30억 파라미터 규모의 오픈 OCR 모델인 'Unlimited OCR'을 발표했습니다. Reference Sliding Window Attention(R-SWA) 기술을 통해 40페이지 이상의 긴 문서도 KV 캐시를 일정하게 유지하며 단 한 번의 패스로 전사할 수 있습니다.
핵심 포인트
- R-SWA 기술로 KV 캐시 크기를 일정하게 유지하여 메모리 효율성 극대화
- 40페이지 이상의 장문 문서도 단일 순방향 패스로 OCR 가능
- 참조 토큰과 마지막 128개 출력 토큰만을 참조하여 선형적 캐시 증가 방지
- 3B 규모의 오픈 소스 OCR 모델 연구 결과
무엇인가 (What): Unlimited OCR 출시 (Baidu, arXiv 2606.23050)는 30억 파라미터(3-billion-parameter) 규모의 오픈 OCR 모델입니다. 이 모델의 디코더(decoder)는 표준 어텐션(standard attention)을 **Reference Sliding Window Attention (R-SWA)**로 대체하였으며, 이 기술을 통해 단 한 번의 순방향 패스(forward pass)로 40페이지 이상의 문서를 전사(transcribe)할 수 있습니다.
왜 필요한가 (Why): **KV 캐시 (KV cache)**는 모델이 생성하는 모든 토큰에 따라 증가하는 메모리입니다. 40페이지 분량의 전사 작업에서 이러한 증가는 추론(inference) 메모리를 점유하고 생성 속도를 늦출 수 있습니다. 따라서 **캐시를 일정하게 유지(holding the cache constant)**하는 것이 단일 패스로 문서 전체를 OCR 하는 것을 실용적으로 만드는 핵심입니다.
기존 방식과의 차이 (vs prior): **표준 디코더 (standard decoder)**는 각 새로운 토큰이 계속해서 늘어나는 전체 출력값을 참조하므로 KV 캐시가 선형적으로 증가합니다. 반면, R-SWA는 각 토큰이 고정된 문서(fixed document)와 마지막 128개의 출력 토큰만을 참조하게 하여 캐시 크기를 일정하게 유지합니다.
비유하자면
긴 책을 필사하는 서기라고 생각해보세요. 원본 책은 책상 위에 펼쳐져 있고, 서기는 방금 쓴 마지막 줄만을 시야에 두고 있습니다.
40페이지 분량의 책 한 권을 필사하기
│
┌─────────────┴─────────────┐
...
- reference tokens (참조 토큰) = 책상 위에 펼쳐져 있어 언제든 닿을 수 있는 원본 책
- sliding window (슬라이딩 윈도우) = 연속성을 유지하기 위해 서기가 훑어보는 마지막 한 줄
- constant KV cache (일정한 KV 캐시) = 책이 아무리 길어져도 넘치지 않는 책상
- linear KV growth (선형적 KV 증가) = 필사한 모든 페이지를 책상 위에 쌓아두어 결국 넘쳐버리는 상황
- 40+ pages in one pass (한 번의 패스로 40페이지 이상) = 긴 책 한 권을 한 번에 앉아서 필사하는 것
주요 용어 정리
KV cache (KV 캐시) — 이미 처리된 모든 토큰에 대해 저장된 **키(keys)와 값(values)**으로, 어텐션(attention)이 이를 다시 계산하지 않도록 합니다. 이는 추론의 주요 메모리 비용이며, 표준 디코더에서는 생성되는 토큰마다 증가합니다.
Reference Sliding Window Attention (R-SWA) — 모든 디코더 어텐션 레이어(decoder attention layer)를 대체하는 Baidu의 기술입니다. 각 생성된 토큰은 계속 늘어나는 전체 시퀀스 대신, 모든 참조 토큰(reference tokens)과 바로 앞의 128개 출력 토큰만을 참조합니다. 이를 통해 캐시 크기를 일정하게 제한할 수 있습니다.
Reference tokens (참조 토큰) — 인코더(encoder)가 읽고 있는 페이지로부터 생성하는 **문서 (시각적) 토큰 (document (visual) tokens)**입니다. R-SWA는 이 토큰들을 모든 출력 토큰(output token)에게 완전히 보이도록 유지하며, 이들은 어텐션 윈도우(attention window)의 고정된 부분으로서 절대 밀려나지 않습니다.
Sliding window attention (슬라이딩 윈도우 어텐션) — 각 토큰이 모든 토큰이 아닌 마지막 _W_개의 토큰만을 참조하도록 하는 어텐션 마스크(attention mask)입니다. 이는 메모리를 제한하지만, 그 자체만으로는 모델이 읽고 있는 문서 내용을 밀어내 버리게(slide off) 됩니다. R-SWA의 고정된 참조 토큰(pinned reference tokens)은 바로 이 문제를 해결합니다.
Forward pass (순전파) — 출력을 생성하기 위해 입력값에 대해 모델을 한 번 실행하는 과정입니다. Unlimited OCR은 문서를 여러 개의 작은 패스로 나누는 대신, **단 한 번의 순전파(single forward pass)로 40페이지 이상의 문서를 전사(transcribe)**합니다.
Active parameters (활성 파라미터) — Unlimited OCR은 총 30억 개의 파라미터를 보유하고 있지만 토큰당 5억 개만 활성화합니다. 이는 대부분의 가중치(weights)가 특정 단계에서 유휴 상태로 유지되어 연산량을 낮게 유지하는 희소 설계(sparse design)입니다.
DeepSeek-OCR encoder (DeepSeek-OCR 인코더) — 페이지 이미지를 적은 수의 토큰으로 변환하는 고압축 시각 인코더(visual encoder)입니다. 이를 R-SWA의 일정 캐시 디코더(constant-cache decoder)와 결합함으로써 수십 페이지의 분량을 단일 32,000-토큰 컨텍스트(context) 안에 담을 수 있습니다.
뉴스. 2026년 6월 22일, Baidu는 32,000-토큰 컨텍스트 내에서 단 한 번의 순전파(single forward pass)로 40페이지 이상의 문서를 전사할 수 있는 30억 파라미터(5억 개 활성) 규모의 엔드투엔드(end-to-end) OCR 모델인 Unlimited OCR을 출시했습니다. 이 모델은 모든 디코더 어텐션 레이어를 **Reference Sliding Window Attention (R-SWA)**로 교체하여, KV 캐시(KV cache)가 출력 길이에 따라 증가하도록 두는 대신 디코딩 내내 일정한 크기로 유지하도록 합니다. 또한 OmniDocBench v1.5 및 v1.6에서 새로운 엔드투엔드 SOTA(state-of-the-art)를 기록했다고 보고했습니다. 가중치와 코드는 CC-BY 4.0 라이선스 하에 공개되어 있습니다. 논문 읽기 →
긴 책을 손으로 베껴 쓰는 필사기를 상상해 보십시오. 책상이 깔끔하게 유지되는 비결은 기억력이 아니라, _책상 위에 무엇을 남겨두느냐_에 있습니다. 원본 책은 항상 손이 닿는 곳에 펼쳐져 있고, 필사가는 글씨체와 철자를 일관되게 유지하기 위해 방금 쓴 마지막 줄만 훑어봅니다. 이미 베껴 쓴 수백 페이지를 다시 읽지는 않습니다. 그것들은 서랍에 넣어둡니다. 따라서 책상이 1페이지에서나 200페이지에서나 들고 있는 것은 동일한 두 가지, 즉 원본과 현재 줄뿐이며, 책이 아무리 길어져도 책상이 넘치는 일은 없습니다.
표준 트랜스포머 디코더 (Standard Transformer Decoder)는 이와 정반대인 필사기입니다. 새로운 토큰이 이전의 모든 토큰을 참조(Attend)해야 하기 때문에, 이미 베껴 쓴 모든 페이지를 책상 위에 쌓아둡니다. 이 쌓인 더미가 바로 KV 캐시 (KV Cache)이며, 그 크기는 출력 길이에 따라 선형적으로 증가합니다. 한 단락 정도의 답변에는 문제가 없지만, 출력이 방대한 40페이지 분량의 전사 (Transcription) 작업에서는 치명적입니다. 캐시는 이미 추론 (Inference) 과정에서 가장 큰 메모리 비용을 차지하고 있는데, 페이지마다 계속 늘어난다면 긴 문서를 효율적으로 수용하고 서비스하기가 훨씬 어려워집니다.
R-SWA는 절제된 필사기입니다. R-SWA는 모든 디코더 어텐션 (Decoder Attention) 레이어를 교체하여, 생성된 각 토큰이 정확히 두 가지만 참조하도록 합니다. 하나는 인코더 (Encoder)가 생성하여 고정된 상태로 완전히 보일 수 있게 유지되는 전체 참조 토큰 세트 (Full set of reference tokens) — 즉, 문서 자체입니다 — 그리고 다른 하나는 방금 작성된 내용에 대한 짧은 슬라이딩 윈도우 (Sliding Window)인 직전 128개의 출력 토큰뿐입니다. 문서는 시야에서 사라지지 않지만, 출력 이력은 슬라이딩됩니다. 두 부분 모두 제한되어 있기 때문에 — 문서는 고정되어 있고 윈도우는 128로 제한됨 — KV 캐시는 첫 페이지부터 40페이지까지 일정한 크기를 유지합니다. 이는 일반적인 슬라이딩 윈도우가 스스로 할 수 없는 방식입니다. 모든 것에 대해 고정된 윈도우를 슬라이딩하면 읽고 있는 문서 자체를 놓치게 되지만, R-SWA는 참조 토큰을 슬라이딩 대상에서 제외합니다.
"시퀀스 길이(sequence length)에 따라 증가한다"라는 표현이 왜 고통스러운 용어인지 그 이유가 여기 있습니다. KV-cache 메모리는 레이어(layers) × 헤드(heads) × 헤드 차원(head dimension) × 바이트(bytes) × **시퀀스 길이(sequence length)**의 곱으로 결정되며, 모델이 더 많은 내용을 작성함에 따라 변하는 유일한 요소는 바로 마지막 인자인 시퀀스 길이뿐입니다. R-SWA는 출력에 대해 이 요소를 고정합니다. 즉, 시퀀스 길이가 32,000을 향해 치솟는 대신, 출력의 기여도는 128로 제한(clamped)되며, 참조 토큰(reference tokens)은 인코더에 의해 압축된 고정된 양만큼만 추가됩니다. 이 상수 캐시(constant-cache) 디코더를 각 페이지 이미지를 훨씬 적은 수의 시각적 토큰(visual tokens)으로 압축하는 DeepSeek-OCR의 고압축 시각 인코더(visual encoder)와 결합하면, 수십 페이지의 분량도 하나의 32,000 토큰 패스(pass) 안에 담을 수 있습니다.
하나의 긴 문서를 예로 들어 수치를 살펴보겠습니다. 40페이지를 전사(transcribing)할 때 대략 **12,000개의 출력 토큰(output tokens)**이 생성된다고 가정해 봅시다 (예시일 뿐이며, 실제 개수는 문서에 따라 다릅니다). 표준 디코더의 캐시는 12,000개 전체를 보유하며, 12,000번째 토큰은 이전의 11,999개 토큰을 참조합니다. 따라서 페이지가 늘어날수록 메모리와 토큰당 어텐션(per-token attention) 작업량이 모두 함께 증가합니다. 반면 R-SWA는 출력 윈도우를 128로 제한합니다. 따라서 동일한 마지막 토큰은 오직 마지막 128개의 출력과 고정된 문서 토큰들만을 참조하게 되며, 문서가 4페이지이든 40페이지이든 출력의 캐시 기여도는 128개 항목으로 일정하게 유지됩니다. 페이지 수에 따라 증가하던 숫자를 상수인 128로 제한하는 이 메커니즘 — 이것이 바로 디코더 측면에서 압축된 시각 인코더와 결합하여 단 한 번의 포워드 패스(forward pass)로 40페이지 이상의 분량을 읽을 수 있는 이유입니다.
| 어텐션 방식 (Attention scheme) | 각 출력 토큰이 주목하는 대상... | KV 캐시 vs 출력 길이 | 강점 (Where it earns its keep) |
|---|---|---|---|
| 표준 인과적 어텐션 (Standard causal attention) | 모든 이전 토큰 | 선형적으로 증가 | 정확하지만, 긴 출력 시 메모리가 폭발적으로 증가함 |
| ... |
솔직한 주의사항(caveats)이 있습니다. 128-토큰 윈도우는 **기본값(default)**이며, 짧은 윈도우를 사용하는 것은 전사(transcription)의 다음 줄이 수천 토큰 이전에 작성된 텍스트에 의존하는 경우가 드물 것이라는 가설에 기반합니다. 이는 문서를 위에서 아래로 읽는 작업에는 유효하지만, 장기적인 출력 구조를 가진 작업에서는 그 타당성이 덜 명확합니다. 또한, 캐시를 일정하게 유지하는 이점은 인코더(encoder)가 실질적인 역할을 수행한다는 점에 의존합니다. 만약 참조 토큰(reference tokens) 자체가 압축되지 않았다면, "모든 참조 토큰" 자체가 별도의 크고 고정된 비용이 되었을 것입니다. 하지만 이로부터 얻는 더 깊은 교훈은 OCR을 넘어 일반화됩니다. 논문 자체에서도 R-SWA는 **"ASR, 번역 등의 작업에도 동일하게 적용 가능한... 범용 파싱 어텐션 메커니즘 (a general-purpose parsing attention mechanism...)"**이라고 언급하고 있습니다. 출력 토큰이 출력 전체 이력(entire output history)을 필요로 하는 경우가 드물다는 점을 받아들이는 순간, 질문은 "어떻게 캐시를 줄일 것인가"에서 "무엇을 고정(pinned)해야 하며, 윈도우를 얼마나 짧게 가져갈 수 있는가"로 바뀌며, 캐시는 더 이상 증가하지 않게 됩니다.
더 자세한 내용: LLM 내부 구조 (LLM Internals) → KV 캐시 (KV Cache) → 메모리 비용 (Memory Cost)
관련 설명 자료
- FlashMemory — lookahead sparse attention — 각 토큰이 더 적은 수의 키 (keys)에 어텐션 (attention)을 수행하게 함으로써 KV 캐시 (KV cache)의 범위를 제한합니다. 반면 R-SWA는 고정된 윈도우 (window)와 고정된 참조 (pinned reference)를 통해 범위를 제한합니다.
- SP-KV — self-pruned KV cache — 캐시를 축소하기 위해 가치가 낮은 KV 쌍 (KV pairs)을 삭제 (drops)합니다. R-SWA는 애초에 먼 출력 이력 (far output history)을 쓰지 않습니다.
- SubQ 1.1 — subquadratic sparse attention — 백만 토큰 컨텍스트 (million-token context)를 위한 근선형 어텐션 (near-linear attention)입니다. R-SWA는 "모든 것에 어텐션을 주지 마라"는 동일한 아이디어의 OCR 디코더 (OCR-decoder) 버전입니다.
- DeepSeek V4 — long-context cost cut to a fraction — 아키텍처 (architecture) 수준에서 동일한 롱 컨텍스트 (long-context) 메모리 압박 문제를 해결하며, R-SWA가 기반을 두고 있는 광학 압축 인코더 (optical-compression encoder) 계보를 공유합니다.
FAQ
Reference Sliding Window Attention (R-SWA)란 무엇인가요?
R-SWA는 Baidu의 Unlimited OCR (arXiv 2606.23050, 2026년 6월)에 사용된 디코더 어텐션 (decoder attention) 방식입니다. 이 방식은 모든 디코더 어텐션 레이어 (decoder attention layer)를 대체하여, 생성된 각 토큰이 전체적으로 늘어나는 출력 시퀀스 (output sequence) 전체가 아닌, 인코더 (encoder)가 생성한 문서 토큰들인 모든 참조 토큰 (reference tokens)과 바로 앞의 128개 출력 토큰에만 어텐션을 수행하도록 합니다. 문서는 고정되어 있고 출력 윈도우 (output window)가 128개로 제한되어 있기 때문에, KV 캐시 (KV cache)는 출력 길이에 따라 선형적으로 증가하는 대신 디코딩 (decoding) 내내 일정한 크기를 유지합니다. 덕분에 30억 파라미터 (3-billion-parameter, 활성 파라미터 5억 개) 모델이 단 한 번의 32,000 토큰 포워드 패스 (forward pass)로 40페이지 이상의 분량을 전사 (transcribe)할 수 있습니다.
OCR에서 KV 캐시를 일정하게 유지하는 것이 왜 중요한가요?
KV 캐시 (KV cache)는 추론 (inference) 시 메모리 비용의 대부분을 차지하며, 표준 디코더 (standard decoder)에서는 생성되는 모든 토큰에 따라 크기가 증가합니다. 긴 문서를 전사 (transcribe)하면 방대한 양의 출력이 생성되므로, 선형적으로 증가하는 캐시는 GPU 메모리를 빠르게 초과하게 됩니다. 이것이 대부분의 OCR 시스템이 문서를 여러 개의 작은 패스 (pass)로 나누어 처리한 뒤 결과를 결합하는 이유입니다. R-SWA는 캐시에 대한 출력의 기여도를 128개 토큰으로 제한하여, 페이지 수에 관계없이 메모리가 증가하지 않도록 하며, 전체 문서를 단 한 번의 순전파 (forward pass)로 읽을 수 있게 합니다. Baidu는 이 설계를 통해 OmniDocBench v1.5 및 v1.6에서 새로운 엔드 투 엔드 (end-to-end) SOTA (state-of-the-art)를 기록했다고 보고했습니다.
R-SWA는 일반적인 슬라이딩 윈도우 어텐션 (sliding-window attention)과 어떻게 다른가요?
일반적인 슬라이딩 윈도우 어텐션 (일부 스트리밍 모델에서 사용되는 방식)은 각 토큰이 전체 내용 중 마지막 W개의 토큰만 볼 수 있게 합니다. 이는 메모리를 제한할 수는 있지만, 모델이 읽고 있는 문서의 내용을 시야에서 밀어내 버리는 결과를 초래합니다. 반면 R-SWA는 윈도우를 두 부분으로 나눕니다. 참조 (reference, 문서) 토큰은 고정되어 모든 출력 토큰에 대해 완전히 가시적인 상태로 유지되는 반면, 출력 이력 (output history)에 대해서만 128개 토큰의 슬라이딩이 적용됩니다. 따라서 모델은 문서를 잃어버리지 않으면서도, 무한히 커질 수 있는 캐시의 일부를 제한하여 고정된 크기의 캐시를 유지하며 전체 소스 (source)를 시야에 담아둘 수 있습니다.
원문은 Learn AI Visually에 게시되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기