MMaDA: Multimodal Large Diffusion Language Models

Paper: arXiv:2505.15809 Code: Gen-Verse/MMaDA Code reference: main @ 3cdb8709 (2026-02-14) Auxiliary RL code: Gen-Verse/dLLM-RL, main @ 10b4fd1c (2026-01-28)

1. Motivation(研究动机)

现有 unified multimodal models 通常在“理解”和“生成”之间做折中:一类模型用单个 autoregressive Transformer 把文本、图像 token 串起来,理解任务和文字生成很自然,但视觉生成往往弱于专门的 diffusion model;另一类模型把 text branch 维持为 AR、vision branch 交给 diffusion,虽然能生成图像,但预训练与后训练目标仍然是异构的,尤其很难把 reasoning / CoT / RL 这类 LLM post-training 技术自然迁移到图像生成分支。

MMaDA 想解决的具体问题是:能不能把文本推理、multimodal understanding、text-to-image generation 都写成同一种 discrete diffusion / masked-token prediction 问题,并在同一个 8B 模型里做统一的 SFT 和 RL post-training。它不是只做一个“能看图又能出图”的接口,而是尝试让模型在训练与推理时都用同一种概率建模语言:prompt 保持可见,answer / image token 作为被噪声化的 completion 逐步去噪。

这件事值得研究的原因有两点。第一,如果理解分支学到的 world knowledge 和 reasoning chain 可以通过同一个 diffusion backbone 迁移到图像生成,那么 generation 就不只是 caption-to-pixels 的贴合,而能带上事实推理和组合约束。第二,如果图像生成、图像理解和文本推理共享 masked-token denoising 训练,模型在 joint training 中可能出现跨任务正迁移:论文的 Figure 5/6 就专门分析了 text、MMU、Gen 三类任务是否同步提升。

2. Idea(核心思想)

核心洞察:把文本 token 和图像离散 token 都看作同一类“需要从 mask/noise 中恢复的离散序列”,就可以用 diffusion-style masked prediction 统一 language modeling、multimodal reasoning 和 visual generation;再通过统一 CoT 格式与 diffusion-compatible GRPO,把 post-training 也统一起来。

MMaDA 的三项关键创新是:一是用单个 diffusion MLLM 代替“语言 AR + 图像 diffusion”的混合范式,文本和图像都用 ;二是构造 mixed long-CoT finetuning,把文本推理、视觉推理、world-knowledge-aware T2I 都写成 <think>...</think> + result 的格式;三是提出 UniGRPO,把 GRPO 从 autoregressive log-prob 改写成对 masked response token 的多 timestep log-prob 估计,并配合 correctness / format / CLIP / ImageReward 等 diversified reward。

与 Show-o / Transfusion 这类“文本仍然 AR、图像走 diffusion”的方法相比,MMaDA 的根本差别是语言分支也进入 diffusion formulation;与 Emu3 / Janus 这类统一 token + AR 方案相比,MMaDA 不依赖 next-token prediction 来建模图像,而是保留 diffusion 对并行 denoising 和 masked inpainting 的优势。

Figure 1 解读:这张 qualitative comparison 把 MMaDA 放在三个任务上同时比较:文本推理、multimodal reasoning、world-knowledge-aware image generation。重点不是某一个样例赢了,而是模型在三种输出形态里都显式生成 CoT,再给出最终答案或图像;这正是论文强调“理解/推理能力帮助生成,统一生成训练反过来支持多模态理解”的入口证据。

3. Method(方法)

3.1 Overall framework:三阶段统一 diffusion pipeline

Figure 2 解读:pipeline 分成 Stage 1 pretraining、Stage 2 mixed long-CoT finetuning、Stage 3 UniGRPO。三类任务的共同接口是 prompt + response:prompt 可以是文本、图像 token 或二者组合;response 可以是文本答案、MMU 答案或图像 token。训练时只对 response/result 部分加 mask,模型学习在 prompt 条件下恢复被 mask 的 completion;推理时则从 masked completion 开始逐步去噪。

直觉上,MMaDA 把“理解任务的答案生成”和“图像任务的视觉 token 生成”都变成同一个 conditional denoising 问题:给定完整 prompt,模型不需要按 AR 顺序从左到右预测,而是可以在不同 mask ratio 下学习 completion 的全局一致性。这一点对图像生成尤其自然,也让文本推理中的 CoT 可以作为中间语义规划,影响后续图像 token 的去噪。

