LLaVA-OneVision — 단일 이미지, 멀티 이미지, 비디오를 하나의 모델로 처리하기
LLaVA-OneVision(Li et al., 2024년 8월) 이전의 공개 비전-언어 모델(open Vision-Language Model; open-VLM) 진영에는 서로 다른 계보(lineage)가 있었습니다. 단일 이미지는 LLaVA-1.5가, 멀티 이미지는 Mantis와 VILA 같은 모델이, 비디오는 Video-LLaVA와 Video-LLaMA 같은 모델이 맡아왔습니다. 각각의 모델은 자기 분야의 벤치마크(benchmark)에서는 좋은 결과를 냈지만 다른 시나리오(scenario)에서는 무너졌습니다. LLaVA-OneVision은 단일 커리큘럼(curriculum)으로 하나의 모델을 학습해 세 가지 시나리오 모두에서 우위를 차지할 수 있으며, 이때 나타나는 창발적인 과제 전이 효과(emergent task-transfer effect), 즉 단일 이미지에서 익힌 기술이 비디오로 이전되고 멀티 이미지에서 익힌 추론이 단일 이미지로 이전되는 효과가 전문 모델(specialist)들을 합친 것보다 더 낫다고 주장했습니다. 그 비법(recipe)은 의외로 단순합니다. 모든 시나리오에서 일정하게 유지되는 비주얼 토큰 예산(visual-token budget), 그리고 단일 이미지에서 OneVision(멀티 이미지)을 거쳐 비디오로 이동하는 명시적 커리큘럼입니다. 이 강의에서는 그 예산, 커리큘럼, 그리고 창발적으로 나타나는 능력을 함께 읽어봅니다.
유형: Build
언어: Python (표준 라이브러리, 토큰 예산 해결기와 커리큘럼 플래너)
선수 지식: Phase 12 · 05 (LLaVA), Phase 12 · 06 (any-resolution)
예상 시간: 약 180분
학습 목표
- 단일 이미지(single-image), 멀티 이미지(multi-image), 비디오 입력 전반에서 일정하게 유지되는 비주얼 토큰 예산을 설계합니다.
- 파국적 망각(catastrophic forgetting) 없이 단일 이미지에서 익힌 기술을 비디오로 전이(transfer)시키는 학습 커리큘럼 순서를 정합니다.
- 커리큘럼이 제대로 설계되면 동일한 파라미터 수(parameter count)에서 하나의 통합 모델이 전문 모델보다 더 나은 이유를 설명합니다.
- LLaVA-OneVision이 보고한 세 가지 창발적 능력(emergent capability), 즉 멀티 카메라 추론(multi-camera reasoning), 세트-오브-마크 프롬프팅(set-of-mark prompting), 아이폰 스크린샷 에이전트(iPhone-screenshot agent)를 말할 수 있습니다.
문제
이미지, 멀티 이미지, 비디오는 각각 모델에 서로 다른 압력을 줍니다.
단일 이미지는 광학 문자 인식(Optical Character Recognition; OCR)과 미세한 세부(fine detail)를 잡아내기 위해 고해상도 토큰이 필요합니다. 보통 AnyRes를 사용해 약 2880개의 비주얼 토큰을 씁니다. 샘플당 예산은 이미지 한 장에 2880 토큰입니다.
멀티 이미지는 여러 이미지를 중간 해상도(moderate resolution)로 함께 넣어야 합니다. 이미지 사이를 가로지르는 추론(reasoning)이 컨텍스트 안에 모두 들어가야 하기 때문입니다. 보통 이미지당 약 576 토큰을 씁니다. 샘플당 예산은 이미지 48장, 각 576 토큰, 합쳐서 23004600 토큰입니다.
비디오는 시간적 변화(temporal dynamics)를 잡아내기 위해 많은 프레임(frame)을 낮은 해상도로 넣어야 합니다. 풀링(pooling) 이후 프레임당 약 196 토큰을 씁니다. 샘플당 예산은 프레임 832개, 각 196 토큰, 합쳐서 16006200 토큰입니다.
별도 모델을 학습한다면 하나의 예산만 골라도 충분합니다. 하지만 하나의 모델을 학습한다면 컨텍스트(context)를 터뜨리지 않으면서 시나리오별로 예산이 합리적으로 확장(scaling)되도록 해야 합니다.
OneVision 이전의 기본 답은 "한 시나리오만 학습하고 나머지는 무시한다"였습니다. Video-LLaVA는 이미지 모델에 비디오 학습 단계를 사후적으로 덧붙였습니다. LLaVA-NeXT는 타일링(tiling)으로 멀티 이미지 지원을 추가했습니다. 하지만 어느 쪽도 세 가지 시나리오를 모두 깔끔하게 다루지는 못했습니다.
개념
OneVision 토큰 예산
LLaVA-OneVision은 샘플당 대략 3000~4000개의 비주얼 토큰으로 통합 예산을 잡고, 이를 시나리오마다 다르게 배분합니다.
- 단일 이미지: AnyRes-9(3x3 타일과 썸네일(thumbnail) 한 장)를 사용합니다. 각 타일은 384 해상도에서 729개의 패치(patch)를 만들고, 2x2 양선형 풀링(bilinear pooling)을 공격적으로 적용해 타일당 182 토큰으로 줄입니다. 합쳐서
9 * 182 + 182 = 1820 토큰입니다. 또는 AnyRes-4를 타일당 729 토큰으로 사용하면 2916 + 729 토큰이 됩니다.
- 멀티 이미지: 각 이미지를 중간 해상도(384, 타일링 없음)로 처리합니다. 풀링을 거치지 않고 729 토큰이며, 6장을 넣으면 4374 토큰입니다.
- 비디오: 384 해상도의 프레임 32개에 공격적인 3x3 양선형 풀링을 적용합니다. 프레임당 81 토큰이고, 합쳐서
32 * 81 = 2592 토큰입니다.
이렇게 배분하면 총 토큰 수가 대략 일정하게 유지됩니다. 거대 언어 모델(Large Language Model; LLM)은 컨텍스트를 터뜨리는 배치(batch)를 보지 않습니다. 인코더(encoder)는 시나리오마다 서로 다른 기하 구조(geometry)를 만들어내지만, LLM은 비슷한 크기의 예산만 소비합니다.
3단계 커리큘럼
LLaVA-OneVision은 세 단계로 학습합니다.
- 단일 이미지 지도 미세 조정 단계(Single-image SFT, stage SI). 모든 데이터가 단일 이미지와 텍스트 쌍입니다. 고해상도 AnyRes 입력으로 학습해 지각(perception), OCR, 미세 단위 이해(fine-grained understanding)를 가르칩니다. LLaVA-NeXT 데이터와 OneVision 전용 단일 이미지 데이터를 함께 사용합니다.
- OneVision SFT 단계(stage OV). 단일 이미지, 멀티 이미지, 비디오를 섞습니다. 비디오는 균일하게 표본 추출한(uniformly sampled) 프레임을 사용합니다. 통합 토큰 예산으로 학습하며, 이질적인 배치 형상(heterogeneous batch shape)을 처리하는 법을 가르칩니다. 가중치(weight)는 초기화하지 않고 stage SI에서 그대로 이어서 학습합니다.
- 과제 전이 단계(Task transfer, stage TT). 목표 과제 혼합(target task mix)으로 학습을 계속합니다. 제품(product)에 따라 멀티 이미지나 비디오 비중을 더 높일 수 있으며, 배포(deployment)용으로 선택적인 미세 조정(fine-tune)을 더 진행할 수 있습니다.
핵심은 커리큘럼 순서입니다. 같은 데이터를 쓰더라도 비디오 먼저(video-first)나 멀티 이미지 먼저(multi-image-first)로 학습하면, 단일 이미지 먼저(single-image-first) 학습한 경우보다 이미지 성능이 떨어집니다. 논문은 이 점을 명시적으로 절제 실험(ablation)으로 보였습니다.
커리큘럼이 동작하는 이유
단일 이미지 학습은 지각의 토대를 만듭니다. 패치 토큰은 미세 단위의 시각적 특징(fine-grained visual feature)을 담고, LLM은 이를 텍스트와 통합하는 법을 배웁니다. 멀티 이미지와 비디오는 여기에 또 다른 종류의 구조적 문제를 더합니다. 어느 이미지가 어느 이미지인지, 무엇이 먼저 일어났는지 같은 문제이며, 강한 지각 토대 없이 이러한 구조를 학습하기는 어렵습니다.
처음부터 모든 시나리오를 함께 학습하면 모델은 지각을 과소 적합(underfit)하고 구조를 과적합(overfit)하기 쉽습니다. 배치마다 들어가는 단일 이미지 데이터의 양은 제한적이고, 멀티 이미지와 비디오 데이터에 담긴 구조적 패턴은 풍부하기 때문입니다. 결과적으로 이미지 사이의 추론 패턴은 따라가지만 시각적으로 얕은 모델이 나오기 쉽습니다.
커리큘럼 순서를 지키면 stage SI에서 지각의 강도(perception strength)를 얻고, stage OV에서 합성적·시간적 추론(compositional/temporal reasoning) 능력을 얻으며, 둘 중 어느 쪽도 잃지 않게 됩니다.
시나리오를 넘는 창발적 기술
LLaVA-OneVision 논문은 세 가지 창발적 능력을 보고합니다.
- 멀티 카메라 추론(Multi-camera reasoning). 멀티 이미지와 비디오를 따로 학습했을 뿐인데, 추론(inference)에서는 멀티 카메라 주행 장면에 대해 추론하게 합니다. 학습 중 그 정확한 형식을 본 적이 없는데도 모델은 시점(view)들을 올바르게 통합합니다.
- 세트-오브-마크 프롬프팅(Set-of-mark prompting). 사용자가 이미지 속 객체에 번호 마크를 붙이고 모델에게 "마크 3은 마크 7에 대해 무엇을 하고 있는가" 같은 질문을 던집니다. 마크나 주석(annotation)을 직접 학습한 적은 없지만, 공간적 정합(spatial grounding)과 멀티 이미지 참조(multi-image reference)의 조합에서 능력이 생겨납니다.
- 아이폰 스크린샷 에이전트(iPhone-screenshot agent). 사용자가 아이폰 화면의 스크린샷을 주고 다음 클릭을 계획하게 합니다. 사용자 인터페이스(UI) 스크린샷, 사용자 작업 흐름(workflow) 비디오, 멀티 이미지 비포-애프터(before/after) 쌍을 학습한 결과가 에이전트(agent) 사용 사례로 일반화됩니다.
이들은 직접 학습한 과제가 아닙니다. 커리큘럼의 합성적 구조(compositional structure)에서 자연스럽게 떠오릅니다.
비주얼 토큰 풀링
토큰 예산을 맞추려면 풀링이 필요합니다. OneVision은 2차원 패치 격자(patch grid) 위에서 양선형 보간(bilinear interpolation)을 사용합니다. 예를 들어 24x24 = 576 패치가 12x12 = 144(2배 축소) 또는 8x8 = 64(3배 축소)가 됩니다. 국소성(locality)을 보존하기 위해 토큰 공간이 아니라 패치 격자 공간에서 풀링을 수행합니다.
시나리오별 풀링 배율(pooling factor) 선택 자체가 또 하나의 하이퍼파라미터(hyperparameter)입니다. 풀링을 덜 하면 토큰이 많아지고 표현(representation)이 풍부해집니다. 풀링을 더 하면 토큰이 줄어들어 더 많은 프레임이나 이미지를 한 번에 넣을 수 있습니다.
LLaVA-OneVision-1.5
2025년 후속 연구인 LLaVA-OneVision-1.5(arXiv:2509.23661)는 학습 데이터, 모델 가중치, 코드가 모두 "완전히 공개(fully open)"되어 있습니다. 일부 벤치마크에서 사유 모델(proprietary)과의 격차를 좁혔으며, 그 비법을 더 많은 사람이 쓸 수 있게 했습니다. 커리큘럼은 같고, 데이터가 더 많고, 기반(base) LLM이 더 좋아졌을 뿐, 아키텍처 변화는 없습니다.
Qwen2.5-VL과의 대비
Qwen2.5-VL(Lesson 12.09)은 다른 선택을 합니다. 고정된 풀링 대신 멀티모달 회전 위치 임베딩(Multimodal Rotary Position Embedding; M-RoPE)과 동적 초당 프레임 수(dynamic FPS)를 사용합니다. 예산이 입력에 따라 함께 확장되어, 1분짜리 비디오는 5초짜리 비디오보다 토큰을 더 많이 씁니다. LLaVA-OneVision은 예산을 고정하고 풀링을 조정합니다. 두 방식 모두 동작하지만, 구성 가능성(configurability)과 예측 가능성(predictability) 사이에서 서로 다른 절충(tradeoff)을 선택한 셈입니다.
사용해보기
code/main.py는 OneVision 스타일의 비전-언어 모델을 위한 커리큘럼·예산 플래너(planner)입니다. 샘플당 토큰 예산과 목표 시나리오 혼합(예: 단일 이미지 40%, 멀티 이미지 30%, 비디오 30%)이 주어지면 다음을 수행합니다.
- 시나리오별 해상도, 풀링 배율, 프레임 수를 배분합니다.
- 모든 시나리오가 공유 예산 안에 들어오는지 점검합니다.
- 예상 토큰 수, LLM의 부동소수점 연산량(FLOPs), 토큰이 부족한(under-tokenized) 시나리오를 보고합니다.
- 단계별 학습 일정을 출력합니다.
OneVision 미세 조정을 계획하거나, 비전-언어 모델 배포의 요청당 비용을 점검(sanity-check)할 때 사용합니다.
산출물 만들기
이 강의는 outputs/skill-onevision-budget-planner.md를 만들어 둡니다. 목표 과제 분포와 샘플당 예산이 주어지면 AnyRes 배율, 프레임당 풀링, 비디오 프레임 수, 커리큘럼 단계별 가중치를 출력합니다. 통합 시나리오용 비전-언어 모델을 학습하거나 미세 조정할 때마다 활용합니다.
연습문제
-
쉬움: 어떤 제품이 단일 이미지 80%, 멀티 이미지 10%(24장), 비디오 10%(816 프레임)를 지원합니다. 토큰 예산을 설계하세요. 무거운 멀티 이미지를 처리하지 않아 절약한 추가 예산은 어디에 넣겠습니까?
-
중간: LLaVA-OneVision 논문의 Section 4.3(emergent capabilities)을 읽으세요. 논문이 보고하지 않았지만 이 커리큘럼이 열어줄 가능성이 높은 네 번째 창발적 기술을 하나 제안하세요.
-
중간: 커리큘럼 순서를 바꿔 멀티 이미지를 먼저 학습하고, 그다음 단일 이미지, 마지막으로 비디오 순서로 학습한다고 가정합니다. 어떤 벤치마크가 어떤 이유로 나빠질지 예측하세요.
-
어려움: 논문은 샘플당 8 프레임만으로 학습한 비디오 벤치마크 결과를 보고합니다. 이 방식이 추론 시 30초짜리 비디오에도 일반화될까요? 먼저 깨지는 것은 토큰 예산입니까, 아니면 시간적 추론입니까?
-
어려움: 24x24 패치를 12x12로 양선형 풀링하면 각 차원에서 2배 축소(전체 면적 기준 4배 축소)로 표현되기도 합니다. 표준 라이브러리만 사용한 Python으로 이 풀링을 구현하고, 각 2x2 블록의 평균(mean)이 양선형 출력과 일치하는지 확인하세요.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| OneVision 시나리오(OneVision scenario) | "단일 이미지, 멀티 이미지, 또는 비디오" | 통합 비전-언어 모델이 처리하는 세 가지 입력 형상 중 하나이다. 예산은 시나리오 전반에서 일정하게 유지된다. |
| 토큰 예산(Token budget) | "샘플당 토큰 수" | 학습이나 추론 샘플마다 LLM이 보는 총 비주얼 토큰 수이며, 보통 3000~4000 사이이다. |
| 커리큘럼(Curriculum) | "학습 순서" | 창발적 전이를 위해 단일 이미지 → 멀티 이미지 → 비디오 순서로 배치한 단계 순서이다. |
| 양선형 풀링(Bilinear pooling) | "토큰을 줄이는 것" | 국소성을 보존하면서 토큰 수를 줄이기 위해 2차원 패치 격자에 양선형 보간을 적용하는 방식이다. |
| 창발적 기술(Emergent skill) | "학습하지 않았는데도 동작" | 그 능력에 직접 대응하는 학습 데이터가 없는데도 추론에서 나타나는 능력이며, 커리큘럼의 합성적 구조 덕분에 생긴다. |
| AnyRes-k | "k개 타일 구성" | 고정 해상도의 하위 타일(sub-tile) k개와 썸네일 하나로 이루어진 구조이며, 일반적으로 k ∈ {4, 9}이다. |
| 과제 전이(Task transfer) | "시나리오 사이의 일반화" | 단일 이미지에서 익힌 기술이 공유된 백본(shared backbone)을 통해 비디오로, 또는 그 반대 방향으로 적용되는 현상이다. |
더 읽을거리