KeyRec가 고정 예산 시각 메모리로 스트리밍 영상 이해 비용을 줄인다

KeyRec: Bounded Visual Memory for Streaming and Long-Video Understanding

HF Daily2609.32182

Zihan Chen, Xuejian Rong, Xiaojuan Wang2026-09-26

무엇인가

비전-언어 모델(VLM)은 프레임 하나를 수십에서 수백 개의 시각 토큰으로 표현한다. 영상이 길어지면 시각 시퀀스가 프레임 수에 비례해 늘고, 프리필 단계의 밀집 셀프 어텐션 비용은 시퀀스 길이의 제곱으로 증가한다. 스트리밍 영상은 전체 길이를 알 수 없고 질의가 임의 시점에 도착하며, 긴 영상은 밀집 시각 컨텍스트가 메모리나 컨텍스트 예산을 넘기고 여러 질문마다 같은 프레임을 반복 처리하게 만든다. 기존의 학습 불필요(training-free) 토큰 선택 기법들은 반복 배경을 걷어내는 데는 효과적이지만, 저자들은 세 가지 한계를 지적한다. 첫째, 새로움(novelty)을 최근 프레임이나 거친 앵커, 전역 의미 표현과 비교하기 때문에 이력이 시간적으로 국소화된 이벤트로 조직되지 않아 진화하는 사건이 조각나고, 시각적으로 비슷하지만 시간적으로 구분되는 사건이 뒤섞인다. 둘째, 토큰을 독립적으로 고르면 행위자·행동·객체·장면을 하나의 일관된 사건 증거로 묶어주는 주변 맥락이 잘려나간다. 셋째, 영상 전체에 동일한 보존 정책을 적용하면 세밀한 최근 관측과 장거리 이력이 같은 정책 아래에서 경쟁하게 된다.

어떻게 동작하나

KeyRec은 이 문제를 토큰 선택이 아니라 '유계 시각 메모리 조직'으로 재정의한다. 메모리는 질의와 무관한 쓰기(writing) 단계와 질의에 적응하는 고정 예산 읽기(readout) 단계로 분리된다. 메모리 상태는 최근 캐시 C_t와 키 이벤트 뱅크 E_t의 쌍으로, 전체 저장량은 N_C + K·m ≤ S로 묶인다. 최근 캐시는 들어오는 프레임의 시각 토큰을 순서대로 이어 붙인 뒤 최신 N_C개만 남기는 Tail 연산으로 갱신되며, 오래된 토큰은 자연히 밀려난다. 이벤트 뱅크는 최대 K개의 이벤트를 유지하고, 각 이벤트는 라우트 임베딩 r_k, 저장된 시각 토큰 P_k(최대 m개), 타임스탬프 τ_k, 유틸리티 u_k로 구성된다.

무엇과 다른가

쓰기 단계의 핵심은 후보 이벤트 생성과 온라인 add–merge–evict 갱신이다. 각 토큰의 새로움은 저장된 이벤트 라우트들과의 코사인 유사도 최댓값을 1에서 뺀 값으로 정의되는데, 이는 프레임 내부의 돌출도가 아니라 '기존 이벤트 메모리가 아직 대표하지 못한 정보인가'를 측정한다. 프레임마다 새로움 상위 m개 토큰을 뽑아, 그 새로움 점수를 소프트맥스 가중치로 써서 하나의 후보 라우트로 요약하고, 같은 토큰들이 후보 이벤트의 시각 토큰과 타임스탬프가 되며, 후보 유틸리티는 선택된 토큰들의 평균 새로움이다. 이 후보를 기존 이벤트에 병합할지는 두 조건을 동시에 요구한다. 라우트 유사도가 임계값 γ 이상이고, 후보 시작 시각과 저장된 이벤트 종료 시각의 간격이 δ 이하여야 한다. 유사도만 보면 시간적으로 멀리 떨어진 재등장을 같은 사건으로 뭉개버리기 때문에 시간적 인접성을 추가로 건 제약이다. 병합되면 라우트는 정규화 이동평균으로 갱신되고, 시각 토큰과 타임스탬프는 시간순 정렬 후 균등 서브샘플링(Uniform_m)으로 m개를 유지해 병합된 사건의 시간적 범위를 보존한다. 유틸리티는 기존 값과 후보 값 중 최댓값을 취해 짧고 뚜렷한 변화가 인접 관측에 희석되지 않게 한다. 병합 조건이 성립하지 않으면 새 이벤트로 삽입하고, 용량 K를 넘기면 제거 점수 u_k + λ·d_temp_k가 가장 낮은 이벤트를 버린다. 여기서 d_temp는 다른 이벤트 중심 시각까지의 최소 거리로, 유틸리티 항은 독특한 시각 변화를, 시간 항은 영상에서 과소 대표된 구간을 살린다.