3.2 Unified probabilistic formulation:文本和图像都用 discrete diffusion

论文在 Table 1 中对比四类 unified model family:AR one-model、AR+Diffusion two-model、AR+Diffusion one-model、以及 MMaDA。MMaDA 的选择是:

维度MMaDA 选择含义
Network architectureLanguage: Diffusion;Vision: Diffusion文本和视觉都由同一个 diffusion-style backbone 处理
Pretraining lossLanguage: ;Vision: 不再给语言用 、给图像用另一套 objective
SamplingLanguage: semi-AR remask;Vision: cosine remask文本为了避免 EOS 过早坍缩采用 block-wise denoising;图像可整块并行去噪
Post-trainingMixed Long-CoT + UniGRPO with diversified RMCoT 和 RL 不只服务文本,也服务 MMU 与 T2I

核心损失是 masked discrete diffusion:给定原始 token 序列 和被 mask 的位置集合 ,模型在可见上下文 下恢复原 token: released code 中,models/modeling_mmada.py::MMadaModelLM.forward_process 对 t2i / lm / mmu 三类 batch 分别计算 F.cross_entropy,最后训练脚本按配置中的 t2i_coefflm_coeffmmu_coeff 加权。这里的工程实现与论文直觉一致:不是为每个任务单独写一个 head,而是在同一个 token vocabulary / mask prediction 目标下把 loss 分流统计。

3.3 Data/token interface:prompt 保持,completion 被噪声化

训练样本统一成 [prompt, result]。对文本推理,prompt 是问题,result 是 <think>...</think> 与最终答案;对 multimodal reasoning,prompt 包含图像 token 与问题,result 是推理过程和答案;对 T2I,prompt 是生成请求,result 可以先写出 <think> 中的世界知识/场景描述,再生成图像 token。

Mixed-SFT 阶段保留原始 prompt ,独立 mask result 得到 ,再让模型从 预测 。论文给出的目标可以概括为: 其中 是 result 中在 timestep 被 mask 的位置。关键点是 prompt 不被破坏,completion 被随机噪声化;这让训练条件更接近推理时“问题已经给定、答案/图像逐步生成”的形态。

3.4 Mixed Long-CoT finetuning:把文本推理、视觉推理、T2I reasoning 对齐

MMaDA 的 cold-start CoT 数据覆盖三类任务:

  • Textual reasoning:来自 ReasonFlux、LIMO、s1k、OpenThoughts、AceMath-Instruct 等数学/逻辑推理数据。
  • Multimodal reasoning:用 LMM-R1 在 GeoQA、CLEVR 等任务上生成响应,并只保留答对的样本。
  • World-knowledge-aware T2I:用 GPT-4.1 合成 science、culture、landmarks 等 factual item-description pairs,再格式化成统一 CoT trace。

统一格式是: 这一步的作用不是“给图像生成加一段漂亮解释”,而是把不同模态下的中间推理都对齐到同一个 denoising target。论文明确声称,增强文本推理能通过语义逻辑提升生成图像的 realism 和 factual consistency;后面的 ablation 与 synergy plot 用数值支持这一点。

3.5 UniGRPO:为 diffusion model 改写 GRPO

AR-GRPO 可以用 chain rule 计算 和 sequence likelihood;diffusion model 没有自然的 left-to-right chain,因此直接迁移会遇到三个问题:

  1. Local masking dependency:只有 masked region 的 token log-prob 才是有效训练信号。
  2. Mask ratio sensitivity:policy likelihood 与 mask ratio 强相关,固定或随机过度都会偏离 diffusion dynamics。
  3. Non-AR sequence likelihood:不能像 AR 那样把 token likelihood 直接连乘成完整序列概率。

Figure 2/UniGRPO panel 解读:这张源图单独展示了 Stage 3 中的 masked log-prob 估计:prompt 保持 unmasked,completion 在多个 mask ratio / timestep 下重新加噪,模型只在被 mask 的 answer token 上计算 log-prob,再把这些 token-level 信号聚合成 GRPO objective。这对应了论文中“remask response for masked log probs”的核心改写。

