ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

InternVL2_5-38B-MPO 训练数据是怎么造出来的?300万样本 MMPR 数据集与 Dropout NTP 方法完整解析

InternVL2_5-38B-MPO 训练数据是怎么造出来的?300万样本 MMPR 数据集与 Dropout NTP 方法完整解析

【免费下载链接】InternVL2_5-38B-MPO

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL2_5-38B-MPO
点击查看免费下载

InternVL2_5-38B-MPO 是基于 InternVL2.5 与混合偏好优化(Mixed Preference Optimization, MPO)训练的开源多模态大语言模型,其核心秘密武器正是约300 万样本的 MMPR 多模态推理偏好数据集与高效的Dropout NTP(Dropout Next-Token Prediction)数据构造方法。本文将带你完整拆解这套数据工厂:样本如何打标、chosen/rejected 对如何生成,以及 MPO 三种损失函数如何协同提升推理能力。

一、先认识 InternVL2_5-38B-MPO 模型本体

在聊训练数据之前,先看看模型架构,这样更容易理解数据要为它服务什么目标:

  • 视觉部分:InternViT-6B-448px-V2_5,采用动态分辨率切图策略(448×448 tile),并支持多图与视频输入;
  • 语言部分:Qwen2.5-32B-Instruct,共 64 层 Transformer;
  • 连接桥:随机初始化的 MLP 投影器,配合 pixel unshuffle 将视觉 token 数量压缩到 1/4。

架构遵循经典的 "ViT-MLP-LLM" 范式。本地仓库中的 config.json 可以看到这些关键配置:vision_config中的intern_vit_6b、llm_config指向 Qwen2.5-32B-Instruct,downsample_ratio: 0.5、max_dynamic_patch: 12等参数,分别对应视觉下采样与动态切图上限。模型实现代码位于 modeling_internvl_chat.py 与 modeling_intern_vit.py,对话模板定义在 conversation.py。

上图为仓库自带的示例输入图片,README 中的推理演示正是用它来测试模型的图像描述能力。

二、MMPR:300 万样本的偏好数据集是怎么炼成的?

MMPR 是一个大规模、高质量的多模态推理偏好数据集,规模约3 million 样本。它解决的是偏好优化训练中最头疼的问题:谁来告诉模型"这个回答更好"?

MMPR 的构造思路非常务实——把多模态数据分为两大类,分别用不同策略打标:

1. 有明确标准答案的样本:直接对照 ground truth

这类样本(数学题、选择题、有唯一解的推理题等)处理逻辑简单粗暴:

  1. 提示模型先给出推理过程,再输出最终答案,格式为Final Answer: ***;
  2. 与标准答案匹配的响应进入正样本集$Y_p$;
  3. 不匹配、或根本没有给出明确最终答案的响应进入负样本集$Y_n$;
  4. 从 $Y_p$ 抽一条作 chosen,从 $Y_n$ 抽一条作 rejected,组成偏好对。

好处是标注成本几乎为零,全部由模型自采样 + 规则校验完成。

2. 没有明确标准答案的样本:Dropout NTP 登场

开放式问题(描述、总结、创意类任务)没有唯一答案,怎么判断"谁更好"?这就是Dropout NTP大显身手的地方,后文专门展开。

三、Dropout NTP 深度剖析:不用人标就能造出"坏回答"

Dropout NTP(Dropout Next-Token Prediction)是一种简单却高效的方法,核心思想只有一句话:

让模型"闭着眼"重写答案——拿掉图片输入让它续写,生成的结果天然更容易幻觉,于是自动成为较差的 rejected 响应。

具体流程分三步:

步骤操作产出
①用 InternVL2-8B 看着图片生成回答chosen 回答
②把这条回答截断一半保留的前半部分
③让 InternVL2-8B 在看不到图片的情况下续写剩余部分rejected 回答

这个方法为什么成立?关键在于一个不对称性:

  • 有图输入 → 回答更贴合图像事实;
  • 无图输入(Dropout 了 image 条件)→ 模型只能靠语言先验"编",幻觉概率显著更高。

