Published on

InternVL 3解析

Authors

预训练

InternVL 3 模型如何区分模态

InternVL 3 模型通过其架构和训练机制中的特定设计,能够明确识别序列中每个 token 属于哪种模态(例如文本、视觉或其他特定模态),这主要体现在其对位置编码和损失计算的依赖上。

以下是模型如何知道某个 token 模态的解释:

1. 统一序列中的模态类型

首先,InternVL 3 采用原生多模态预训练范式,将不同模态的 token 整合到同一个 Transformer 序列中进行处理 [1, 2]。

一个训练样本 xx 是一个统一的序列: x=(x1,x2,,xL)x=(x_1,x_2,\ldots,x_L) [1]。序列中的每个 token xix_i 可以是 [1]:

  1. 文本 token 嵌入 (Textual token embedding)。
  2. 视觉嵌入 (Visual embedding)。
  3. 其他模态特定的表示(例如视频块嵌入,video patch embeddings)。

为了让模型正确处理这个混合序列,它必须能够区分这些嵌入的类型。

2. 通过可变视觉位置编码 (V2PE) 进行区分

模型区分模态的最明确证据体现在其使用的**可变视觉位置编码(Variable Visual Position Encoding, V2PE)**机制中 [3]。

V2PE 机制要求模型在计算每个 token 的位置索引 pip_i 时,必须判断该 token 的模态,并根据模态应用不同的增量规则 [3]:

pi=pi1+{1,如果 xi 是一个文本 tokenδ,如果 xi 是一个视觉 token(3)p_i = p_{i-1} + \begin{cases} 1, & \text{如果 } x_i \text{ 是一个文本 token} \\ \delta, & \text{如果 } x_i \text{ 是一个视觉 token} \end{cases} \quad (3)
  • 文本 Token: 如果 xix_i 被识别为文本 token,位置索引将以标准的增量 1 增加,以保留其位置差异 [3]。
  • 视觉 Token: 如果 xix_i 被识别为视觉 token,位置索引将以较小的增量 δ\deltaδ<1\delta < 1)增加 [3]。

为了应用上述公式 (3),模型必须在内部具备对 xix_i 模态进行判断的能力。虽然源材料没有提供底层实现细节(例如是否在 token 嵌入中加入了模态 ID 或特殊的前缀标记),但V2PE 的计算过程强行要求模型区分这两种模态 [3]。

3. 通过选择性损失计算进行区分

在训练阶段,模型同样需要区分模态来确定损失计算的范围。InternVL 3 采用了仅针对文本的损失目标 (Ltext-only(θ)L_{\text{text-only}}(\theta)) [4]:

Ltext-only(θ)=i=2,xiTextLwilogpθ(xix1,,xi1)(6)L_{\text{text-only}}(\theta) = - \sum_{i=2, x_i \in \text{Text}}^L w_i \cdot \log p_\theta(x_i \mid x_1, \ldots, x_{i-1}) \quad (6)

该公式的求和操作明确限制在“xiTextx_i \in \text{Text}”上,这意味着只有被识别为文本 token 的预测结果才会用于计算损失和传播梯度 [4]。视觉 token 在此过程中充当上下文条件,但不被直接预测 [4]。

总结来说,模型通过在计算位置编码时应用模态特定的规则 [3],以及在计算损失时应用模态特定的过滤规则 [4],来识别和处理序列中的不同模态数据。


InternVL 3 多模态训练与损失限定

这是一个非常关键的问题,因为它涉及到 InternVL 3 实际采用的训练策略和多模态自回归公式的定义。

根据源材料的明确阐述,InternVL 3 在其原生多模态预训练(Native Multimodal Pre-Training)阶段,并没有计算除文本以外其他模态的损失值 [1, 2]。

1. 损失计算的限制

虽然 InternVL 3 采用了标准的从左到右的完整自回归目标 Lfull(θ)L_{\text{full}}(\theta) (公式 5),该公式理论上允许梯度“自然地通过所有模态的 token 进行传播” [1],但模型在实践中限制了损失计算:

“尽管这个公式自然地通过所有模态的 token 传播梯度,但我们将损失计算排他性地限制于文本 token” [1, 2]。

因此,InternVL 3 采用的是仅针对文本的损失目标 Ltext-only(θ)L_{\text{text-only}}(\theta) (公式 6) [2]。

Ltext-only(θ)=i=2,xiTextLwilogpθ(xix1,,xi1)(6)L_{\text{text-only}}(\theta) = - \sum_{i=2, x_i \in \text{Text}}^L w_i \cdot \log p_\theta(x_i \mid x_1, \ldots, x_{i-1}) \quad (6)

2. 非文本模态(如视觉 token)的意义

正因为损失计算被限制在文本 token 上,非文本模态(如视觉 token)在训练中扮演的角色就不是被预测的目标,而是预测的条件:

  • 条件上下文 (Conditioning Context): 视觉 token 充当文本预测的条件上下文(conditioning context)[2]。
  • 非预测目标: 视觉 token 不被直接预测 [2]。

3. 策略的意义和目标