UniGRPO 的训练流程:给每个 prompt 从旧策略 采样 个 completion ,计算 reward 和 advantage;随后采样起始 timestep,并在 中均匀选取若干 inner-update timesteps;每个 timestep 都构造 (q, masked o_i),分别用 估计 masked token log-prob,最后用 clipped policy loss 与 KL penalty 更新。

论文将整体目标概括为: 其中 是按任务实例化的 reward, 是 KL penalty。对 token-level 更新,released dLLM-RL code 的 train/rl_mmada_v.py::forward_process 采用 PPO/GRPO 风格的 clipped surrogate: 若开启 beta>0,代码还会计算 masked-token KL estimator:kl_seq = exp(-delta)-1+delta(K3 estimator)并乘以 beta

3.6 Diversified reward modeling:同一 RL 框架,不同任务 reward

论文给三类任务定义了不同 reward:

任务Reward 组成论文中的数值
Textual reasoningCorrectness + Formatanswer correct 得 2.0;符合 <think>...</think> 格式得 0.5
Multimodal reasoningCorrectness + Format + CLIPGeoQA/CLEVR 用 correctness/format;caption 类任务加
Text-to-image generationCLIP + ImageRewardCLIP 与 ImageReward 都按 0.1 scale

这套设计服务于“同一 objective,多 reward heads”的思想:policy-gradient 的形状不变,但 reward function 随任务切换。值得注意的是,MMaDA 主 repo README 写明 UniGRPO 已进一步集成到 Gen-Verse/dLLM-RL,并指出要聚合多个 reward 主要改 reward/rl_reward_v.py

论文公式与 released code 实现差异: MMaDA 主 repo Gen-Verse/MMaDA 公开了 Base / MixCoT checkpoint、SFT 训练脚本和推理代码,但 README 中的 MMaDA-8B-Max / UniGRPO checkpoint 标注为 coming soon;UniGRPO 训练代码主要在 Gen-Verse/dLLM-RL。截至 dLLM-RL main@10b4fd1creward/rl_reward_v.py 的公开视频版本主要围绕 correctness/process-reward 数据流与 z-score normalize,未直接给出论文中 T2I 的 CLIP+ImageReward 聚合完整实现;而 MMaDA 主 repo 的 train_mmada_stage4.py / train_mmada_cot_sft.py 只在 validation/quantitative image evaluation 中加载 ImageReward。笔记中的 UniGRPO pseudocode 因此按 dLLM-RL 的实际 policy/value update 写,reward 多样性则按论文说明记录。

3.7 Inference sampling:文本半自回归,图像并行去噪

文本生成采用 LLaDA 的 semi-autoregressive denoising:总长度设为 ,执行 个 denoising steps,分成 block size 64;每步在当前 block 中 unmask 2 个最低置信度 token。这样比全局 non-AR fixed-length generation 更不容易生成过短回答,也避免 instruction-tuned model 中 EOS token 过早占据大量位置。

图像生成则不做 semi-AR block,而是把 1024 个图像 token(对应 resolution)作为单个 generation block,用 low-confidence remasking 与 cosine noise schedule,50 timesteps,classifier-free guidance scale 3.5。这个差异说明 MMaDA 虽然统一了概率建模,但 sampling policy 仍按 modality 的实际失败模式调整。

3.8 Pseudocode(基于 released code 的实现抽象)

Code reference: Gen-Verse/MMaDA main @ 3cdb8709 (2026-02-14);Gen-Verse/dLLM-RL main @ 10b4fd1c (2026-01-28) — pseudocode and mapping based on these commits

3.8.1 Unified masked-token training step

def mmada_sft_step(model, batch, cfg):
    # batch contains t2i / lm / mmu samples already formatted as prompt + response tokens
    input_ids, labels, loss_weight, mask_prob = mask_or_random_replace_tokens(
        batch.tokens,
        mask_id=model.config.mask_token_id,
        min_masking_rate=cfg.training.min_masking_rate,
    )
 
    logits, loss_t2i, loss_lm, loss_mmu = model.forward_process(
        input_ids=input_ids,
        labels=labels,
        batch_size_t2i=cfg.training.batch_size_t2i,
        batch_size_lm=cfg.training.batch_size_lm,
        batch_size_mmu=cfg.training.batch_size_mmu,
    )
 
    loss = (
        cfg.training.t2i_coeff * loss_t2i
        + cfg.training.lm_coeff * loss_lm
        + cfg.training.mmu_coeff * loss_mmu
    )
    accelerator.backward(loss)
    optimizer.step()
    lr_scheduler.step()
    optimizer.zero_grad(set_to_none=True)
    return loss

