InternVL3:原生多模态预训练

Learn~120 minutesPython (stdlib, training-corpus mixer)先修要求: Phase 12 · 05, Phase 12 · 07 (recipes)
InternVL3 之前的每个开放 VLM 都遵循同样的三步配方:拿一个用数万亿文本 token 训练好的文本 LLM,再接上视觉编码器,然后微调接缝。这可行,但会留下对齐债务(alignment debt)——文本 LLM 把全部预训练预算都花在纯文本上,并不原生理解视觉 token。事后加入视觉时,LLM 必须重新学习如何把视觉输入与文本推理关联起来,同时不遗忘文本。InternVL3(Zhu 等,2025 年 4 月)拒绝事后方案:只做一次预训练,从第一步起文本与多模态就交错进行。结果是在 78B 参数开放权重下,MMMU-Pro 上追平 Gemini 2.5 Pro。本课解读原生预训练的理由,以及这样做之后会发生什么变化。
学习目标
  • 解释事后 VLM 训练为什么积累对齐债务,并引用三个可测量的症状(灾难性遗忘、答案漂移、视觉-文本不一致)。
  • 描述 InternVL3 的原生预训练语料混合,以及文本 : 交错 : 描述的比例为什么重要。
  • 比较 V2PE(可变视觉位置编码)与 Qwen2-VL 的 M-RoPE。
  • 说出视觉分辨率路由器(ViR)和解耦视觉-语言部署(DvD)这两项部署优化。

问题

事后 VLM 训练是默认做法。LLaVA、BLIP-2、Qwen-VL、Idefics——都拿一个已经预训练好的 LLM(Llama、Vicuna、Qwen、Mistral)再加上视觉。训练阶段通常长这样:

  1. 冻结 LLM + 冻结视觉编码器 + 可训练投影器,在描述对上训练以对齐 embedding。
  2. 解冻 LLM,在指令数据(LLaVA-Instruct、ShareGPT4V)上训练。
  3. 可选的任务特定微调。

对齐债务会表现出三个症状:

  • 灾难性遗忘。事后 VLM 会遗忘纯文本技能。GSM8K 分数下降 5-10 分,Hellaswag 分数下降,纯文本 Agent 退化。
  • 答案漂移。同一个视觉问题的细微措辞变化会得到不同答案。视觉编码器与 LLM 的连接比 LLM 自身 token 之间的连接更弱。
  • 视觉-文本不一致。VLM 能正确描述图像,接着又回答一个与自身描述矛盾的问题。视觉 token 参与 LLM 内部一致性检查的方式与文本不同。

这些症状有充分记录。MM1.5 第 4 节对它们做了量化。LLaVA-OneVision 的消融也暗示了它们。原生预训练就是答案。

概念

原生多模态预训练

InternVL3 从第一步起就在原生多模态语料上从头训练。混合比例是:

  • 40% 纯文本数据(FineWeb、Proof-Pile-2 等)
  • 35% 交错图文数据(OBELICS、MMC4 风格)
  • 20% 成对图文-描述数据
  • 5% 视频-文本数据

视觉 token、文本 token 和跨模态交互从第一次梯度步起就参与同一个损失。没有对齐预训练,没有投影器冻结阶段,也没有需要恢复的灾难性遗忘。

基座模型只有单阶段训练。之后是指令微调,但基座模型已经把视觉 token 当作一等公民来理解。

V2PE(可变视觉位置编码)

Qwen2-VL 使用固定轴分配的 M-RoPE。InternVL3 提出 V2PE:位置编码随模态类型(文本、图像、视频)变化,并使用可学习的缩放。实践中:

  • 文本 token 得到 1D 位置(文本索引)。
  • 图像 patch 得到 2D 位置(行、列)。
  • 视频帧得到 3D 位置(时间、行、列)。

三者共享相同的 RoPE 频率基,但每个带的隐藏维度分配是学习到的参数,而不是固定切分。这样就能在预训练中自由权衡时间频率分辨率与空间频率分辨率。

V2PE 的消融结论:相同算力下,视频基准比 M-RoPE 高 1-2 分。不是革命,但更干净。

视觉分辨率路由器(ViR)

部署优化。并非所有图像都需要全分辨率编码。一张只有一个物体、细节很少的照片,用 1280px 原生分辨率编码会浪费 token。ViR 是一个小型分类器,在编码前预测回答该问题所需的最低分辨率。

路由分三档:低分辨率(256 个 token)、中(576)、高(2048+)。生产流量中 60% 的查询,低或中档就足够。净效果:质量不变,吞吐量提升 2-3 倍。

解耦视觉-语言部署(DvD)

部署大型 VLM 时,视觉编码器每张图只跑一次,而 LLM 要为每个输出 token 自回归运行。两个组件的瓶颈不同(视觉 = conv + attention 的 GPU 显存带宽;LLM = KV cache)。DvD 把它们拆到不同 GPU 上,中间流式传输。