어떻게 쓰나

질의가 도착하면 같은 동결 VLM을 텍스트 전용 라우터로 쓴다. 라우터는 질문과 두 메모리 소스에 대한 텍스트 설명만 보고, 최근 우선에서 이벤트 우선까지 다섯 단계(AllRecent, HeavyRecent, Balanced, HeavyEvent, AllEvent) 중 하나를 고른다. 영상을 다시 보거나 재처리하지 않는다. 선택된 상태는 이벤트 메모리에 배정할 읽기 비율 π_q를 정하고, 총 읽기 예산 B와 이벤트 크기 m으로부터 선택할 이벤트 수 k_q = min(K, round(π_q·B/m))와 최근 토큰 수 r_q = B − k_q·m이 결정된다. HeavyRecent와 Balanced에서는 질문 토큰 임베딩의 평균 풀링 벡터와 라우트의 코사인 유사도가 높은 이벤트를 검색하고, HeavyEvent와 AllEvent에서는 이벤트를 중심 시각 순으로 정렬해 균등하게 뽑아 시간 커버리지를 확보한다. 선택된 이벤트는 다시 시간순으로 복원되고, 최근 캐시에서 Tail로 잘라낸 r_q개 토큰과 함께 중립적인 번호 라벨이 붙은 별도 메모리 세그먼트로 직렬화되어 모델에 들어간다. 인코더와 프로젝터가 없는 NEO-ov 같은 네이티브 one-vision 모델에는 알고리즘 변경 없이 위치 메타데이터만 보존하는 적응을 적용한다. 각 토큰을 (임베딩, 소스 프레임, 원래 공간 좌표)로 들고 다니면서 선택·서브샘플링 인덱스를 그대로 따라가게 하고, 읽기 시점에 원래의 시공간 위치로 복원해 <IMG_CONTEXT> 자리에 넣는다.

전제와 한계

실험은 스트리밍과 롱비디오 양쪽에서 이뤄졌다. 스트리밍은 OVO-Bench의 9개 backward-tracing·실시간 태스크와 StreamingBench의 실시간 시각 이해 서브셋, 롱비디오는 LongVideoBench의 visual-only 검증 분할과 Video-MME-v2 전체를 쓴다. 백본은 Gemma 4 E2B/E4B(모듈형 인코더-프로젝터)와 NEO-ov 2B(네이티브 one-vision)이고, 비교 대상은 STC-Pruner, StreamingTOM-CTR, CausalMem, 그리고 압축하지 않는 Vanilla다. 스트리밍 접두사는 32프레임, 롱비디오는 64프레임을 샘플링하고, 모든 압축 기법이 디코더에 노출하는 시각 토큰 예산의 약 10%를 사용하도록 맞췄다. KeyRec은 질의 무관 영속 메모리로 밀집 시각 입력의 약 20%를 유지하되 질의마다 10%만 읽어 들인다. 결과적으로 15개 설정 중 13개에서 최고 압축 성능을 기록했고, 스트리밍 9개 설정 중 8개에서 1위를 차지하며 OVO-Bench Realtime과 StreamingBench에서 가장 강한 압축 베이스라인을 2.21~18.37포인트 앞섰다. 같은 9개 설정 전부에서 Vanilla와 같거나 능가했고 최대 10.01포인트 이득을 냈다. 롱비디오는 6개 설정 중 5개에서 최고 압축 결과를 냈지만 Vanilla보다 0.30~3.37포인트 낮아, 10% 읽기가 롱비디오 능력을 상당 부분 보존하되 모든 세밀한 증거를 담지는 못한다는 것을 보여준다. NEO-ov 2B에서는 스트리밍·롱비디오를 통틀어 모든 설정에서 최고 압축 성능을 냈다.