3.8.2 Semi-AR text denoising

def semi_ar_generate(model, prompt_ids, steps=512, gen_length=1024, block_length=64, mask_id=126336):
    x = torch.full((prompt_ids.size(0), prompt_ids.size(1) + gen_length), mask_id, device=prompt_ids.device)
    x[:, :prompt_ids.size(1)] = prompt_ids
 
    num_blocks = gen_length // block_length
    steps_per_block = steps // num_blocks
    for b in range(num_blocks):
        block_start = prompt_ids.size(1) + b * block_length
        block_end = block_start + block_length
        for s in range(steps_per_block):
            mask_index = x[:, block_start:block_end].eq(mask_id)
            logits = model(x).logits[:, block_start:block_end]
            probs = torch.softmax(logits, dim=-1)
            pred = torch.argmax(probs, dim=-1)
            confidence = torch.gather(probs, -1, pred.unsqueeze(-1)).squeeze(-1)
            # low-confidence remasking: transfer only a small number of tokens per step
            transfer = select_tokens_to_unmask(mask_index, confidence, k=2)
            x[:, block_start:block_end] = torch.where(transfer, pred, x[:, block_start:block_end])
    return x

3.8.3 UniGRPO masked policy update

def unigrpo_policy_step(model, old_model, ref_model, samples, rewards, cfg):
    # samples are prompt q plus response o_i; q stays unmasked, response tokens are remasked
    noisy_inputs, labels, p_mask = build_random_or_uniform_masked_rows(
        samples,
        mask_times_per_sample=cfg.training.mask_times_per_sample,
        prompt_always_visible=True,
    )
 
    with torch.no_grad():
        old_logp_tok = masked_token_logprob(old_model, noisy_inputs, labels, p_mask)
        ref_logp_tok = masked_token_logprob(ref_model, noisy_inputs, labels, p_mask)
        adv = group_normalize_advantage(rewards)
 
    new_logp_tok = masked_token_logprob(model, noisy_inputs, labels, p_mask)
    ratio = torch.exp(new_logp_tok - old_logp_tok)
    clipped = torch.clamp(ratio, 1 - cfg.training.eps, 1 + cfg.training.eps)
 
    surrogate = torch.min(ratio * adv[:, None], clipped * adv[:, None]) * p_mask
    policy_loss = -masked_average_per_sequence(surrogate).mean()
 
    kl_delta = new_logp_tok - ref_logp_tok
    if cfg.training.use_kl_estimator_k3:
        kl = torch.exp(-kl_delta) - 1.0 + kl_delta
    else:
        kl = kl_delta
    loss = policy_loss + cfg.training.beta * (kl * p_mask).sum() / noisy_inputs.size(0)
    loss.backward()
    optimizer.step()
    return loss

3.8.4 Value/process-reward path in dLLM-RL

def train_value_model(value_model, rows, cfg):
    # dLLM-RL builds per-timestep rows for MMU samples and computes returns/advantages
    input_ids, p_mask, returns, old_values = rows
    values = value_model(input_ids=input_ids)
    values = torch.where(p_mask, values, torch.zeros_like(values))
 
    v_clipped = old_values + (values - old_values).clamp(-cfg.training.eps, cfg.training.eps)
    loss_unclipped = (values - returns) ** 2
    loss_clipped = (v_clipped - returns) ** 2
    value_loss = 0.5 * torch.maximum(loss_unclipped, loss_clipped) * p_mask
    value_loss = value_loss.sum() / torch.clamp(p_mask.sum(), min=1)
    value_loss.backward()
    value_optimizer.step()
    return value_loss

3.9 Code-to-paper mapping

Code reference: Gen-Verse/MMaDA main @ 3cdb8709 (2026-02-14);Gen-Verse/dLLM-RL main @ 10b4fd1c (2026-01-28) — pseudocode and mapping based on these commits