这种选择性损失策略的意义在于:

  1. 优化语言解码任务: 模型的首要目标是生成连贯、准确的文本响应。通过仅在文本上计算损失,模型学会以一种有利于下游语言解码任务(downstream language decoding tasks)的方式来嵌入和利用多模态信息 [2]。
  2. 强化跨模态对齐: 在联合参数优化过程中,虽然损失只来自文本,但模型的所有参数(包括处理视觉信息的 ViT 和连接视觉与语言的 MLP,以及 LLM 本身)都被联合更新 [3, 4]。这意味着,模型必须学习如何有效地将视觉信息编码进序列中,使其能够提高下一个文本 token 的预测准确率。这强化了跨模态的对齐 [3]。
  3. 避免冗余: 计算和优化视觉 token 的损失(即让模型预测视觉 token 的序列)通常效率低下且复杂,因为它需要模型精确地重构视觉输入,这并不是一个多模态大语言模型(MLLM)的主要目标。通过只关注文本输出,模型可以专注于视觉到语言的映射能力。

简而言之,对于 InternVL 3 而言,计算除文本以外其他模态损失值的意义为零,因为模型明确选择不这样做,而是让非文本模态作为增强文本预测质量的必要输入条件 [2]。


Argmin定义及其在InternVL 3中的应用

"argmin" (或 argmin\operatorname*{argmin}) 是一个源自数学和优化理论的运算符,它代表 "argument of the minimum"(最小值的参数)。

Argmin 的含义

简单来说,argmin\operatorname*{argmin} 运算符用于找出使某个函数或表达式达到最小值时,对应的**输入变量(参数)**的值。

  • 如果有一个函数 f(x)f(x),那么 argminxf(x)\operatorname*{argmin}_x f(x) 的结果就是那个 xx,使得 f(x)f(x) 的值是所有可能值中最小的。

在 InternVL 3 中的应用

在您提供的 InternVL 3 的背景中,"argmin" 出现在联合参数优化(Joint Parameter Optimization)的目标公式中(公式 8):

θ=argminθExDmulti[Ltext-only(θ)](8)\theta^* = \operatorname*{argmin}_\theta \underset{x \in D_{\text{multi}}}{E} \left[ L_{\text{text-only}}(\theta) \right] \quad (8)

[1]

在这个公式中,argminθ\operatorname*{argmin}_\theta 的作用和意义如下:

  1. 待优化的参数(Argument)θ\theta [1]。
    • θ\theta 代表模型的所有参数 [1, 2]。InternVL 3 的训练方法(原生多模态预训练)致力于联合更新模型的所有参数 [1, 2]。
  2. 需要最小化的函数(Function)ExDmulti[Ltext-only(θ)]\underset{x \in D_{\text{multi}}}{E} \left[ L_{\text{text-only}}(\theta) \right] [1]。
    • 这个表达式代表模型参数为 θ\theta 时,在联合数据集 DmultiD_{\text{multi}} 上计算得到的仅针对文本的期望损失 (Ltext-onlyL_{\text{text-only}}) [1]。
  3. 目标 (θ\theta^*)
    • θ\theta^* 表示模型希望找到的最优参数集 [1]。
    • 因此,整个公式 θ=argminθ[]\theta^* = \operatorname*{argmin}_\theta [\dots] 的意思是:找到一组参数 θ\theta^*,使得模型在联合数据集 DmultiD_{\text{multi}} 上的仅针对文本的损失函数 Ltext-only(θ)L_{\text{text-only}}(\theta) 达到全局最小值 [1]。

通过最小化这个损失函数,模型完成了多任务联合优化,确保了文本表示和视觉特征能够协同学习,并强化了模态间的对齐 [1, 2]。


InternVL 3损失权重计算与机制

您提出的关于损失权重如何更新的问题,需要明确的是,在 InternVL 3 的多模态自回归公式中,损失权重 wiw_i 本身并不是一个需要通过梯度下降来学习或更新的参数。

相反,它是通过一个固定的公式计算得出的,其值取决于当前训练样本的特性。

以下是关于损失权重 wiw_i 如何确定的具体解释:

1. 损失权重的计算依据

在 InternVL 3 的原生多模态预训练中,损失权重 wiw_i 旨在用于加权需要计算损失的文本 token。它根据当前训练样本中需要计算损失的 token 总数 ll 来确定 [1]。

模型采用了平方平均(square averaging)策略来设计 wiw_i,公式定义如下:

wi=1l0.5(7)w_i = \frac{1}{l^{0.5}} \quad (7)

其中:

  • ll:表示当前训练样本中需要计算损失的 token 数量 [1]。由于损失计算被限制为仅针对文本 token (公式 6),因此 ll 即为样本中的文本 token 数量 [2]。
  • wiw_i:对于同一个训练样本 xx,所有用于计算损失的文本 token 都使用相同的损失权重 wiw_i [1]。

2. wiw_i 的确定方式(而非更新)

wiw_i 的确定步骤是:

  1. 接收样本: 模型接收一个训练样本 xx,该样本包含文本 token 和(多模态)视觉 token [3]。
  2. 计算 ll: 确定样本中所有文本 token 的总数 ll [1]。
  3. 计算 wiw_i: 根据 ll 的值,通过平方平均公式 wi=1l0.5w_i = \frac{1}{l^{0.5}} 计算出该样本的损失权重 [1]。
  4. 应用权重: 在计算损失 Ltext-only(θ)L_{\text{text-only}}(\theta) 时,该 wiw_i 值被用于加权每个文本 token 的负对数似然 [2]。

