InternVL3: Native Multimodal Pretraining
Open VLMs before InternVL3 mostly followed one recipe: take a text LLM trained on trillions of text tokens, bolt on a vision encoder, then fine-tune the seams. It works, but it carries alignment debt. The LLM spent its pretraining budget on pure text, so it has to learn how visual tokens relate to its text reasoning after the fact, without forgetting the text. InternVL3 (Zhu et al., April 2025) rejects that approach with one pretraining run that interleaves text and multimodal data from step one. The 78B model matches Gemini 2.5 Pro on MMMU-Pro with open weights. This lesson reads the case for native pretraining and what changes when you make it.
Learning Objectives
- Explain why post-hoc VLM training accumulates alignment debt, citing the three measurable symptoms (catastrophic forgetting, answer drift, visual-text inconsistency).
- Describe InternVL3's native pretraining corpus mix and why the ratio of text : interleaved : caption matters.
- Compare V2PE (variable visual position encoding) to Qwen2-VL's M-RoPE.
- Name the Visual Resolution Router (ViR) and Decoupled Vision-Language (DvD) deployment optimizations.
The Problem
Post-hoc VLM training is the default. LLaVA, BLIP-2, Qwen-VL, and Idefics all take an already-pretrained LLM (Llama, Vicuna, Qwen, Mistral) and add vision. The training stages typically look like:
- Frozen LLM + frozen vision encoder + trainable projector, trained on caption pairs to align embeddings.
- Unfreeze LLM, train on instruction data (LLaVA-Instruct, ShareGPT4V).
- Optional task-specific fine-tune.
Three symptoms of alignment debt show up:
- Catastrophic forgetting. The post-hoc VLM forgets text-only skills. GSM8K scores drop 5-10 points. Hellaswag scores drop. Pure-text agents regress.
- Answer drift. Small phrasings of the same visual question get different answers. The vision encoder connects to the LLM with weaker bindings than the LLM's own tokens.
- Visual-text inconsistency. The VLM can describe an image correctly and then answer a question that contradicts its own description. Visual tokens do not take part in the LLM's internal consistency checks the way text does.
These symptoms are well documented. MM1.5 Section 4 quantifies them, and LLaVA-OneVision's ablations hint at them. Native pretraining is the proposed fix.
The Concept
Native multimodal pretraining
InternVL3 trains from scratch on a corpus that is native multimodal from step one. The mix is:
- 40% text-only data (FineWeb, Proof-Pile-2, etc.)
- 35% interleaved image-text data (OBELICS, MMC4-style)
- 20% paired image-caption data
- 5% video-text data
Vision tokens, text tokens, and cross-modal interactions feed the same loss from the first gradient step. There is no alignment pretraining, no projector freezing stage, and no catastrophic forgetting to recover from.
Training is a single stage for the base model. Instruction tuning follows, but the base model already treats visual tokens as first-class inputs.
V2PE (variable visual position encoding)
Qwen2-VL uses M-RoPE with a fixed axis allocation. InternVL3 introduces V2PE, where the position encoding varies per modality type (text, image, video) with learnable scaling. In practice:
- Text tokens get 1D position (text index).
- Image patches get 2D position (row, col).
- Video frames get 3D position (time, row, col).
The three share the same RoPE frequency base, but the hidden-dim allocation per band is a learned parameter rather than a fixed split. That gives pretraining room to trade off temporal against spatial frequency resolution.
V2PE's ablation claim is 1-2 points on video benchmarks over M-RoPE at the same compute. Not a revolution, but cleaner.
Visual Resolution Router (ViR)
ViR is a deployment optimization. A photo with one object at low detail wastes tokens when encoded at 1280px native, so ViR uses a small classifier to predict the minimum resolution needed to answer the question before encoding.
The routing has three tiers: low-res (256 tokens), medium (576), high (2048+). For 60% of queries in production traffic, low or medium is sufficient. The net effect is 2-3x throughput at equal quality.
Decoupled Vision-Language deployment (DvD)
When you serve a large VLM, the vision encoder runs once per image, but the LLM runs autoregressively for each output token. The two have different bottlenecks: the encoder is bound by GPU memory bandwidth (conv + attention), the LLM by its KV cache. DvD splits them onto separate GPUs with streaming between.
For an 8B + 400M encoder model, DvD roughly doubles per-node throughput versus co-located serving.
Single-stage vs multi-stage quality
InternVL3's primary benchmark claim: at 78B params, match Gemini 2.5 Pro's MMMU-Pro. At 38B, match GPT-4o. At 8B, lead the open-8B leaderboard. All of that comes from a single-stage pretrain plus instruction-tune recipe.
The alignment-debt hypothesis is measurable. InternVL3-8B loses fewer text-benchmark points (MMLU, GSM8K) than Qwen2.5-VL-7B per unit of vision-benchmark gain. The model is more of a generalist because training was one piece, not two.
InternVL3.5 and InternVL-U
InternVL3.5 (August 2025) scales the recipe with the same native-pretrain approach, more data, and more params. MMMU improvements are incremental.
InternVL-U (2026) adds unified generation: image output via MMDiT heads on top of the same backbone. The "U" stands for "Understanding + generation," chasing Transfusion-style unified models (Lesson 12.13). One native-pretrain backbone supports both understanding and generation heads.
Trade-offs of native pretraining
Native pretraining is not free:
- Compute. Training a new VLM from scratch costs about as much as training a text LLM, which means millions of GPU-hours. Post-hoc adaptation reuses existing LLM weights and saves most of that cost.
- Data. Interleaved image-text corpora at scale are rare. OBELICS is 141M documents and MMC4 is 571M, while text alone ships at 15T tokens. Scarce multimodal pretraining data is a hard constraint.
- Base-LLM reuse. Native pretraining gives up the option to drop in a new LLM later. Post-hoc lets you swap Llama-3.1 for Llama-4 by retraining only the adapter.
The bet InternVL3 makes is that alignment debt costs more than the lost reuse. The benchmarks back the claim, and the cost to produce keeps most labs from replicating it cheaply. Post-hoc VLMs will keep existing because they stay cheaper for most projects.
Use It
code/main.py is a training-corpus mixer and ViR router simulator, stdlib only. It:
- Takes a target corpus mix (%text, %interleaved, %caption, %video) and computes expected steps per modality.
- Simulates ViR routing on a batch of queries (distribution: 50% low-detail, 30% medium, 20% high-detail) and reports average token count.
- Reports DvD throughput estimates given encoder vs LLM FLOPs.
- Prints a side-by-side of post-hoc vs native pretraining in params, compute, data, and expected alignment-debt symptoms.
Ship It
This lesson produces outputs/skill-native-vs-posthoc-auditor.md. Given a proposed VLM training plan, it audits whether to go native or post-hoc, flags alignment-debt risk, and recommends a corpus mix. Use it when you are sizing a new open-VLM project and need to pick a training strategy.
I'd run main.py before trusting the throughput numbers above. It is stdlib only and prints the corpus mix as step counts, so the 40/35/20/5 split becomes 200,000, 175,000, 100,000, and 25,000 steps out of 500,000. That is a useful way to feel what a 5% video share means in absolute terms.
The ViR simulation lands at roughly 710 average tokens per request against a 2048-token all-high-res baseline, about 2.9x. That is the top of the 2-3x range quoted above, and it depends on the 50/30/20 query mix the toy hardcodes. That mix sends 80% of traffic to low or medium tiers, more than the 60% quoted in the Concept section, so the toy flatters ViR. If your traffic skews toward documents and OCR, expect the ratio to shrink.
The DvD toy gives a smaller number than the prose: with 300 GFLOPs for the encoder and 8 GFLOPs per token over 128 tokens, it reports about 1.3x, not 2x. The LLM side dominates in that setup, so splitting the encoder off only hides a small share of the work. I'd read the roughly-2x claim as a statement about a balanced workload, and plug your own FLOPs in before believing it for your model.
One caution on the final table. Its GPU-hour and regression figures are hardcoded strings, not computed from anything, so treat them as a summary of the argument rather than measurements.
Exercises
-
Estimate the compute delta between InternVL3-8B (native pretrain) and LLaVA-OneVision-7B (post-hoc). Ratio of GPU-hours approximately? What explains the gap?
-
InternVL3 reports 40% text / 35% interleaved / 20% caption / 5% video. If your target task is video-heavy, propose a new ratio and argue why the base model still needs substantial text and caption data.
-
Read MM1.5 Section 4 on forgetting. Name the exact benchmark where post-hoc training showed the largest regression. How much did the regression cost?
-
ViR routes 60% of traffic to low-resolution encoding. What kinds of queries does it misroute (sends to low-res when high-res was needed)? Propose three router-failure modes.
-
DvD splits vision and LLM onto separate GPUs. Under what traffic pattern does DvD hurt throughput instead of helping?
Key Terms
| Term | What people say | What it actually means |
|---|---|---|
| Native multimodal pretraining | "From scratch together" | Text + image + video tokens participate in the loss from step 1, not bolted on later |
| Alignment debt | "Post-hoc penalty" | Measurable regression in text skills and answer consistency that comes from bolting vision onto a frozen LLM |
| V2PE | "Variable visual pos encoding" | Per-modality learnable position encoding allocation; InternVL3's M-RoPE successor |
| ViR | "Resolution router" | Small classifier that picks minimum resolution needed per query before encoding, saving inference tokens |
| DvD | "Decoupled deployment" | Vision encoder on one GPU, LLM on another, with stream handoff; doubles throughput for large VLMs |
| InternVL-U | "Unified understanding + generation" | 2026 follow-up that adds image-generation heads to the native-pretrain backbone |
| Interleaved corpus | "OBELICS / MMC4" | Documents with text and images in natural reading order; the raw material for native pretraining |
Code
- main.py (python, 126 lines)