Paper ConceptSource FileKey Class/Function
Unified diffusion MLLM backbonemodels/modeling_mmada.pyMMadaModelLM, forward_process, forward_t2i, t2i_generate, mmu_generate
LLaDA-derived Transformer backbonemodels/modeling_llada.pyLLaDAModelLM, LLaDAModel, attention/RMSNorm blocks
Stage 1/2 joint masked trainingtraining/train_mmada.py, training/train_mmada_stage2.pydata preparation, mask_or_random_replace_tokens, weighted loss_t2i + loss_lm + loss_mmu
Mixed-CoT SFTtraining/train_mmada_cot_sft.py, training/train_mmada_stage4.pyprepare_inputs_and_labels_for_chat_text, prepare_inputs_and_labels_for_mmu, generate_chat_text
Training configsconfigs/mmada_pretraining_stage1_llada_instruct.yaml, configs/mmada_pretraining_stage2_llada_instruct.yaml, configs/mmada_pretraining_stage3_llada_instruct_512_cot.yaml, configs/mmada_pretraining_stage4_llada_instruct.yamlreleased example paths, batch sizes, LR, masking schedule, resolution
Text/image inferencegenerate.py, inference_mmu.py, inference_t2i.pylow-confidence remasking, mmu_generate, t2i_generate
UniGRPO policy updatedLLM-RL/train/rl_mmada_v.pymasked rows, old log-probs, clipped ratio, KL penalty
Value/process reward trainingdLLM-RL/train/train_mmada_v_value.pycompute_returns_and_advantages_rows, clipped value loss
Reward aggregation hookdLLM-RL/reward/rl_reward_v.pycorrectness list, z-score normalization, final RL data export
RL config exampledLLM-RL/configs/rl_mmada_v_process_reward_rlhf_with_value.yamleps=0.20, beta=0.01, mask_times_per_sample=2, learning_rate=1e-6, value_learning_rate=5e-6

4. Experimental Setup(实验设置)

4.1 Datasets

  • Foundational language / multimodal data:text 使用 RefinedWeb;multimodal understanding / generation 使用 open-source image-text datasets,包括 SA-1B、CC12M、LAION-Aesthetics、SAM-LLaVA-Captions10M、JourneyDB captions 等(released configs 中给出了这些路径)。
  • Instruction tuning data:text instruction 用 Alpaca;visual instruction tuning 用 LLaVA-1.5。
  • Reasoning data:text reasoning 用 ReasonFlux、LIMO、s1k、OpenThoughts、AceMath-Instruct;MMU reasoning 用 LMM-R1 在 GeoQA、CLEVR 上生成并过滤正确样本;world-knowledge-aware T2I 用 GPT-4.1 合成 science / culture / landmarks 的 factual item-description pairs。
  • RL data:UniGRPO 使用 reasoning 相关数据集,论文点名 GSM8K、GeoQA、CLEVR 等;reward 按任务类型分别计算。

论文没有给所有数据集的精确样本总数;released YAML 给的是上限/路径,例如 Stage 1/2/3/4 示例中 max_train_examples_t2i=40000000max_train_examples_mmu=40000000,Stage 3/4 使用 multimodal_cot/ai2dclevrdocvqageoLLaVA-Instruct-150KGeo170K 等路径。

4.2 Baselines and metrics

  • Multimodal understanding:POPE、MME、Flickr30k、VQAv2(test)、GQA、MMMU、MMB、SEED;baselines 包含 LLaVA-v1.5、InstructBLIP、Qwen-VL-Chat、mPLUG-Owl2、LLaVA-Phi,以及 DreamLLM、SEED-X、Chameleon、LWM、Emu、Show-o、Gemini-Nano-1。
  • Image generation:WISE Cultural、ImageReward、CLIP Score、GenEval(Single Obj.、Two Obj.、Counting、Colors、Position、Color Attr.、Overall);baselines 包含 LlamaGen、SDv1.5、SDv2.1、DALL-E 2、SDXL,以及 DreamLLM、SEED-X、Chameleon、LWM、Emu、Show-o、Janus、Gemini-Nano-1、VAR-GPT。
  • Text generation / reasoning:MMLU、ARC-C、TruthfulQA、GSM8K、MATH、GPQA;baselines 为 LLaMA-2-7B、LLaMA-3-8B、Qwen2-7B、LLaDA-8B。

4.3 Training config