추가 분석도 방법의 성격을 분명히 한다. 디코더 노출 비율을 바꿔가며 본 실험에서 KeyRec은 작은 예산에서 빠르게 개선되다 5% 읽기에서 정점을 찍고 이후 완만히 하락했으며, 정점 구성은 압축하지 않은 Vanilla보다도 높았다. 영속 저장량을 비슷하게 맞춘 조건에서 KeyRec은 5% 읽기로 베이스라인 10%를, 10% 읽기로 베이스라인 20%를 상회했다. 즉 이득이 단순히 토큰을 더 많이 저장한 데서 오는 것이 아니라는 통제다. 프레임 수를 늘린 실험에서는 밀집 Vanilla가 Gemma에서 512프레임, NEO-ov에서 128프레임 이상에서 메모리 부족으로 죽는 반면, NEO-ov에서 STC-Pruner와 CausalMem은 크게 무너지고 KeyRec은 32~512프레임 구간에서 안정적으로 512프레임에서도 44% 이상을 유지했다(두 베이스라인은 25% 미만). 질의 적응 라우터를 고정 배분 정책과 비교하면, OVO-Bench Backward는 이벤트 메모리를, OVO-Bench Realtime은 최근 증거를 강하게 선호하고 LongVideoBench는 혼합을 선호해 어떤 단일 고정 배분도 모든 설정에서 잘 하지 못했다. 지연과 메모리에서는 텍스트 전용 라우팅 오버헤드가 영상이 길어질수록 상각되어, 가장 강한 압축 경쟁자 대비 E2E 오버헤드가 64프레임의 약 19%에서 512프레임의 10%로 줄었다. Vanilla는 256프레임에서 이미 39.23GiB에 도달한다. 32프레임 상한을 제거한 1FPS 전체 접두사 프로토콜에서도 디코더 예산을 1,792토큰으로 고정한 채 두 백본 모두에서 CausalMem보다 높은 성능을 냈다.

개발자 관점에서 이 논문의 실용적 요점은 압축을 '무엇을 남길까'가 아니라 '메모리를 어떻게 조직하고 얼마나 읽을까'로 분리했다는 데 있다. 질의 무관하게 메모리를 미리 만들어 두고 질의마다 고정 예산만 읽는 구조는, 스트리밍 서비스에서 지연과 GPU 메모리 상한을 영상 길이와 무관하게 예측 가능하게 만든다. 여러 질문이 같은 영상에 반복해서 들어오는 롱비디오 QA 파이프라인이라면 프레임 재처리를 없앨 수 있다는 점이 특히 크다. 다만 도입 전에 확인할 것은 세 가지다. 라우터가 다섯 상태 중 하나를 고르는 이산 결정이라 질문 분포가 학습 시 가정과 다르면 배분이 어긋날 수 있고, 이벤트 병합 임계값 γ·δ와 이벤트 크기 m, 용량 K, 제거 가중치 λ 같은 하이퍼파라미터가 성능을 좌우하며, 인코더 없는 네이티브 모델에서는 위치 메타데이터를 보존하는 부기가 필수라는 점이다.

저자들이 밝힌 한계는 분명하다. 롱비디오 압축은 무손실이 아니어서 Vanilla 대비 0.30~3.37포인트 격차가 남고, 프레임 수를 늘린 실험에서 압축 기법들은 가능한 구간에서 대체로 Vanilla 아래에 머물러 공격적인 토큰 축소가 밀집 롱비디오 성능을 완전히 보존하지는 못한다. 또한 기존 토큰 선택 정책이 네이티브 one-vision 모델로 그대로 전이되지 않는다는 점, 즉 아키텍처 고유의 신호와 위치 메커니즘, 시각 토큰 인터페이스가 기존 모듈형 VLM과 달라 압축 기법의 효과가 크게 달라질 수 있다는 점을 미해결 과제로 남긴다. KeyRec의 NEO-ov 적응도 알고리즘을 바꾸지 않은 구조 보존적 부기에 기반한 초기 탐색이라는 위치를 스스로 규정한다.