文章链接:https://arxiv.org/pdf/2508.18265
发布时间:2025.08
Copyright (c) Wang-Luning. All Rights Reserved.
模型架构上依然采用了ViT-MLP-LLM范式。其在LLM上引入了Dense和MoE模型,如GPT-OSS、Qwen3-30B-A3B等。
在训练流程上,包括如下几个阶段:
Native Pre-training:
和InternVL 3.0一样,联合预训练视觉和语言部分,使得多种模态原生对齐
SFT:
指令微调,适应下游任务
Cascade RL:
主要为了提升模型的reasoning能力。考虑到offline-RL效率高但算法上限低,online-RL效率低但算法上限高,可以将二者依次进行,来同时获得效率高和算法上限高的优势。
具体而言,先采用offline-RL的MPO进行微调,作为一个高效的warmup步骤,来让模型能够学会生成质量较高的rollout,为接下来的步骤做好准备;然后再采用online-RL的GSPO来进一步使用模型自己生成的rollouts做优化。
这样可以提高训练稳定性,因为offline-RL中的rollout收集和参数更新是解耦的,可以避免reward hacking问题,且模型性能得到一定提升后再做online-RL也能更加稳定。还能提高训练效率,因为MPO使用的rollouts是单独离线生成的,可以被多个模型重复利用。
Visual Consistency Learning (ViCO):
进一步在InternVL 3.5的基础上,在vision-language connector部分进一步引入visual resolution router (ViR)来减少推理成本,得到InternVL 3.5-Flash。
在普通InternVL 3.5中,每个image patch初始时被表示为1024个visual tokens,经过vision encoder后送入LLM之前会通过pixel shuffle模块压缩到256 tokens。然而对所有patches保持高分辨率会导致推理成本过高,而事实上有些patch(例如背景、纯色区域等)并没有很丰富的细节信息,并不需要那么高的分辨率。因此,希望能够动态地平衡效率与精度。
具体而言,在InternVL 3.5-flash中再多引入一个压缩率更高的pixel shuffle模块,其可以压缩到64 tokens。然后再引入一个patch router,其可以分析每个patch的语义并动态地将其分配到高分辨率的pixel shuffle module(->256 tokens,压缩到原先的1/4,一般适用于文字、图标、面部等细节丰富的区域)或低分辨率的module(->64 tokens,压缩到原先的1/16,一般适用于背景、纯色区域等简单内容)。
为了确保引入ViCO机制后不要产生较大算法性能下降,进一步引入两个阶段的微调:
Consistency training:
在该步骤中,整个模型的参数都会被训练,目标是最小化同样的visual input下在高分辨率和低分辨率下响应的分布差异(也即希望压缩多一点/压缩少一点后的输出结果保持差不多)。
具体而言,引入一个额外的reference model,其是冻结参数的InternVL 3.5,保持压缩率为1/4(256 tokens),而policy model则是带有两个不同压缩率模块的InternVL 3.5-flash,训练目标为:
其中,
Router training:
该步骤希望训练一个Visual Resolution Router(ViR)来智能地给不同的输入选取合适的分辨率。其是一个二分类器,使用CELoss训练。训练的总体目标是:对于那些对压缩敏感的patch(也即压缩到1/4和1/16后输出的差异很大),应该分配给小压缩率模块(1/4),反之则可以分配给大压缩率模块(1/16)。具体而言,将ViT、MLP、LLM都冻结,只训练ViR,首先计算各个样本patch在高低压缩率下的ViCO-loss(也即上一步的loss)比例:
这个比例可以衡量压缩Visual tokens带来的相对loss增加值,这个值越小说明压缩带来的影响越小,反之说明压缩带来的影响越大。设置一个阈值
其中
Test Time Scaling优化:
Deep Thinking:提升推理深度,step-by-step
Parallel Thinking:对于同一个问题生成多个响应,使用VisualPRM+Best-of-N来选取最好的作为输出,提升推理广度
Infra优化:Decoupled Vision-Language Deployment (DvD)
在推理阶段,vision encoder和LLM的计算特性不同。vision encoder负责将images转为features,是可以高度并行化的,且不依赖长期历史状态。而LLM生成需要依赖较长的历史信息,且是sequential生成的,对于内存带宽和延时很敏感。因此,将二者分别部署可以针对性地进行优化(类似PD分离的思路)。另外,vision encoder、LLM这三者对于一个输入的处理是顺序分阶段的,其形式本质上是个流水线,因此如果将它们解耦到不同节点的化,对于大量的输入可以让vision、communication、LLM部分的处理相互overlap,从而提升吞吐。
因此,将ViT+MLP和LLM分别部署在不同的节点上(vision server和language server),前者处理完得到的bf16 features会被单向地以TCP传递给后者。这样vision、communication、LLM这三部分可以形成一个异步的3-stage的流水线,从而减少阻塞,提升overlap。