~/satyajit

VideoChat3: a 4B video model that watches longer for less

mdjsonmcp

2026-07-17 · 8 min · multimodal · video-understanding · vision-language · efficiency · explainer

VideoChat3, from Nanjing University, Shanghai AI Lab, NTU, and Peking University (arXiv 2607.14935, HF), is a 4B-parameter video multimodal LLM with one clear thesis: you should not have to pick between a model that generalizes across video types, a model that is cheap to run on long clips, and a model you can actually reproduce. Most video MLLMs give you one of the three. This one aims for all three, and ships the training data to prove the last.

The interesting part is not the leaderboard — it is how a 4B model stays coherent over 2048 frames without the token count exploding. Two mechanisms carry that: an inflated 3D tokenizer, and adaptive frame resolution. I'll walk both, then the numbers.

The problem: tokens grow with time

A video is frames, and every frame is a few hundred vision tokens. Feed a clip in frame-by-frame and the sequence length grows linearly with duration — a few thousand tokens for a short clip, tens of thousands for a long one. That is what makes long video expensive: the LLM pays quadratic attention over a token budget set by the tokenizer, and the tokenizer, if it treats each frame independently, has no reason to be frugal.

Two failure modes fall out of that. Compute blows up on long clips. And a 2D image tokenizer, bolted on frame-by-frame, never models motion — it sees a stack of stills. VideoChat3 attacks both at the tokenizer.

I3D-ViT: inflating a 2D tokenizer into 3D

The first move is the Inflated 3D Vision Transformer (I3D-ViT). Start from a 2D image encoder — a plain patch-and-attend ViT — and inflate it into a spatiotemporal one instead of training a video encoder from scratch. The inflation is three steps:

  1. Chunk the frames. Group T = 4 consecutive frames into a chunk.
  2. Attend within the chunk. Run self-attention across the chunk's tokens, so spatial and temporal structure are modelled together — motion, locally.
  3. Pool the chunk down. A temporal pooling (×4) plus a 2×2 spatial merge collapse each chunk to a compact, motion-aware token slot.

Temporal ÷4 times spatial ÷4 is a 16× spatiotemporal compression — the token budget grows with the frame count, but 16× slower than the naive per-frame path. Drag the frame count and watch where the tokens go:

I3D-ViT · frames → chunk attention → temporal pool → 16× fewer tokensillustrative
input · 16 native-res frames, chunked T=4chunk-wise spatiotemporal self-attentiontemporal pool ×4 · spatial merge 2×2 → ÷16output · 4 motion-aware slots · ÷16 tokens
input frames (drag)in 1,024 → out 64 tokens · 4 chunks

The tokenizer never sees frames one at a time. It groups 4 consecutive frames into a chunk, runs self-attention inside the chunk so motion is modelled locally, then pools the chunk down to a single temporal slot — 64 spatial tokens per frame become 4 per frame after the 2×2 merge and ×4 temporal pool. A 16× spatiotemporal compression, and the token budget grows with the frame count instead of exploding with it.

The reason this works without wrecking accuracy: the compression happens after the chunk has been attended, so motion is already encoded into the surviving tokens. You are not throwing frames away — you are summarising each 4-frame window into one slot that remembers what moved. Native resolution and aspect ratio are preserved through absolute temporal embeddings, so the model still knows when each token happened.

I3D-ViT pipeline: native-resolution frames are patchified, given spatial and temporal positional embeddings, passed through variable-length self-attention within 4-frame chunks, then chunk-wise temporal pooling and a 2x2 pixel-shuffle merge feed compact video tokens into the LLM.
I3D-ViT inflates a 2D tokenizer: patchify → spatial + temporal position embeddings → variable-length self-attention inside frame chunks → temporal pooling + 2×2 merge → compact tokens into the LLM (Li et al., 2026, Figure 2).

Adaptive frame resolution: spend pixels where the evidence is

Compression handles the count of tokens. The second move handles the cost per frame. In a streaming setting most of a video is uneventful — a static room, a held shot, dead air. Processing every frame at high resolution spends the same budget on the boring frames as on the one that answers the question.

So VideoChat3 conditions the per-frame resolution on state. Routine moments are perceived under a low 224²-pixel quota. When a Standby cue fires — the signal that an answer is about to appear — the following window is enlarged to a 448² quota, roughly 4× the tokens, to catch the detail. Click frames to promote them and watch the budget move:

adaptive frame resolution · 224² routine, 448² on the eventillustrative
live stream · click a frame to raise it to 448² →224²silence224²silence224²silence224²silence224²standby448²resp448²resp448²resp224²silence224²silence224²silence224²silenceadaptive1,344 tokall 448²3,072 tok
preset
3/12 high-res · 56% fewer tokens than all-448²

