ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

MPO混合偏好优化揭秘:InternVL3-78B-Pretrained系列推理能力+4.1分的训练算法

MPO混合偏好优化揭秘:InternVL3-78B-Pretrained系列推理能力+4.1分的训练算法

【免费下载链接】InternVL3-78B-Pretrained

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3-78B-Pretrained
点击查看免费下载

InternVL3-78B-Pretrained 是 InternVL3 系列 78B 参数多模态大模型的预训练权重版本。本文带你快速搞懂让该系列推理能力提升4.1 分的关键训练算法——MPO(Mixed Preference Optimization,混合偏好优化):它解决什么问题、如何工作、消融数据如何证明收益来自算法本身。

为什么需要 MPO:训练与推理的"分布不匹配"问题

多模态大模型(MLLM)在训练时有一个隐藏的"坑":

  • 训练阶段:模型基于标准答案(ground-truth)中的前序 token预测下一个 token;
  • 推理阶段:模型只能基于自己之前生成的 token往下预测。

这两者的输入分布不一致,会产生distribution shift(分布偏移),直接损害模型的Chain-of-Thought(CoT,思维链)推理能力——简单说就是"平时跟着标准答案做题没问题,自己考试时却容易跑偏"。

MPO 正是为此设计的:它引入正样本(positive)与负样本(negative)双重监督,把模型的回复分布拉回到标准答案分布上,从而修复推理短板。

💡 MPO 最早由 InternVL2.5-MPO 提出,InternVL3 系列将其作为标准后训练阶段之一继续打磨。

MPO 如何工作?三大损失函数拆解

MPO 的训练目标由三部分加权组合而成:

$$ \mathcal{L}=w_{p}\cdot\mathcal{L}{p} + w{q}\cdot\mathcal{L}{q} + w{g}\cdot\mathcal{L}_{g} $$

损失项符号通俗理解
偏好损失$\mathcal{L}_p$用正/负样本对比,让模型学会"什么是好的回答"
质量损失$\mathcal{L}_q$约束正样本本身的高质量,避免"劣币驱逐良币"
生成损失$\mathcal{L}_g$保证回复稳定、流畅地生成

其中 $w_*$ 是各损失项的权重系数。三者协同,既教模型"分辨好坏",又保住"表达能力"。

MPO 消融数据:4.1 分的推理提升从何而来

这是本文最硬核的结论。官方消融实验在7 个多模态推理基准上对比了"用 MPO 微调"与"不用 MPO"的模型:

  • InternVL3-78B:比不用 MPO 的对应版本高出4.1 分
  • InternVL3-38B:高出4.5 分

更关键的一点:MPO 使用的训练数据是 SFT(监督微调)数据的一个子集。这意味着能力提升主要来自训练算法本身,而非更多数据——对于数据资源有限的团队,这一点尤其值得关注。📊

InternVL3-78B-Pretrained 训练流程全景

MPO 在整个训练链路中处于"临门一脚"的位置,完整流程共四步:

  1. Native Multimodal Pre-Training(原生多模态预训练):把图文、视频、多模态交错数据与大规模纯文本语料混合,在同一个预训练阶段同时学语言与视觉,省去了单独的模态对齐模块;
  2. SFT(监督微调):沿用 InternVL2.5 的随机 JPEG 压缩、平方损失重加权、多模态数据打包等技术,并扩展到工具使用、GUI 操作、长上下文、视频理解等场景;
  3. MPO(混合偏好优化):即本文主角,专攻推理能力;
  4. Test-Time Scaling(测试时扩展):采用 Best-of-N 策略,配合VisualPRM-8B作为评审模型挑选最优推理答案。

架构上,该模型延续 "ViT-MLP-LLM" 范式:视觉端为 InternViT-6B-448px-V2_5,语言端为 Qwen2.5-72B,中间用 MLP 投影层连接;通过 pixel unshuffle 将视觉 token 压缩为原来的 1/4,并采用 448×448 动态分辨率切片与V2PE(可变视觉位置编码)增强长上下文理解。具体参数可参考 config.json,模型实现分别在 modeling_internvl_chat.py 与 modeling_intern_vit.py。

InternVL3-78B 快速上手:两步加载推理

⚠️注意:本仓库是预训练版本,尚未经过 SFT 与 MPO 后训练,指令遵循能力有限。想直接体验完整的多模态对话效果,请使用完成全部后训练的 InternVL3-78B 版本。

若需加载本预训练权重做研究或二次训练,只需transformers>=4.37.2:

import torch from transformers import AutoTokenizer, AutoModel model = AutoModel.from_pretrained( "OpenGVLab/InternVL3-78B-Pretrained", torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, trust_remote_code=True).eval().cuda()

💡硬件参考:16-bit 加载至少需要 3 张 80GB GPU;开启 8-bit 量化(load_in_8bit=True)则需 2 张 80GB GPU。完整的对话、多图、视频推理示例见 README.md,对话模板逻辑在 conversation.py 中实现。

新手 FAQ:3 个高频问题

Q1:MPO 和 SFT 是什么关系?SFT 教模型"照着标准答案学",MPO 进一步教模型"区分好坏回答",两者是互补的先后阶段。消融实验证明同样的数据上,MPO 能额外榨出 4 分以上推理分。

Q2:这个 Pretrained 版本能直接当聊天助手用吗?不建议。它只完成了原生多模态预训练,对话与推理能力要等 SFT + MPO 后的完整版本才有最佳表现。

Q3:想在自己数据集上复现 MPO 效果?InternVL 官方仓库以及 SWIFT、XTuner 等微调框架均已支持 InternVL 系列的后训练流程,可参考 README.md 中 Finetune 章节的指引。


总结:MPO 混合偏好优化用"正负样本双监督 + 三损失组合"这一简洁设计,为 InternVL3 系列带来了实打实的推理跃升。对于预训练版本的权重,model.safetensors.index.json 记录了全部 33 个分片的参数映射,方便做分片加载与结构检查。

【免费下载链接】InternVL3-78B-Pretrained

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3-78B-Pretrained
点击查看免费下载
上一篇:Baserow工作流引擎:业务流程建模与自动化执行
下一篇:如何构建高可用的微服务系统:Polly弹性和故障处理库实战指南

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

RELATED READING

延伸阅读

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