论文报告的主训练设置:初始化自 LLaDA-8B-Instruct,image tokenizer 使用 Show-o 的 pretrained tokenizer;Stage 1 先用 foundational data 训练 200K steps(RefinedWeb、ImageNet-1k、image-text captioning),再把 ImageNet 换成更 diverse image-text pairs 继续 400K steps;Stage 2 用 instruction tuning + reasoning data 联合训练 50K steps;Stage 3 用 UniGRPO RL data 训练 50K steps。硬件为 64×A100 80GB,global batch size 1280,AdamW,initial LR ,cosine scheduler。

Released config 与论文数字并非一一对应:例如 configs/mmada_pretraining_stage1_llada_instruct.yamllearning_rate=1e-4max_train_steps=500000、resolution 256;stage2 示例为 learning_rate=5e-5max_train_steps=1000000、t2i/lm/mmu micro-batch 7/2/3;stage3_llada_instruct_512_cotstage4 使用 resolution 512、CoT/MMU/T2I 数据路径、learning_rate=5e-5。因此 paper number 应理解为论文训练 run 的报告,而 repo YAML 是可运行/可改的 released example,不是完整复现实验配置。

5. Experimental Results(实验结果)

5.1 Multimodal understanding

Table 2 中 MMaDA 在 unified baselines 中整体很强:POPE 86.1、MME 1410.7、Flickr30k 67.6、VQAv2(test) 76.7、GQA 61.3、MMMU 30.2、MMB 68.5、SEED 64.2。相比 Show-o 的 POPE 80.0、MME 1097.2、Flickr30k 62.5、VQAv2 69.4、GQA 58.0、MMMU 26.7,MMaDA 几乎全面提升;相比 SEED-X 的 POPE 84.2、MME 1435.7、Flickr30k 52.3、GQA 47.9、MMMU 35.6,MMaDA 在 POPE/Flickr/GQA 等项更高,但 MMMU 低于 SEED-X。

论文强调,对带 reasoning trace 的输出只取 final answer 作为评测预测,因此这些分数不是靠把 CoT 文本直接喂给 evaluator 得到,而是看最终答案质量。结论是 diffusion-based MLLM 可以同时保留 understanding 能力,而不仅是视觉生成模型外接问答头。

5.2 Text-to-image generation

Table 3 中 MMaDA 的主要结果为:WISE 0.67、ImageReward 1.15、CLIP Score 32.46、GenEval overall 0.63;GenEval 细项为 Single Obj. 0.99、Two Obj. 0.76、Counting 0.61、Colors 0.84、Position 0.20、Color Attr. 0.37。对比 SDXL 的 WISE 0.43、ImageReward 1.13、CLIP 32.12、Overall 0.55,以及 Janus 的 WISE 0.16、ImageReward 1.03、CLIP 29.45、Overall 0.61,MMaDA 在 world-knowledge-aware generation 和 semantic alignment 上优势明显。

论文将这归因于两个来源:UniGRPO 的 reward 直接对齐 CLIP / ImageReward;Mixed Long-CoT 的文本推理分支为 image generation 提供事实与组合性约束,尤其 WISE Cultural benchmark 需要 world knowledge,而不是只靠 prompt-image matching。

5.3 Textual reasoning / LLM benchmark

Table 4 中 MMaDA-8B 的结果为:MMLU 68.4、ARC-C 57.4、TruthfulQA 43.1、GSM8K 73.4、MATH 36.0、GPQA 28.4。它低于 Qwen2-7B 在 MMLU 70.3、GSM8K 80.2 上的峰值,但高于 LLaDA-8B 的 MMLU 65.9、ARC-C 47.9、GSM8K 70.7、MATH 27.3、GPQA 26.1。这个结果支持作者的 claim:纯 diffusion 语言建模在统一多模态训练后仍可保持较强 LLM reasoning 能力。

5.4 Ablation:Mixed Long-CoT 与 UniGRPO 都有贡献

Table 5 的 stage ablation 很直接:

ModelGSM8KMATH500GeoQACLEVRCLIP ScoreImageReward
MMaDA After Stage 117.44.28.310.323.10.69
+ Mixed Long-CoT Finetuning65.226.515.927.529.40.84
+ UniGRPO (MMaDA)73.436.021.034.532.51.15

结论很明确:Stage 2 主要把 reasoning 能力拉起来,同时也提升 CLIP/ImageReward;Stage 3 则在所有任务上继续提升,尤其 MATH500 从 26.5 到 36.0,ImageReward 从 0.84 到 1.15。这是论文中“生成与理解/推理互相帮助”的核心实验证据之一。