因此,wiw_i 在不同的训练样本之间会发生变化,因为它依赖于每个样本中需要预测的文本内容的长度 ll [1]。它是一种预设的加权机制,而不是一个训练中演变的参数。

3. 设计目的

采用平方平均策略 (l0.5l^{0.5}) 是为了解决训练多模态大语言模型(MLLM)时,梯度可能出现的偏差问题 [1, 2]:

  • 传统的词元平均(l0l^0)倾向于梯度偏向较长的响应。
  • 传统的样本平均(l1l^1)倾向于梯度偏向较短的响应 [1]。

平方平均提供了一个折衷方案,有效减轻了这种梯度偏差 [1]。

此外,在监督微调(SFT)阶段,InternVL 3 也继续沿用了平方损失重新加权(square loss re-weighting)的技术 [4],表明这种权重设计贯穿了主要的训练流程。


InternVL 3 损失权重设计

损失权重(Loss Weight),表示为 wiw_i,是 InternVL 3 中多模态自回归公式(Autoregressive Formulation)的关键组成部分,用于在训练过程中平衡不同 token 对总损失的贡献 [1]。

以下是关于损失权重 wiw_i 的详细解释:

1. 损失权重的定义和作用

  • 定义: 在 InternVL 3 的多模态自回归目标中,wiw_i 表示序列中第 ii 个 token xix_i 的损失权重 [1]。
  • 应用: 损失权重 wiw_i 用于加权模型对该 token 的预测概率的负对数似然(logpθ(xix1,,xi1)\log p_\theta(x_i \mid x_1, \ldots, x_{i-1}))[1]。它存在于完整的自回归目标 Lfull(θ)L_{\text{full}}(\theta) (公式 5) 和仅针对文本的损失目标 Ltext-only(θ)L_{\text{text-only}}(\theta) (公式 6) 中 [1, 2]。

2. 损失权重的设计动机(梯度偏差)

在训练多模态大语言模型(MLLM)时,损失权重的选择至关重要。源材料指出,广泛使用的词元平均(token averaging)和样本平均(sample averaging)策略可能导致梯度偏差问题 [2]:

  • 词元平均:可能导致梯度偏向较长的响应 [2]。
  • 样本平均:可能导致梯度偏向较短的响应 [2]。

3. InternVL 3 采用的策略

为解决上述梯度偏差问题,InternVL 3 采用了平方平均(square averaging)策略来设计损失权重 wiw_i [2]。

损失权重 wiw_i 的定义取决于用于平均的策略,其中 ll 代表训练样本中需要计算损失的 token 数量 [3]:

wi={1l0,for token averaging (词元平均)1l0.5,for square averaging (平方平均)1l1,for sample averaging (样本平均)(7)w_i = \begin{cases} \frac{1}{l^0}, & \text{for token averaging (词元平均)} \\ \frac{1}{l^{0.5}}, & \text{for square averaging (平方平均)} \\ \frac{1}{l^1}, & \text{for sample averaging (样本平均)} \end{cases} \quad (7)

InternVL 3 选择了中间的平方平均策略 1l0.5\frac{1}{l^{0.5}} [2]。


InternVL 3原生多模态联合参数优化

InternVL 3中的联合参数优化(Joint Parameter Optimization)是其区别于传统多模态大语言模型(MLLMs)训练范式的核心要素,它构成了原生多模态预训练(Native Multimodal Pre-Training)策略的基础 [1-3]。

以下是对这一概念的详细解释:

1. 核心定义与目标

联合参数优化是指在多模态预训练阶段,联合更新模型的所有参数 (θ\theta) [4]。

模型的优化目标如下公式(8)所示:

θ=argminθExDmulti[Ltext-only(θ)](8)\theta^* = \operatorname*{argmin}_\theta \underset{x \in D_{\text{multi}}}{E} \left[ L_{\text{text-only}}(\theta) \right] \quad (8)

[4]

其中:

  • θ\theta^*:代表经过优化的最终模型参数 [4]。
  • Ltext-only(θ)L_{\text{text-only}}(\theta):是模型在训练样本上计算的仅针对文本的损失目标。虽然模型处理所有模态的 token,但损失计算仅限于文本 token [4, 5]。
  • DmultiD_{\text{multi}}:是用于优化的联合数据集,它包含大规模纯文本语料库和多模态语料库(例如,图像-文本对或视频-文本对)的并集 [4]。

简而言之,模型通过在这一综合数据集上最小化针对文本的预测损失,来优化其所有参数,从而处理这些组合数据源 [4]。

2. 与传统范式的对比

联合参数优化与传统的“先语言训练,后多模态适应”(language-only training followed by multimodal adaptation)范式形成了鲜明对比 [4]:

  • 传统方法:在适应多模态输入时,通常会冻结或部分微调大型语言模型(LLM)组件,甚至视觉编码器(ViT)中的某些层 [6]。这种“后验”(post-hoc)方法常常会引入模态间的对齐挑战 [1, 7]。
  • InternVL 3 的联合优化:InternVL 3 联合训练每一个层 [6]。模型从预训练阶段就开始同时学习多模态能力和语言能力 [2, 3]。

3. 联合优化的优势与结果

这种多任务联合优化带来了多项关键优势:

  1. 同步发展:该方法确保了文本表示和视觉特征能够协同学习 [4],并且所有参数都能够同步发展 [6]。
  2. 强化对齐:联合优化强化了模态之间的对齐 [4],有效解决了传统训练流程中常见的复杂性和对齐难题 [1]。
  3. 高性能基础:最终的模型参数 (θ\theta^*) 为在纯语言任务和多模态任务中实现高性能做好了准备,无需额外的调优步骤 [6]。
  4. 效率与集成:这种统一的训练方案使模型能够以更高效、更集成的方式同时获取语言和多模态能力 [2]。

InternVL 3自回归目标公式

InternVL 3中的完整的自回归目标公式 (Lfull(θ)L_{\text{full}}(\theta)) 是其原生多模态预训练(Native Multimodal Pre-Training)方法的核心组成部分 [1, 2]。

这个公式定义了一个标准的从左到右的自回归目标,用于指导模型学习如何预测序列中的下一个 token,无论该 token 属于哪种模态 [2]。

完整的自回归目标公式 (Full Autoregressive Objective)

该公式定义如下 [2]:

Lfull(θ)=i=2Lwilogpθ(xix1,,xi1)(5)L_{\text{full}}(\theta) = - \sum_{i=2}^L w_i \cdot \log p_\theta(x_i \mid x_1, \ldots, x_{i-1}) \quad (5)

该公式的组成部分解释如下:

1. 模型与参数 (θ\theta)

  • MMθ\thetaMM 代表 InternVL 3所使用的基于 Transformer 的模型,其参数化为 θ\theta [2]。该模型设计用于同时处理文本、图像和视频等多种模态的数据 [2]。
  • Lfull(θ)L_{\text{full}}(\theta): 这是完整的损失函数(Full Autoregressive Objective),旨在通过优化模型参数 θ\theta 来最小化这个损失 [2]。

2. 训练样本序列 (xx)

  • x=(x1,x2,,xL)x = (x_1, x_2, \ldots, x_L): 这是一个任意的训练样本序列 [2]。
  • LL: 代表该序列的总 token 长度 [2]。
  • xix_i: 序列中的第 ii 个 token [2]。这个 token 可以是文本 token 嵌入、视觉嵌入,或者其他特定模态的表示(例如视频 patch 嵌入) [3]。

3. 核心预测目标

  • i=2L\sum_{i=2}^{L}: 表示对序列中所有 token(从第二个 token x2x_2 到最后一个 token xLx_L)的预测损失进行求和 [2]。序列从 i=2 开始是因为自回归模型在预测时需要前面的上下文。
  • pθ(xix1,,xi1)p_\theta(x_i \mid x_1, \ldots, x_{i-1}): 这是模型 MM(参数为 θ\theta)预测当前 token xix_i 的概率,它以上下文 x1,,xi1x_1, \ldots, x_{i-1} 为条件 [2]。
  • logp()-\log p(\cdot): 使用负对数似然(Negative Log-Likelihood)作为损失。最小化这个损失,等同于最大化模型对正确序列中每个 token 的预测概率。

4. 损失权重 (wiw_i)

  • wiw_i: 代表第 ii 个 token 的损失权重 [2]。

目标公式的意义

根据源材料的描述,这个完整的自回归目标 (5) 允许梯度自然地通过所有模态的 token 进行传播 [2]。

然而,在 InternVL 3 的实际原生多模态预训练过程中,虽然模型处理了所有模态的 token,但为了优化下游的语言解码任务,模型选择仅针对文本 token 限制损失计算,从而产生了 Ltext-only(θ)L_{\text{text-only}}(\theta) 目标 (6) [2, 4]。在 Ltext-onlyL_{\text{text-only}} 目标下,视觉 token 仅作为上下文条件来辅助文本预测,而它们本身不会被直接预测 [4]。

这种原生预训练方法将语言预训练和多模态对齐训练整合到一个阶段,使得模型能够在联合数据集上同时学习语言能力和多模态能力 [1, 5-7]。


InternVL 3原生多模态自回归公式

InternVL 3采用了原生多模态预训练方法 [1, 2],它将语言预训练和多模态对齐训练整合到一个单独的预训练阶段 [3]。其核心是多模态自回归公式(Multimodal Autoregressive Formulation),用于指导模型学习语言能力和多模态能力 [2, 3]。

以下是InternVL 3中多模态自回归公式的具体解释:

1. 完整的自回归目标 (Full Autoregressive Objective)

假设 MM 是一个参数化为 θ\theta 的基于 Transformer 的模型,它能够同时处理文本、图像和视频等模态 [4]。对于任意一个包含 LL 个 token 的训练样本 x=(x1,x2,,xL)x=(x_1,x_2,\ldots,x_L),标准的从左到右自回归目标(Autoregressive Objective)定义为:

Lfull(θ)=i=2Lwilogpθ(xix1,,xi1)(5)L_{\text{full}}(\theta) = - \sum_{i=2}^L w_i \cdot \log p_\theta(x_i \mid x_1, \ldots, x_{i-1}) \quad (5)

其中,wiw_i 表示 token ii 的损失权重 [4]。

2. 仅针对文本的损失计算 (Text-Only Loss Objective)

尽管上述公式 (5) 自然地通过所有模态的 token 传播梯度 [4],但在 InternVL3 中,损失计算被限制为仅针对文本 token [4]。

由此产生了仅针对文本的损失目标:

Ltext-only(θ)=i=2,xiTextLwilogpθ(xix1,,xi1)(6)L_{\text{text-only}}(\theta) = - \sum_{i=2, x_i \in \text{Text}}^L w_i \cdot \log p_\theta(x_i \mid x_1, \ldots, x_{i-1}) \quad (6)

在这种选择性目标下,不同模态的 token 扮演着不同的角色 [5]:

  • 文本 token:它们是模型需要直接预测的对象,并用于计算损失 [5]。
  • 视觉 token:它们的作用是作为上下文条件(conditioning context)来辅助文本预测,但它们本身不被直接预测 [5]。

通过这种方式,模型学习以一种有利于下游语言解码任务的方式嵌入多模态信息 [5]。

3. 损失权重设计(Loss Weight Design)

为了解决在训练 MLLM 时,常用的 token 平均和样本平均策略可能分别导致梯度偏向较长或较短响应的问题 [5],InternVL3 采用了平方平均(square averaging)来设计损失权重 wiw_i [5]。

损失权重 wiw_i 的定义如下:

wi={1l0,for token averaging (token 平均)1l0.5,for square averaging (平方平均)1l1,for sample averaging (样本平均)(7)w_i = \begin{cases} \frac{1}{l^0}, & \text{for token averaging (token 平均)} \\ \frac{1}{l^{0.5}}, & \text{for square averaging (平方平均)} \\ \frac{1}{l^1}, & \text{for sample averaging (样本平均)} \end{cases} \quad (7)

其中,ll 代表训练样本中需要计算损失的 token 数量 [6]。

InternVL3 采用 1l0.5\frac{1}{l^{0.5}} 的平方平均策略来减轻梯度偏差问题 [5]。

4. 联合参数优化

在原生多模态预训练过程中,InternVL3 联合更新模型的所有参数 [6, 7]。这意味着模型参数 θ\theta 是在包含大规模纯文本语料库和多模态语料库(例如图像-文本、视频-文本对)的联合数据集 DmultiD_{\text{multi}} 上进行优化的 [6]:

θ=argminθExDmulti[Ltext-only(θ)](8)\theta^* = \operatorname*{argmin}_\theta \underset{x \in D_{\text{multi}}}{E} \left[ L_{\text{text-only}}(\theta) \right] \quad (8)

这种联合优化确保了文本表示和视觉特征能够协同学习,加强了模态间的对齐 [6],并使所有参数同步发展,为纯语言和多模态任务都奠定了高性能的基础 [7]。

后训练

以下是预训练数据和后训练数据的主要区别: 一、 预训练数据 (Pre-Training Data) 预训练阶段旨在联合获取多模态和语言能力。InternVL3 采用了“原生多模态预训练”(Native Multimodal Pre-Training)范式,在一个单独的预训练阶段同时使用两类数据进行统一训练。

  1. 规模和组成 规模庞大且双模态结合: 预训练数据规模巨大,旨在学习基础能力和跨模态对齐。 两大主要类别: 预训练数据被广泛分为多模态数据和纯语言数据。 总规模: 训练总代币数(tokens)约为 2000 亿。 多模态数据: 约占 1500 亿代币。 纯语言数据: 约占 500 亿代币。 采样比例: 经验研究表明,纯语言数据与多模态数据的最佳采样比例约为 1:3。

  2. 内容和目标 多模态内容: 包含图像-文本、视频-文本或图文交错序列等多样化数据。具体包括 InternVL2.5 的预训练语料库,涵盖图像字幕、通用问答、数学、图表、光学字符识别(OCR)、知识基础、文档理解、多轮对话和医疗数据等广泛领域。 为了提高模型在实际应用中的泛化能力,还新增了图形用户界面(GUI)、工具使用、3D 场景理解和视频理解等任务相关的数据。 纯语言内容: 用于弥补多模态数据中通常较短且多样性不足的文本内容。这有助于保留和增强模型在语言理解和生成方面的能力,主要基于 InternLM2.5 的预训练数据并辅以其他开源文本数据集。 目标: 通过联合优化所有模型参数,在更高效、更整合的方式下同时获得语言和多模态能力,避免了传统事后训练(post-hoc)方法中常见的复杂性和对齐挑战。 二、 后训练数据 (Post-Training Data) 后训练策略旨在进一步增强模型的多模态对话和推理能力。InternVL3 采用两阶段后训练策略:监督微调(SFT)和混合偏好优化(MPO)。

  3. 规模和类型 规模较小且质量更高: 后训练数据规模远小于预训练数据,但要求更高的质量和特异性。 SFT 数据: 用于模仿高质量响应,样本数量从 InternVL2.5 的 1630 万增加到 InternVL3 的 2170 万。 MPO 数据(偏好对): 用于引入正面和负面样本的额外监督信号。它使用**“选择的响应”(chosen response)和“被拒绝的响应”(rejected response)构成的偏好对**。所有模型都在约 30 万个样本组成的 MPO 数据集上进行训练。

  4. 内容和目标 SFT 数据内容: 重点是更高质量、更多样化的训练样本。包括:工具使用、3D 场景理解、GUI 操作、长上下文任务、视频理解、科学图表、创意写作和多模态推理等样本。 MPO 数据内容: 基于 MMPR v1.2 构建的偏好对,涵盖通用视觉问答(VQA)、科学、图表、数学、OCR 和文档等广泛领域。 目标:SFT 目标: 通过正向监督信号,使模型能够模仿高质量的回复。 MPO 目标: 通过引入偏好损失,弥补训练和推理之间因自回归生成引起的分布差异,从而提高模型的推理能力。 总结比较 特征预训练数据 (Pre-Training Data)后训练数据 (Post-Training Data)主要目标联合学习基础语言和多模态能力增强多模态对话、推理和对齐能力主要阶段原生多模态预训练 (Native Multimodal Pre-Training)监督微调 (SFT) 和混合偏好优化 (MPO)组成类型纯文本语料 + 广泛多模态语料高质量指令样本 + 偏好对 (Chosen/Rejected)数据规模约 2000 亿代币 (大规模)SFT 约 2170 万样本;MPO 约 30 万样本 (小规模,高精选)内容重点基础知识、OCR、文档、问答、数学等广泛基础领域工具使用、3D、GUI、长上下文、科学图表、高阶推理

混合偏好优化(Mixed Preference Optimization,简称 MPO)是一种先进的后训练(post-training)技术,用于显著增强多模态大语言模型(MLLM)的性能,特别是其推理能力。

以下是对混合偏好优化的详细介绍:

  1. MPO 的背景与目标 MPO 是 InternVL3 模型系列中采用的关键后训练策略之一,与监督微调(Supervised Fine-Tuning, SFT)阶段结合使用。

核心动机: 在预训练和 SFT 阶段,模型通常被训练来预测基于先前真实标记(ground-truth tokens)的下一个标记。然而,在推理过程中,模型是基于自身先前的输出来预测每个标记的。这种真实标记与模型预测标记之间的差异会引入分布偏移(distribution shift),进而损害模型的思维链(Chain-of-Thought, CoT)推理能力。

MPO 的目的: MPO 旨在通过引入来自正面样本(positive samples)和负面样本(negative samples)的额外监督信号,来缓解上述问题。其目标是使模型的响应分布与真实分布对齐,从而提高模型的推理性能。

  1. MPO 的训练目标与组成部分 MPO 的训练目标是三种损失函数的组合:

L=wpLp+wqLq+wgLgL = w_p L_p + w_q L_q + w_g L_g

其中,ww_* 代表分配给每个损失分量的权重。

(1) 偏好损失(Preference Loss, LpL_p) 偏好损失采用 DPO 损失(Direct Preference Optimization)。

作用: 帮助模型学习选择响应(chosen response,ycy_c)和拒绝响应(rejected response,yry_r)之间的相对偏好。 (2) 质量损失(Quality Loss, LqL_q) 质量损失采用 BCO 损失(Binary Classifier Optimization)。

作用: 帮助模型理解个体响应的绝对质量。 LqL_q 由选择响应的损失 (Lq+L_q^+) 和拒绝响应的损失 (LqL_q^-) 独立计算。这要求模型区分个体响应的绝对质量。 (3) 生成损失(Generation Loss, LgL_g) 生成损失采用标准的 LM 损失(语言模型损失,定义见公式 6)。

作用: 帮助模型学习首选响应的生成过程。 3. MPO 的数据与有效性 训练数据: MPO 阶段使用了基于 MMPR v1.2 中提出的数据管道和样本构建的偏好对。这些数据覆盖了广泛的领域,包括通用视觉问答(VQA)、科学、图表、数学、OCR 和文档理解。所有参与 MPO 训练的模型(如 InternVL3-8B、38B 和 78B)都使用了大约 300K 个样本组成的相同数据集。

实验效果: 消融研究结果表明,经过 MPO 微调的模型在七个多模态推理基准上展示出优越的推理性能。

例如,InternVL3-78B 和 InternVL3-38B 相比于没有使用 MPO 的对应模型,性能分别提高了 4.1 和 4.5 个百分点。 值得注意的是,由于用于 MPO 的训练数据是 SFT 数据的一个子集,这表明性能的提升主要归功于 MPO 训练算法本身,而非仅仅是训练数据的扩充。

DPO 损失,即直接偏好优化损失(Direct Preference Optimization loss),是混合偏好优化(Mixed Preference Optimization, MPO)技术中的关键组成部分。

在 MPO 框架中,DPO 损失被用作偏好损失 (LpL_p),其主要作用是使模型能够学习选择响应(chosen response,ycy_c)和拒绝响应(rejected response,yry_r)之间的相对偏好。

以下是关于 DPO 损失的具体信息:

  1. DPO 损失的定义与作用 身份: DPO 损失 在 MPO 的训练目标中担任 LpL_p(偏好损失)的角色。 功能: 它帮助模型根据给定的偏好对 (chosen/rejected response pair) 进行优化,从而理解并倾向于产生质量更高的响应。 背景: MPO 的训练目标由三种损失函数组成,DPO 损失是其中之一,另外两种是质量损失 (LqL_q) 和生成损失 (LgL_g)。
  2. DPO 损失的公式组成 DPO 损失 LpL_p 的具体计算公式如下(定义在公式 10 中):

Lp=logσ(βlogπθ(ycx)π0(ycx)βlogπθ(yrx)π0(yrx))L_p = − \log \sigma \left( \beta \log \frac{\pi_\theta (y_c | x)}{\pi_0 (y_c | x)} − \beta \log \frac{\pi_\theta (y_r | x)}{\pi_0 (y_r | x)} \right)

其中包含以下关键元素:

xx: 表示用户的查询 (user query)。 ycy_c: 表示选择响应 (chosen response)。 yry_r: 表示拒绝响应 (rejected response)。 πθ\pi_\theta: 是当前策略模型(policy model)。 π0\pi_0: 是用于初始化当前策略模型 πθ\pi_\theta 的模型。 β\beta: 是 KL 惩罚系数 (KL penalty coefficient)。 这个公式通过比较当前模型 πθ\pi_\theta 相对于原始模型 π0\pi_0 生成选择响应 ycy_c 和拒绝响应 yry_r 的概率比值,来驱动模型最大化对首选答案的偏好。

在您提及的DPO 损失(直接偏好优化损失)公式中,这两个 π\pi 分别代表了优化过程中的两个不同的模型策略。

DPO 损失 (LpL_p) 是混合偏好优化(MPO)训练目标中的核心组成部分,用于学习选择响应 (ycy_c) 和拒绝响应 (yry_r) 之间的相对偏好。

以下是 πθ\pi_\thetaπ0\pi_0 的详细解释:

  1. πθ\pi_\theta:当前策略模型 (Policy Model) 定义: πθ\pi_\theta 是当前正在训练和优化的策略模型(policy model)。 作用: 在 MPO 过程中,模型参数 θ\theta 会根据偏好数据(选择的响应 ycy_c 和拒绝的响应 yry_r)进行更新,以最大化生成高质量(选择)响应的概率,并最小化生成低质量(拒绝)响应的概率。
  2. π0\pi_0:参考模型 (Reference Model) 定义: π0\pi_0 是用于初始化当前策略模型 πθ\pi_\theta 的模型。 作用: π0\pi_0 在 DPO 损失公式中充当一个参考基线。DPO 损失是通过计算 πθ\pi_\theta 相对于 π0\pi_0 生成响应的概率比值来定义的。 具体来说,DPO 损失通过比较概率比值 logπθ(yx)π0(yx)\log \frac{\pi_\theta (y | x)}{\pi_0 (y | x)} 来衡量当前模型 πθ\pi_\theta 相较于参考模型 π0\pi_0 偏离的程度。通过引入 β\beta 惩罚系数(KL penalty coefficient),这有效地惩罚了 πθ\pi_\theta 偏离 π0\pi_0 太远的行为,确保模型在学习人类偏好的同时,不会遗忘其在监督微调(SFT)阶段学到的核心语言能力,从而稳定训练过程。

根据您提供的资料,BCO 损失(Binary Classifier Optimization loss,二元分类器优化损失)是混合偏好优化(Mixed Preference Optimization, MPO)框架中的一个重要组成部分。

以下是关于 BCO 损失的详细解释:

  1. BCO 损失的角色与目的 在 MPO 中的角色: BCO 损失在 MPO 的整体训练目标 LL 中被用作质量损失 (LqL_q)。 MPO 目标: MPO 的训练目标是三种损失函数的组合:L=wpLp+wqLq+wgLgL = w_p L_p + w_q L_q + w_g L_g。 核心作用: DPO 损失 (LpL_p) 旨在帮助模型学习相对偏好(即 ycy_cyry_r 好)。而 BCO 损失 (LqL_q) 的作用是帮助模型理解个体响应的绝对质量。它要求模型能够区分每个单独响应(无论是选择的还是拒绝的)的绝对质量。
  2. BCO 损失的组成与计算 BCO 损失 (LqL_q) 由两个独立的损失项组成,分别针对选择响应 (ycy_c) 和拒绝响应 (yry_r) 计算:

Lq=Lq++LqL_q = L^+_q + L^-_q

其中:

(1) 选择响应的损失 (Lq+L^+_q) Lq+L^+_q 是针对选择响应(chosen response,ycy_c)计算的损失,旨在鼓励模型认为 ycy_c 是高质量的。

Lq+=logσ(βlogπθ(ycx)π0(ycx)δ)L^+_q = − \log \sigma \left( \beta \log \frac{\pi_\theta (y_c | x)}{\pi_0 (y_c | x)} − \delta \right)

(2) 拒绝响应的损失 (LqL^-_q) LqL^-_q 是针对拒绝响应(rejected response,yry_r)计算的损失,旨在鼓励模型认为 yry_r 是低质量的。

Lq=logσ((βlogπθ(yrx)π0(yrx)δ))L^-q = − \log \sigma \left( − \left( \beta \log \frac{\pi\theta (y_r | x)}{\pi_0 (y_r | x)} − \delta \right) \right)

  1. 公式中的关键参数 在上述 BCO 损失公式中,关键参数与 DPO 损失中使用的参数类似,但引入了 δ\delta

xx: 用户查询 (user query)。 πθ\pi_\theta: 当前策略模型 (policy model)。 π0\pi_0: 用于初始化策略模型 πθ\pi_\theta 的原始模型。 β\beta: KL 惩罚系数 (KL penalty coefficient)。 δ\delta: 奖励偏移(reward shift),它的计算方法是先前奖励的移动平均值 (moving average of previous rewards),用于帮助训练过程保持稳定。 4. 总结 MPO 损失组合 MPO 结合了这三种损失,以综合提升模型的推理能力:

偏好损失 (LpL_p) / DPO: 学习相对偏好(ycy_c 优于 yry_r)。 质量损失 (LqL_q) / BCO: 学习绝对质量(区分 ycy_cyry_r 各自的质量)。 生成损失 (LgL_g) / LM 损失: 帮助模型学习首选响应的生成过程。

偏好损失(Preference Loss, LpL_p)和质量损失(Quality Loss, LqL_q)都是**混合偏好优化(Mixed Preference Optimization, MPO)**训练目标中的关键组成部分。

MPO 的训练目标 LL 是三者(偏好损失 LpL_p、质量损失 LqL_q 和生成损失 LgL_g)的加权组合。它们之间的主要区别在于它们对模型施加的监督信号类型和训练目标:

  1. 偏好损失(LpL_p):学习相对偏好 特性描述来源采用的损失函数DPO 损失(Direct Preference Optimization loss)。核心目标使模型学习选择响应 (ycy_c) 和拒绝响应 (yry_r) 之间的相对偏好。工作原理通过比较当前策略模型 (πθ\pi_\theta) 相对于参考模型 (π0\pi_0) 生成 ycy_cyry_r 的概率差异,来驱动模型最大化对首选答案的偏好。这是一种基于对比的优化。2. 质量损失(LqL_q):理解绝对质量 特性描述来源采用的损失函数BCO 损失(Binary Classifier Optimization loss)。核心目标帮助模型理解个体响应的绝对质量。工作原理LqL_q 由两个独立计算的损失项 Lq+L^+_q(针对选择响应)和 LqL^-_q(针对拒绝响应)组成。这要求模型区分个体响应的绝对质量,即判断每个响应自身是高质量还是低质量。总结与区别 简而言之,偏好损失关注**“哪个更好?”,而质量损失关注“这个本身有多好(或多差)?”**。

MPO 通过结合这两种损失,旨在全面提升模型的推理能力:

LpL_p (DPO 损失) 提供了相对的监督信号,确保模型知道在给定偏好对中,哪一个答案更可取。 LqL_q (BCO 损失) 提供了绝对的监督信号,使得模型能够将每个生成的响应与一个内在的质量标准对齐。 这种混合优化(MPO)方法通过引入来自正面和负面样本的额外监督,来校准模型的响应分布,从而缓解因训练和推理阶段标记差异导致的分布偏移,最终提高了模型的思维链(CoT)推理性能。

您查询的生成损失(Generation Loss,LgL_g)是混合偏好优化(Mixed Preference Optimization, MPO)框架中的第三个关键组成部分。

根据来源资料,生成损失的作用和定义如下:

  1. 生成损失的定义与目的 身份: 在 MPO 的整体训练目标 LL 中,生成损失采用标准的语言模型损失(LM loss),即 LgL_g。 核心作用: 它的目的是帮助模型学习首选响应的生成过程。 在 MPO 中的地位: MPO 的训练目标是一个组合损失函数:L=wpLp+wqLq+wgLgL = w_p L_p + w_q L_q + w_g L_g。生成损失与其他两个损失(偏好损失 LpL_p 和质量损失 LqL_q)协同工作,共同提升模型的推理性能。
  2. 生成损失的具体公式 生成损失 LgL_g(即 LM 损失)的定义遵循原生的多模态预训练(Native Multimodal Pre-Training)阶段使用的 Ltext-only(θ)L_{\text{text-only}}(\theta) 公式(定义在公式 6 中):

Lg=Ltext-only(θ)=i=2LxiTextwilogpθ(xix1,,xi1)L_g = L_{\text{text-only}}(\theta) = − \sum_{i=2}^{L} \text{x}i \in \text{Text} w_i \cdot \log p\theta ( x_i \mid x_1, \ldots, x_{i-1} )

  1. 公式组成与细节 该公式是标准的从左到右自回归目标(left-to-right autoregressive objective),但针对多模态模型进行了限制:

计算限制: 尽管模型可以处理文本、图像和视频等所有模态,但损失计算被限制在文本标记(text tokens)上。 视觉标记的作用: 在这种选择性目标下,视觉标记(visual tokens)充当文本预测的条件上下文(conditioning context),但它们不被直接预测。这确保了模型以有利于下游语言解码任务的方式嵌入多模态信息。 wiw_i(损失权重): wiw_i 表示标记 ii 的损失权重。在 MPO 所属的 InternVL3 系列模型中,为了缓解梯度偏向较长或较短响应的问题,采用了平方平均(square averaging)策略来计算这个标记权重。