多模态扩散大语言模型(MDLLMs),这类模型通过并行掩码解码实现高效生成。他和GPT的自回归编码模式不同,是并行解码的。具体是怎么做的呢?:

1. 核心概念差异
  • 传统串行预测(Autoregressive, AR)
    • 机制:像说话一样,必须先说出第一个字,确认无误后才能说第二个字。
    • 表现:解码过程是 t=1→t=2→t=3 的单向顺序。前面的 token 决定了后面的预测。
    • 致命伤:如果第一步错选了 no,后面的步骤会基于这个错误的 no 继续生成,无法回头修正,这就是图中左侧产生幻觉的原因。
  • 并行预测(Parallel Decoding / Masked Decoding)
    • 机制:像 “填空” 一样,一次性预测句子中所有位置的 token。
    • 表现:所有的 [MASK] 位置同时被模型填充。图中右侧的 t=1 时刻,noonthedeck同时被候选出来的。
    • 核心优势:因为是同时预测,解码器拥有全局视野,发现某个 token(如no)视觉站不住脚时,可以撤销该选择,保留 [MASK] 状态,等待下一轮迭代修正(即图中右侧的 An intermediate step 过程)。

因此,训练的时候MDLLMS有点像bert,是在做”完形填空“,但实际使用的时候并不是完形填空。问题在于他需要知道自己具体要生成多长,有多少个mask。具体做法是这样:

1. 训练 vs 推理的本质区别

表格

阶段 核心任务 形式 目的
训练阶段 掩码语言建模(MLM) 给句子随机打[MASK],让模型预测被掩码的 token 学习语言的全局语义、上下文依赖,以及多模态对齐
推理阶段 迭代式并行解码 [MASK]序列出发,多轮迭代逐步填充 / 修正 token 最终生成完整、通顺的目标文本

简单来说:训练是 “完形填空”,推理是 “从空白到完整的多轮并行修正”,完全不是一次性填空。

2. 实际推理的完整流程(以图 1 的问答场景为例)

以用户提问 Is there a cup in the image? 为例,MDLLMs 的实际使用流程是这样的:

  1. 初始化:根据任务预设一个最大输出长度(比如 20 个 token),生成一个全[MASK]的序列:[MASK] [MASK] [MASK] ... [MASK](共 20 位)。
  2. 第 1 轮并行预测:模型一次性给所有[MASK]位置预测候选 token 和置信度(就是图 1 中t=1的状态),同时计算每个 token 的视觉对齐分数(VISAGE 就是在这一步做修正)。
  3. 筛选与保留:根据置信度筛选出高可信度的 token(比如on the deck),保留下来;低可信度的 token(比如no不锁定,变回[MASK],等待下一轮修正。
  4. 多轮迭代:重复步骤 2-3,每一轮都并行预测所有位置的 token,修正错误、填充空白,直到:
    • 所有位置都被填充为有效 token,
    • 生成了终止符<EOS>
    • 达到预设的最大迭代轮数。
  5. 最终输出:提取迭代完成后的有效 token 序列,去掉填充位,得到最终回答 There is a cup on the deck.

这样就实现了动态长度,产生了类似于自回归的效果。

和所有的transformers一样,这种模型也是输入多少个token输出就有多少个。在传统的自回归transformers里面,每个输入token对应的预测token是本token的下一个token。而在MDLLMs里面,本token对应的预测token就是本token自己。比如说训练的时候有100个token,里面25个被mask了,模型的工作是预测这25个mask对应啥真实token。其实那75个没有被mask的也会有对应的预测token,但我们不用管,就像GPT架构里面已经确定了下一位是啥token的token也会在前向传播的时候预测一次下一个token是啥一样,我们直接不管的。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