Figure 3 解读:GSM8K 上 UniGRPO 比 diff-GRPO 的 reward trend 更高更稳定。作者解释为:UniGRPO 不 mask question,只对 answer 部分做 partial masking,因此训练输入保留了实际推理条件,同时让 answer 经历多个 denoising timestep;这比 d1 的策略更符合 diffusion model 的生成过程。

Figure 4 解读:uniformly random masking 比 fully random timestep selection 更稳定。论文给出的例子是:若起点 timestep 为 100、总共 5 个 training iterations,则剩余 timestep 均匀取 300/500/700/900;这样比完全随机更像 Monte Carlo averaging,又能覆盖完整 diffusion process。

5.5 Synergy across tasks:理解/生成的相互促进

Figure 5 解读:qualitative synergy 图用同一语义主题展示 text、MMU、Gen 随训练步数变得更复杂和更一致。文本回答从短句变为更丰富的描述,MMU 更能定位和解释图像内容,生成图像也更贴近 prompt 中“greenhouse / plants”的组合要求。

Figure 6 解读:论文在 Stage 2 的 120K–200K steps 期间跟踪三类 normalized metric:text generation 用 MMLU,multimodal understanding 用 CLIP Score,image generation 用 ImageReward。三条曲线同步上升,被作者解释为 unified training 的 mutually beneficial effect;也就是说,训练不是简单的多任务抢容量,至少在这个阶段观察到了跨任务正迁移。

5.6 Sampling efficiency and task extension

Table 6 展示 diffusion sampling 步数减少后的质量保持:image generation 从 1024 steps 的 32.8 CLIP Score 降到 50 steps 的 32.0、15 steps 的 31.7;MMU 从 1024 steps 的 35.5 到 512 steps 的 36.1、256 steps 的 35.4;text generation 从 1024 steps 的 66.9 到 512 steps 的 66.3、256 steps 的 65.7。作者认为这说明 diffusion model 相比 AR 有并行 token generation 的效率潜力。

Figure 7 解读:inpainting extension 展示 MMaDA 能把缺失文本 span、视觉问答中缺失答案、图像缺失区域都统一成 masked token prediction。这个能力来自训练目标本身,而不是额外 fine-tuning;它说明统一 diffusion formulation 的收益不仅在 benchmark 分数,也在任务接口的可扩展性。

5.7 Appendix qualitative results

Appendix T2I 解读:附录 T2I qualitative cases 主要强调 world-knowledge-aware prompts,例如 landmark、cultural object、scientific entity。MMaDA 的 CoT 先把 prompt 解析成具体实体或场景,再生成图像描述/视觉 token,体现了 text reasoning 对 image generation 的引导。

Appendix MMU 解读:MMU examples 展示了图像 token 与文字问题共同作为 prompt 时,模型在 <think> 中做显式视觉-语言推理,再输出 final answer。这里“生成 CoT”帮助了理解任务,因为最终答案建立在中间推理轨迹上。

Appendix LM 解读:LM qualitative examples 说明 diffusion language model 并非只能生成短文本;配合 semi-AR block denoising 和 MixCoT,MMaDA 可以生成较长 reasoning trace。这对 unified model 很关键,因为如果语言侧推理能力弱,T2I 中的 world-knowledge planning 也会受限。

5.8 Limitations

作者明确提到的 limitation 是当前模型规模为 8B,未来希望用更大模型提升性能。除此之外,从 released code 可见还有两个实践限制:一是 UniGRPO 的完整论文版多 reward T2I pipeline 尚未在 MMaDA 主仓库完整公开;二是 released configs 与论文训练 run 的 step 数/数据规模存在差异,复现主结果需要额外对齐内部数据与训练脚本。

5.9 Overall conclusion

MMaDA 的结论不是“diffusion 也能做 VLM”这么简单,而是:当文本、图像、推理、生成都被放入同一个 masked denoising 目标,并用统一 CoT / RL 做 post-training,理解能力与生成能力可以在同一模型内出现正迁移。Table 5 和 Figure 6 是最关键的证据:Mixed Long-CoT 同时提升 reasoning 和 generation metrics,UniGRPO 又进一步同时提升 GSM8K/MATH/GeoQA/CLEVR/CLIP/ImageReward。