因此 chosen 与 rejected 之间存在天然的偏序关系,无需人工标注或额外奖励模型,就能批量生产可信的偏好对。数据构造流水线已随官方文档开源,方便复现整条 MMPR 生产线。

💡 对新手来说这是最值得借鉴的设计:偏好数据的负样本不一定来自"错误",也可以来自"信息缺失"。

四、MPO:偏好优化怎么训才稳?

造好数据后,MPO(Mixed Preference Optimization)用一个混合损失把它们"吃"进去:

$$ \mathcal{L}=w_p\cdot\mathcal{L}{p} + w_q\cdot\mathcal{L}{q} + w_g\cdot\mathcal{L}_{g} $$

损失项算法作用
偏好损失 $\mathcal{L}_p$DPO学习 chosen 与 rejected 之间的相对偏好
质量损失 $\mathcal{L}_q$BCO学习单个回答的绝对质量($\delta$ 取历史奖励的滑动平均以稳定训练)
生成损失 $\mathcal{L}_g$SFT让模型学会生成优质回答的过程,防止只学排序不学生成

三者分别回答"哪个更好"、"这个好不好"、"怎么写出好的",这正是 MMPR 数据能发挥最大价值的原因:偏好对、质量信号、优质回答样本在一份数据里全部齐备。

五、效果验证:38B 版 MPO 后提升多少?

官方在多模态基准上对比了 InternVL2_5-38B 与 InternVL2_5-38B-MPO,提升全面且显著:

基准38B38B-MPO提升
MMBench v1.185.485.6+0.2
MMStar68.569.8+1.3
MMMU64.664.1−0.5
MathVista72.473.8+1.4
HallusionBench57.961.5+3.6
OCRBench84.188.5+4.4
MMVet67.272.5+5.3
平均分73.575.5+2.0

值得注意的是HallusionBench(幻觉)+3.6、OCRBench +4.4——恰好印证了 Dropout NTP 的价值:通过"无图续写"构造的负样本,模型重点学会了抑制幻觉、更忠实地看图作答。完整评测表格见 README.md 的 Evaluation 章节。

六、仓库关键文件索引

想深入源码或复现实验,这些文件是入口:

文件说明
README.md模型介绍、MMPR 构造流程、MPO 公式、评测结果与完整推理示例
config.json模型结构配置(ViT-6B + Qwen2.5-32B,动态分辨率参数)
modeling_internvl_chat.py多模态模型主体实现
modeling_intern_vit.pyInternViT 视觉编码器实现
conversation.py对话模板定义
examples/示例图片与视频(image1.jpg、image2.jpg、red-panda.mp4)
model.safetensors.index.json16 分片权重索引

七、如何获取并运行这个模型

git clone https://gitcode.com/OpenGVLab/InternVL2_5-38B-MPO

推理侧要求transformers>=4.37.2,加载时需trust_remote_code=True。显存参考:8-bit 量化需单张 80GB 显卡;非量化 bf16 推理至少需要两张 80GB 显卡(README 提供了split_model多卡切分方案,将 ViT 与 LLM 首层固定在卡 0 以避免 device 错位报错)。

八、小结:这套方案给新手的三点启发

  1. 数据分而治之:有标准答案的样本靠规则打标,没标准答案的靠 Dropout NTP 造负样本,300 万偏好对几乎零人工;
  2. 负样本可以"制造":故意剥夺模型的信息输入(去掉图像),幻觉就是天然的 rejected;
  3. 训练目标要立体:DPO 学相对偏好 + BCO 学绝对质量 + SFT 学生成过程,MPO 的混合损失让偏好数据物尽其用,最终 38B 版平均分 73.5 → 75.5,幻觉与 OCR 能力提升最猛。

掌握 MMPR 与 Dropout NTP 的构造逻辑,你不仅能看懂 InternVL2.5-MPO 系列(1B/2B/4B/8B/26B/38B/78B)的完整谱系,也能在自己的多模态对齐项目中复制这条低成本偏好数据生产线。

【免费下载链接】InternVL2_5-38B-MPO

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL2_5-38B-MPO
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进