Most of a stream is silence — nothing worth spending pixels on — so those frames run at a 224² quota. A Standby cue says the answer is about to appear; the frames that follow jump to 448² (4× the tokens) to catch the detail. Spend the budget where the evidence is, not uniformly. The failure mode: mark too few frames critical and a fast event is seen only in low-res.

The framing is a three-state stream: Silence (nothing to report, low-res), Standby (something is coming, stay ready), Response (answer now, high-res). The budget follows the state instead of the clock. On a stream that is mostly silence, that is most of the frames spent at a quarter of the token cost.

Streaming timeline: clips 0 through N+2 are processed low-res during silence, clips N+3 and N+4 jump to high-res as a Response window opens, then clip N+5 drops back to low-res.
Adaptive perception on a live stream: low-res while Silence holds, high-res for the Response window, back to low-res after — the token quota tracks the state, not the frame index (Li et al., 2026, Figure 3).

The benchmarks

The headline: at 4B parameters, VideoChat3 beats comparable open models (Qwen3-VL-4B, Molmo2-4B) across temporal perception, long video, reasoning, temporal grounding, and online tasks — the paper's cross-benchmark sweep is one figure:

Grouped bar chart comparing Molmo2-4B, Qwen3-VL-4B, and VideoChat3 across MotionBench, TempCompass, VideoMME, LVBench, MMVU, VideoMME-v2, Charades, ActivityNet, QVHighlights, OVOBench, and StreamingBench; VideoChat3 leads on all, with large margins on the temporal-grounding benchmarks.
VideoChat3 vs Qwen3-VL-4B and Molmo2-4B across eleven benchmarks — leading everywhere, with the widest gaps on temporal grounding (Li et al., 2026, Figure 1).

Where it separates most is temporal grounding — answering when something happens, not just what. Over Qwen3-VL-4B the gains run from +9.7 (Charades) up to +20.6 (VUE-TR V2 in the TimeLens suite), depending on the benchmark. Charades makes the point:

Temporal grounding — Charades (mIoU)
VideoChat3-4B
56.1
Qwen3-VL-4B
46.4
Molmo2-4B
33.3
0204060

The same ordering holds on ActivityNet (54.8 / 48.2 / 39.8) and QVHighlights (67.1 / 58.7 / 58.7). It is not just grounding, though — the general video and reasoning benchmarks land ahead too, if by smaller margins:

Video reasoning — MMVU (%)
VideoChat3-4B
56.4
Molmo2-4B
51.2
Qwen3-VL-4B
50.5
0204060

VideoMME 70.1 (vs 69.3 / 69.6), LVBench 56.7 (vs 56.2 / 53.9), TempCompass 75.6 (vs 70.8 / 72.8), StreamingBench 83.0 (vs 80.2). The deltas on the general suites are single digits; the grounding deltas are where the tokenizer design shows up.

The efficiency payoff

The point of 16× compression is latency, and it compounds with length. Same hardware, same clip, VideoChat3 vs Qwen3-VL, end-to-end inference:

FramesQwen3-VLVideoChat3
5123.84s3.60s
102412.25s8.10s
204844.45s20.41s

At 512 frames the gap is small — the tokenizer overhead is a rounding error. At 2048 frames it is 2.2×: 44.4s → 20.4s. The compression buys you the frames the grounding benchmarks reward, at a latency that stays usable as the clip grows.

Fully open: the data, not just the weights

The "fully open" claim is the part I'd flag to anyone who has tried to reproduce a video MLLM. The bottleneck is never the architecture — it is the ~3M-sample instruction mix nobody publishes. VideoChat3 releases three:

Trained through a four-stage curriculum: tokenizer pretraining → video-language alignment → general instruction tuning → long/streaming tuning. Weights and data both out, so the recipe is checkable end to end.

What I make of it


Source: "VideoChat3: Fully Open Video MLLM for Efficient and Generalist Video Understanding," Li, Zhu, Zeng, Dong, Wu, et al. (arXiv 2607.14935). Benchmark values read from the paper's reported figures and tables; numbers quoted as reported. Interactive diagrams are my own illustration of the mechanism — token counts are illustrative, ratios are the paper's.

Cite this article

For attribution, please use the following reference or BibTeX:

Satyajit Ghana, "VideoChat3: a 4B video model that watches longer for less", ai.thesatyajit.com, July 2026.

bibtex
@misc{ghana2026videochat3,
  author = {Satyajit Ghana},
  title  = {VideoChat3: a 4B video model that watches longer for less},
  url    = {https://ai.thesatyajit.com/articles/videochat3},
  year   = {2026}
}
share