对 8B + 400M 编码器的模型,DvD 相比同机部署大约能把每节点吞吐量翻倍。

单阶段与多阶段的质量

InternVL3 的主要基准主张:78B 参数匹配 Gemini 2.5 Pro 的 MMMU-Pro。38B 匹配 GPT-4o。8B 领跑开放 8B 排行榜。全部来自单阶段预训练 + 指令微调配方。

对齐债务假设是可测量的:每单位视觉基准增益,InternVL3-8B 损失的文本基准分数(MMLU、GSM8K)比 Qwen2.5-VL-7B 更少。这个模型更像通才,因为训练是一个整体,而不是两块拼起来。

InternVL3.5 与 InternVL-U

InternVL3.5(2025 年 8 月)扩展了这套配方。同样的原生预训练路线,更多数据,更多参数。MMMU 的提升是增量的。

InternVL-U(2026)加入统一生成——在相同主干上用 MMDiT 头输出图像。「U」代表「理解 + 生成」,追赶 Transfusion 风格的统一模型(第 12.13 课)。同一个原生预训练主干同时支持理解头和生成头。

原生预训练的权衡

原生预训练不是免费的:

  • 算力。从头训练新 VLM 的成本与训练文本 LLM 相同——数百万 GPU 小时。事后适配复用现有 LLM 权重,省下大部分成本。
  • 数据。大规模交错图文语料很稀缺。OBELICS 有 1.41 亿文档;MMC4 有 5.71 亿。纯文本则有 15T token。多模态预训练数据的稀缺是硬约束。
  • 基座 LLM 复用。原生预训练放弃了以后换入新 LLM 的选项。事后方案只重训适配器,就能把 Llama-3.1 换成 Llama-4。

InternVL3 押的注是:对齐债务比复用损失更糟。基准支持这个主张。制造成本的门槛让未来的实验室难以廉价复制。事后 VLM 会继续存在,因为对大多数项目来说它们仍更便宜。

l5-native-pretrain静态版本未包含此交互图

使用它

code/main.py 是训练语料混合器和 ViR 路由模拟器。它会:

  • 接收目标语料混合比例(%文本、%交错、%描述、%视频),并计算每个模态的训练步数。
  • 在一批查询上模拟 ViR 路由(分布:50% 低细节、30% 中、20% 高细节),并报告平均 token 数。
  • 给定编码器与 LLM 的 FLOPs,报告 DvD 吞吐量估计。
  • 并排打印事后预训练与原生预训练在参数、算力、数据和预期对齐债务症状上的对比。

交付它

本课产出 outputs/skill-native-vs-posthoc-auditor.md。给定一个 VLM 训练方案,它审计应该走原生还是事后路线,标记对齐债务风险,并推荐语料混合。当你评估新的开放 VLM 项目规模、需要选择训练策略时可以用它。

练习

  1. 估计 InternVL3-8B(原生预训练)与 LLaVA-OneVision-7B(事后)之间的算力差。GPU 小时比例大约是多少?差距如何解释?
  1. InternVL3 报告 40% 文本 / 35% 交错 / 20% 描述 / 5% 视频。如果你的目标任务偏视频,提出新的比例,并论证基座模型为什么仍需要大量文本和描述数据。
  1. 阅读 MM1.5 第 4 节关于遗忘的内容。说出事后训练出现最大回退的确切基准。回退代价是多少?
  1. ViR 把 60% 的流量路由到低分辨率编码。它会误路由哪些查询(本需高分辨率却送到低分辨率)?提出三种路由器失效模式。
  1. DvD 把视觉和 LLM 拆到不同 GPU。在什么流量模式下,DvD 会损害吞吐量而不是帮助?

关键术语

术语人们怎么说实际含义
原生多模态预训练「从一开始一起训」文本 + 图像 + 视频 token 从第 1 步起参与损失,而不是后来接上
对齐债务「事后惩罚」把视觉接到冻结 LLM 上导致的文本技能和答案一致性上的可测量回退
V2PE「可变视觉位置编码」按模态可学习的位置编码分配;InternVL3 对 M-RoPE 的继任方案
ViR「分辨率路由器」小型分类器,编码前为每个查询挑选所需最低分辨率,节省推理 token
DvD「解耦部署」视觉编码器一块 GPU、LLM 另一块,之间流式交接;大型 VLM 吞吐量翻倍
InternVL-U「统一理解 + 生成」2026 年后续工作,在原生预训练主干上加入图像生成头
交错语料「OBELICS / MMC4」按自然阅读顺序排列文本和图像的文档;原生预训练的原材料

延伸阅读

示意图共 1 张

native-vs-posthoc diagram
native-vs-posthoc

“Stay hungry, stay foolish.”

— Steve Jobs

esc
↑↓切换↵打开esc关闭