Browse this library

Chinese source article

02 · Janus-Pro: 架构不动, 改训练日程, 数据和规模

Janus-Pro 是 Janus 的升级版, 架构完全沿用: 理解走 SigLIP, 生成走 VQ tokenizer, 两条视觉通路接同一个自回归 Transformer.

View original Markdown ↗

来源: Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling (arXiv: 2501.17811v1, 2025-01-29). 仓库: https://github.com/deepseek-ai/Janus

Janus-Pro 是 Janus 的升级版, 架构完全沿用: 理解走 SigLIP, 生成走 VQ tokenizer, 两条视觉通路接同一个自回归 Transformer. 改动在三处: 训练日程重排, 理解和生成数据都大幅扩充, 语言底座从 1.5B 扩到 7B. 结果是 7B 版 MMBench 79.2, GenEval 0.80, DPG-Bench 84.19, 后两项超过 DALL-E 3 和 SD3-Medium. 报告只有 13 页, 没有消融表, 三处改动各贡献多少只能从 1B 和 7B 两个版本, 以及它们和 Janus 的对比里推算. 下面把训练日程, 数据, 模型配置和评测放在一起读, 看这些分数分别能归到哪一步.

1. 从 Janus 到 Janus-Pro

1.1. Janus 留下的问题

Janus 在 1.3B 规模上证明了解耦视觉编码可行, 但生成端有两个明显的弱点. 一是短提示下生成质量差, 二是文生图不稳定, 同一个提示多次生成, 质量波动大. 报告把原因归到两处: 训练数据量有限, 模型容量偏小. 从 Janus 的配置看还有第三个原因, 这篇报告自己也点出来了: 阶段 II 里生成部分 66.67% 的步数花在 ImageNet 的类别名条件生成上, 真正的开放域文生图只占三分之一.

Janus 用类别名当提示, 本意是借鉴 PixArt, 先让模型学会像素之间的依赖, 再学复杂场景. 但类别名是一两个词的短提示, 和真实用户写的长描述差别很大; 在 LLM 已解冻的阶段 II 里花 120K 步学这个, 报告的评价是「次优, 而且计算效率很低」. Janus-Pro 的日程改动就是冲着这一点去的.

架构本身报告只用一段话复述(源文 §2.1), 细节要回 Janus 原文. 理解通路: SigLIP-Large 把 384×384 的图按 16×16 切 patch, 得到 24×24 = 576 个高维语义特征, 从二维网格展平成一维序列, 再经理解 adaptor 映射到 LLM 的输入空间. 生成通路: VQ tokenizer 把图编码成 576 个离散 ID, 每个 ID 查码本取出嵌入, 经生成 adaptor 映射进去. LLM 自带的文本预测头只管文字, 另加一个随机初始化的图像头, 在 16,384 个码字上做 next-token prediction. 两条通路在输入端分开, 在 Transformer 里共享全部参数, 到输出端再分开; 所谓「解耦」只发生在两头, 中间的语言模型始终是同一个 decoder-only 网络.

报告没有复述的是推理设置. Janus 原文生成时用 classifier-free guidance: 训练时以 10% 的概率把文本条件换成 pad token, 让模型学会无条件生成; 推理时每个 token 的 logit 取 lg=lu+s(lc−lu)l_g=l_u+s(l_c-l_u), lcl_c 带文本条件, lul_u 是 pad 条件下的无条件 logit, 默认 s=5s=5. s=1s=1 时就是普通的条件采样; s=5s=5 把「文本让哪些码字变得更可能」这部分差值放大 5 倍, softmax 之后的采样分布正比于 pc s/pu s−1p_c^{,s}/p_u^{,s-1}, 那些无论什么提示都常见的码字被压低. Janus-Pro 对 guidance 系数, 采样温度, 每条提示生成几张都没有写, 这些数字只能推测沿用了 Janus 的设置. 这会影响第 2.2 节的读法: GenEval 和 DPG-Bench 对 guidance 强度相当敏感, 系数调高, 物体更「听话」, 画面也更容易过饱和, 表里各家模型用的是什么采样设置无从得知.

1.2. 训练日程: 把 ImageNet 挪到冻结阶段

第一处改动是延长阶段 I. 阶段 I 只训两个 adaptor 和图像头, LLM 冻结. Janus 在这一阶段训 10K 步, 比例(理解 : 纯文本 : 生成)1 : 0 : 1; Janus-Pro 训 20K 步, 比例改成 1 : 0 : 3, warmup 从 300 步增到 600 步. 按每条序列一个样本粗算, 生成样本从约 1.28M 增到约 3.84M, ImageNet 相当于过了三遍多. 报告的发现是: 即使 LLM 参数完全冻结, 只靠 adaptor 和图像头, 模型也能学会像素依赖, 按类别名生成像样的图. 这说明 ImageNet 那一段不需要动 LLM, 放在冻结阶段做更便宜.

冻结阶段能学会像素依赖, 说明的问题比报告写的更多. 阶段 I 里可训练的只有两个两层 MLP adaptor 和图像头. 图像头是从隐宽到 16,384 个码字的线性层, 1B 版约 33.5M 参数, 7B 版约 67M(按隐宽乘码本大小估算); 加上 adaptor, 可训练参数只占全模型的几个百分点. 也就是说, 一个只见过文字的 LLM, 冻住全部权重, 只在输入和输出两端各接一层薄薄的映射, 就能把「下一个图像块该是什么」建模到能画出像样的类别图. 语言预训练学到的序列建模能力在相当程度上与模态无关, 真正需要解冻 LLM 去学的, 可能是长描述和图像内容之间的细粒度对应. 阶段 I 的学习率调度也从 Janus 的 cosine 改成了恒定, 三个阶段全部恒定学习率, 这让「延长阶段 I」变成简单地多跑步数, 不必重设衰减终点.

第二处改动是阶段 II 去掉 ImageNet, 直接用正常的文生图数据, 让模型从一开始就学按稠密描述生成. 阶段 II 计划 360K 步, 实际在 270K 步提前停止, 学习率 1e-4 恒定, batch 512, 比例仍是 2 : 3 : 5. 生成部分约 270K×512×0.5, 约 69M 条样本, 全部是开放域文生图; Janus 的开放域部分只有 60K 步, 约 15M 条. 开放域文生图的训练量因此多了约 4.5 倍. 为什么在 270K 步停止, 报告只说用了早停, 没有给判据和损失曲线.

第三处改动在阶段 III. 比例从 Janus 的 7 : 3 : 10 改成 5 : 1 : 4, 生成占比从 50% 降到 40%, 纯文本从 15% 降到 10%, 理解从 35% 升到 50%. 报告的说法是: 略微降低生成数据比例后, 生成能力保持住了, 理解能力提高了. 超参也变了: 学习率从 2e-5 升到 4e-5, batch 从 256 降到 128, weight decay 从 0.1 改成 0, 1B 训 80K 步, 7B 训 40K 步. 1B 的阶段 III 约 10.2M 条样本, 7B 约 5.1M, Janus 约 6.1M. 7B 的微调步数只有 1B 的一半, 报告没有解释, 可能是大模型收敛更快, 也可能是算力限制.

阶段 III 的超参组合值得多看一眼. 学习率翻倍, batch 减半, 按每个样本摊到的更新幅度算, 相当于放大了约 4 倍(按 AdamW 下学习率与 batch 的常见比例关系粗看). Janus 在阶段 III 用 weight decay 0.1, Janus-Pro 三个阶段全部为 0. 阶段 III 还沿用 Janus 的做法, 在阶段 II 的基础上解冻 SigLIP 理解编码器, VQ 编码器始终冻结. 理解数据占比从 35% 升到 50%, 意味着解冻后的 SigLIP 拿到的梯度比 Janus 多; 1B 版阶段 III 的理解样本约 5.1M, Janus 约 2.2M, 多了一倍多. 理解分数的提升有一部分可能来自这里, 但报告没有把 SigLIP 冻结与否单独拆开.

还有一处实现细节决定了「比例」的含义: 报告写明每个训练步内按比例混合所有数据类型, 并用 sequence packing 把多条短样本拼进 4096 长的序列(源文 §3.1). 所以 2 : 3 : 5 是每一步 batch 内部的构成, 不是按阶段轮换任务; 理解, 纯文本, 生成三种损失在同一次反向传播里一起更新共享的 Transformer. 这也让上面「每条序列一个样本」的估算只是下限. 一条生成样本大约是几十个文本 token 加 576 个图像 token, 一条描述类理解样本也是 576 个图像特征加一段文字, 一条 4096 长的序列理论上能装进 5 到 6 条. 本节所有样本量估算都应理解为下限, 实际样本数可能再乘几倍, 但 Janus 与 Janus-Pro 之间的相对倍数不受影响, 因为两者用的是同一套打包方式.

1.3. 数据: 理解加 9000 万条, 生成加 7200 万条合成图

理解数据参考 DeepSeek-VL2 扩充. 阶段 II 加了约 9000 万条样本, 包括 YFCC 这类图像描述数据, 以及表格, 图表, 文档理解数据(如 Docmatix). 阶段 III 加了 DeepSeek-VL2 的表情包理解, 中文对话和改善对话体验的数据. 文档和图表数据主要提升读图中文字和结构的能力, 但 384 的分辨率限制了能读多小的字, 报告在局限里专门提到 OCR 受分辨率影响. Figure 4 的定性例子里有中文地标识别(西湖三潭印月)和黑板读字, 对应的正是这两类新增数据.

把数据量和步数放在一起算, 会发现阶段 II 其实看不完新数据. 阶段 II 理解占 20%, 270K 步乘 512 再乘 0.2, 约 27.6M 条序列; 新增的理解样本就有约 9000 万条, 还不算 Janus 原有的数据. 按每条序列一个样本, 新增理解数据只过了约三成; 算上 sequence packing, 实际样本数可能是这个数的几倍, 大致在一遍上下. 生成那边, 合成 7200 万条加真实数据按 1 : 1 约 7200 万条, 池子约 1.44 亿条, 阶段 II 生成部分约 69M 条序列, 同样按一条算只过了约一半. 这说明 Janus-Pro 的阶段 II 处在数据充足, 算力受限的区间, 270K 步早停并不是因为数据用完了. 多数样本只见一两遍, 这种设置下数据质量比重复次数更要紧, 这也和报告强调合成数据「质量高, 收敛快」的叙述一致.

预处理上理解和生成用了两套不同的规则(源文 §3.1). 理解数据按长边缩到 384, 短边用 RGB(127, 127, 127) 的灰色补齐成正方形, 保住整张图的内容, 文档和图表的边角文字不会被裁掉. 生成数据按短边缩到 384, 长边直接裁掉多余部分, 目标图因此永远是铺满画面的正方形, 模型不会学到在图上画灰边. 两种做法各有代价: 理解端把一部分 token 花在灰色填充上, 细长图表的有效分辨率进一步降低; 生成端裁掉了宽幅图的两侧, 模型对全景构图可能见得少.

生成数据的改动更关键. 报告认为 Janus 用的真实图文数据质量不高, 噪声大, 是文生图不稳定, 美感差的主要原因. Janus-Pro 在阶段 II 加了约 7200 万条合成美学数据, 让真实数据和合成数据的比例达到 1 : 1. 合成数据的提示词来自公开数据集, 参考文献 [43] 是 Hugging Face 上的 Midjourney 提示词数据集. 报告说用合成数据训练收敛更快, 生成的图更稳定, 美感明显更好.

这段描述留下了一个关键空白: 合成图是用哪个模型生成的, 报告没有说. 提示词来自 Midjourney 用户, 图像大概率来自某个现有的文生图模型. 如果是这样, Janus-Pro 的生成能力有相当一部分是从那个模型蒸馏来的: 合成图的构图, 光影和美学风格, 连同它在「按提示摆放物体」上的能力, 都会被学进来. 这不影响 Janus-Pro 作为开源模型的价值, 但会影响对「统一自回归架构能做到什么」的判断, GenEval 和 DPG-Bench 上的领先不能全部归功于架构. 另外, 合成数据的提示词分布和评测提示词的重合程度, 报告也没有检查. 知识蒸馏的一般讨论见 知识蒸馏.

1.4. 模型规模和训练算力

两个版本的语言底座都是 DeepSeek-LLM, 词表 100K, 上下文 4096. 1B 版隐宽 2048, 16 头, 24 层; 7B 版隐宽 4096, 32 头, 30 层. 视觉部分两者相同: SigLIP-Large-Patch16-384, 码本 16,384, 下采样 16 倍的 VQ tokenizer, 两层 MLP 的 adaptor. 命名上有一处不一致: 模型叫 Janus-Pro-1B, 表里写的是 1.5B 的 LLM, 而 Janus 论文把同一个底座写成 1.3B. 按词表 100K, 隐宽 2048 算, 输入词嵌入约 0.2B, 1.3B 和 1.5B 的差距大致就是算不算词嵌入.

训练在 A100 40GB 集群上完成: 1.5B 用 16 个节点跑约 9 天, 7B 用 32 个节点跑约 14 天, 每节点 8 卡. 折算约 2.8 万和 8.6 万 GPU 小时; Janus 是 16 个节点 7 天, 约 2.2 万 GPU 小时. 1B 的算力只比 Janus 多约三成, 但阶段 II 的开放域生成训练量多了数倍, 这是因为去掉了 ImageNet, 同样的步数用在了更有价值的数据上. 报告还说更大的 LLM 在理解和生成两边的损失都收敛得更快, 但没有给出曲线. 用配置反推一下两个版本的计算量. 按每层约 12d² 个参数粗算, 1B 版非嵌入参数约 1.21B, 7B 版约 6.04B, 相差约 5 倍. 两个版本阶段 I 和阶段 II 的步数相同, 只有阶段 III 不同, 按 batch 乘步数, 1B 共约 1.54 亿条序列, 7B 约 1.49 亿条. 于是 7B 的训练计算量约是 1B 的 4.8 倍, GPU 小时却只多约 3.1 倍. 差出来的部分只能由硬件利用率解释: 按 6 乘参数量乘 token 数, 序列全部打满 4096 计算, 1B 的算力利用率上限约 15%, 7B 约 23%(实际打包率低于满额, 真实利用率更低). 小模型在 A100 上矩阵太窄, 吃不满算力, 这是常见现象; 另外 SigLIP 前向和 VQ 编码的开销与语言底座大小无关, 在小模型上占比更高.

这组估算也说明, 「更大的 LLM 损失收敛更快」这句话要按步数理解. 同样的步数下, 7B 每一步花的算力约是 1B 的 5 倍, 按算力对齐比较, 大模型是否仍然更划算, 报告没有给出数据. Scaling 的一般规律见 Scaling Law.

2. 评测与局限

2.1. 理解评测: 7B 追上 LLaVA-v1.5 之后又拉开

Table 3 的结果: Janus-Pro-7B POPE 87.4, MME-P 1567.1, MMBench 79.2, SEED 72.1, GQA 62.0, MMMU 41.0, MM-Vet 50.0; Janus-Pro-1B 依次是 86.2, 1444.0, 75.5, 68.3, 59.3, 36.3, 39.8; Janus 是 87.0, 1338.0, 69.4, 63.7, 59.1, 30.5, 34.3. 评测集比 Janus 少了 VQAv2, 其余七项相同. Figure 1 的理解均分取 POPE, MME-P(除以 20 换算到百分制), GQA, MMMU 四项, 按表内数字核算, 7B 约 67.2, 1B 约 63.5, Janus 约 60.9. 这四项恰好不包括提升最大的 MMBench, SEED 和 MM-Vet, 所以 Figure 1 其实低估了升级幅度.

同样是 1.5B 的底座, 1B 版相对 Janus 的提升来自数据和训练日程: MMBench +6.1, SEED +4.6, MMMU +5.8, MM-Vet +5.5, MME-P +106. 但 POPE 从 87.0 降到 86.2, GQA 只从 59.1 到 59.3. POPE 测物体幻觉, GQA 测场景图式的组合推理, 新加的 9000 万条理解数据以描述, 表格, 文档为主, 对这两类能力帮助可能不大. 7B 相对 1B 的提升来自语言底座: MMMU +4.7, MM-Vet +10.2, MME-P +123, GQA +2.7. MMMU 考大学学科知识, 本来就依赖底座; MM-Vet 由 GPT-4 给开放回答打分, 7B 的回答更完整, 阶段 III 又加了改善对话体验的数据, GPT-4 裁判可能也偏好这种风格.

横向比较, 报告说 7B 除 GQA 外在所有项上超过 13B 的 TokenFlow-XL, 核对无误(GQA 62.0 对 62.7). 但「整体最好」不是逐项最好: 7B 的 ILLUME 在 POPE(88.5 对 87.4)和 SEED(72.9 对 72.1)上都高于 Janus-Pro-7B. GQA 62.0 和 LLaVA-v1.5 7B 持平, 仍低于 TokenFlow-XL. 报告把「整体最好」归因于解耦视觉编码, 缓解了理解与生成的冲突. 这个归因要分两层看. 和用单一编码器的统一模型比, 解耦确实能解释差距: Emu3-Chat 8B 用同一个 VQ tokenizer 兼顾理解和生成, MME-P 只有 1244, MMBench 58.5; Show-o-512 在 1.3B 规模上 POPE 80.0, GQA 58.0, 都明显低于同规模的 Janus-Pro-1B. 但 Janus 到 Janus-Pro 架构完全没变, 这一代的全部提升都来自数据, 日程和规模, 与解耦无关. 表里标 † 的 MetaMorph 8B 借助外部预训练扩散模型出图, MMBench 75.2, SEED 71.8, Janus-Pro-7B 不借外部扩散模型仍高出 4.0 和 0.3.

1B 版放到纯理解模型里看, 位置没有那么突出. 2.7B 的 MobileVLM-V2 MME-P 1440.5, GQA 61.1, 前者和 Janus-Pro-1B 的 1444.0 几乎一样, 后者还高出 1.8. GQA 这类组合推理题, 统一模型要把一部分容量让给生成, 小模型上这个代价可能更明显. 另外 MMBench 和 SEED 是选择题, POPE 是是非题, MM-Vet 是 GPT-4 打分的开放题, 七个评测集的题型混在一起, 均分或「几项领先」的说法都掩盖了题型差异. 视觉语言模型评测的一般问题见 VLM 的评测与基准.

2.2. 生成评测: 指令跟随涨了很多, 画质没有指标

GenEval 上, 7B 总分 0.80, 1B 0.73, Janus 0.61. 对照 SD3-Medium 0.74, DALL-E 3 0.67, Transfusion 0.63, D-DiT 0.65. 同样 1.5B 底座, 1B 版比 Janus 高 0.12, 7B 再比 1B 高 0.07(按表核算), 数据和日程的贡献大于规模. 分项里提升最大的是位置, 从 0.46 到 1B 的 0.65, 7B 的 0.79, 远高于 DALL-E 3 的 0.43 和 SD3-Medium 的 0.33; 计数从 0.30 到 0.51, 7B 0.59, 但仍低于 SD3-Medium 的 0.72; 两物体 7B 0.89, 也低于 SD3-Medium 的 0.94. 7B 的总分领先 SD3-Medium, 主要靠位置一项的巨大优势, 在两物体和计数上仍落后.

读 GenEval 要先知道它怎么打分. 它有 553 条提示, 分六类任务, 每类一个固定模板, 比如位置类是「a photo of a/an [物体 A] [相对位置] a/an [物体 B]」, 物体都取自 COCO 类别. 每条提示生成 4 张图, 用在 COCO 上训练的 Mask2Former 做实例分割, 置信度阈值 0.3, 计数类提到 0.9; 颜色由 CLIP 在抠掉背景的物体区域上判定; 位置则直接比较两个检测框中心的坐标差, 超过与框尺寸成比例的缓冲区才算「左边」或「上方」. 这套打分完全自动, 好处是可复现, 代价是只认检测器能认出的东西, 也只认模板化的短句. 以上机制来自 GenEval 原论文, Janus-Pro 报告没有复述.

按这个机制, 位置题的前提是两个物体都被检出, 所以可以粗算「两物体都在时摆对位置的比例」: Janus-Pro-7B 为 0.79 / 0.89 ≈ 89%, DALL-E 3 为 0.43 / 0.87 ≈ 49%, SD3-Medium 为 0.33 / 0.94 ≈ 35%(两类任务的提示集不同, 只能当近似). Janus 这一行也有 0.46 / 0.68 ≈ 68%, 远高于同期扩散模型. 这说明 Janus 系列在空间关系上的优势从上一代就有, 不完全是这次新数据带来的. 一种可能的解释是自回归模型按光栅顺序从左上到右下逐块生成, 先画出的物体自然落在左侧或上方, 与「A 在 B 左边」这类提示的语序正好对应(报告没有讨论, 也没有做右侧, 下方的分项统计). 位置分数的领先因此值得打个问号: 它测到的可能部分是生成顺序的偏置, 而不是对空间关系的理解.

DPG-Bench 有 1065 条长而稠密的提示, 每条描述多个物体, 属性和关系. 评测时每条提示生成 4 张图, 用 mPLUG-large 当裁判回答从提示里拆出的问题; 总分按 Davidsonian Scene Graph 的规则算, 父问题(如「有没有猫」)答错时, 依附它的子问题(如「猫是不是黑色」)一律记零, 所以总分会低于每一个分项均分. Janus-Pro-7B 总分 84.19, 高于 SD3-Medium 的 84.08 和 DALL-E 3 的 83.50, 但只领先 SD3-Medium 0.11. 分项里 7B 的全局项 86.90 反而低于 1B 的 87.58, 也低于 DALL-E 3 的 90.97; 实体 88.90 低于 SD3-Medium 的 91.01; 关系 89.32 低于 Emu3-Gen 的 90.22 和 DALL-E 3 的 90.58. 「超过所有方法」只在总分上成立, 而且是用 VQA 模型当裁判的自动评测, 0.11 的差距很可能在噪声范围内.

把 DPG-Bench 的变化按来源拆开, 结论和 GenEval 一致. Janus 到 Janus-Pro-1B, 总分从 79.68 升到 82.63, 多 2.95, 其中全局项多 5.25, 关系项多 3.52; 1B 到 7B 总分只多 1.56, 全局项还少了 0.68. 同一个 1.5B 底座上换数据和日程带来的提升, 大约是底座从 1.5B 换到 7B 的两倍(按表核算). 全局项考的是整体风格和氛围, 例如「油画风格」或「黄昏的光线」, 1B 在这一项的跃升和合成美学数据的加入时间吻合, 7B 没有进一步提高, 说明这部分能力主要来自数据, 与底座大小关系不大.

最大的问题是画质. Janus 报告了 COCO-30K 和 MJHQ-30K 的 FID, Janus-Pro 两个都没报; GenEval 和 DPG-Bench 测的都是「图里有没有提示要求的东西」, 不测清晰度和美感. 报告声称美学质量显著提升, 证据只有 Figure 2 和 Figure 4 的定性样例, 没有 FID, 美学分或人工偏好评测. 合成数据会让生成分布偏向合成图的风格, 在以真实照片为参照的 FID 上未必占优, 这可能是不报 FID 的原因之一.

2.3. 定性结果和局限

Figure 2 把 Janus-Pro 和 Janus 做了对比, 三个例子都是短提示, 如「黑板上用白色粉笔写着 Hello」. Janus-Pro 的图更稳定, 细节更多, 还能写出简单的文字; Janus 在这类提示下常出现结构错误. 能写字是个新能力, 自回归模型逐 token 生成, 文字的笔画需要 VQ 码本和分辨率都跟得上, 在 384 分辨率下只能写很短的词. Figure 4 的理解例子覆盖图像描述, 地标识别, 读字和常识问答, 生成例子则强调在 384 分辨率下仍有丰富细节.

Figure 4 的样例也反映了训练数据的倾向. 读字那一例, 模型读出了黑板的大标题「Serving Soul since Twenty Twelve」, 随后补充「还有更小的区域写着更详细的信息, 但主标题清晰可见」, 与结论所述的小字分辨率限制一致. 地标一例用中文提问「猜猜这是哪里」, 模型用中文回答出杭州西湖的三潭印月, 对应阶段 III 新增的中文对话数据. 蛋糕一例要求讲 Tom and Jerry 的背景, 模型描述了翻糖奶酪和小房子等装饰, 属于图像描述与常识的组合. 四个理解样例都是单轮问答, 没有覆盖多图、多轮或需要推理链的任务.

生成样例的提示词风格较统一: 大多是带场景和光线的完整描述, 末尾一条「Astronaut in a jungle, cold color palette, muted colors, detailed, 8k」使用逗号分隔的风格词和「8k」后缀, 属于 Midjourney 社区常见写法. 合成数据的提示词来自 Midjourney 提示词数据集, 展示样例与合成训练数据的分布接近, 只能反映分布内效果. 八条生成提示中仅一条涉及人物, 且只有单个人物并明确要求画出雀斑; 没有样例要求画面出现多个小人物, 因而无法观察结论中提到的小人脸模糊问题.

结论节写了两条局限. 理解端, 输入分辨率限制在 384×384, 影响 OCR 这类细粒度任务. 生成端, 低分辨率加上 VQ tokenizer 的重建损失, 让生成的图语义丰富但细节不足, 例如占画面比例很小的人脸会显得模糊. 报告认为提高分辨率可以缓解. 这两条都指向同一个瓶颈: 576 个 token 表示一张图, 16 倍下采样的 VQ 在 384 分辨率下重建 rFID 约 0.94(LlamaGen 报告的数字), 细节上限就摆在那里. 提高到 768 分辨率, token 数变成 2304, 自回归生成的步数和序列长度都翻四倍.

3. 谱系位置

Janus 系列在 DeepSeek 里是一条独立的多模态线. 2024 年 10 月的 Janus 提出解耦视觉编码, 11 月的 JanusFlow 把生成端换成 rectified flow, 2025 年 1 月的 Janus-Pro 回到 VQ 自回归, 靠数据和规模把指令跟随推到当时开源模型的前列. 理解端的数据来自同期的 DeepSeek-VL2, 语言底座来自 DeepSeek-LLM, 两者都不是 V3 那一代的 MoE. 统一多模态的整体图景见 多模态.

这篇报告对后来者最有参考价值的是三条经验: 类别条件的像素依赖可以在 LLM 冻结时学; 统一预训练阶段应尽早用稠密描述; 真实数据噪声大时, 合成美学数据按 1 : 1 混入能加速收敛, 稳定输出. 但三条经验都没有消融支撑, 1B 和 7B 的对比只能分开规模的作用, 分不开日程和数据. 合成数据的生成模型, 早停判据, 画质指标这三处空白, 决定了读者只能把 Janus-Pro 的结果当成「整套配方的效果」, 而不是某个单一改动的效果.

4. 训练目标、数据配比与缩放归因

数据比例要按 token 和梯度读取: 论文给出的 2:3:5 或 5:1:4 是样本类别比例, 每类样本的有效监督 token 不同. 文生图样本固定有 576 个图像目标, 纯文本样本可能含数百到数千文字 token, 理解样本通常只在答案文字上计算 loss. 若每类 loss 对 token 求平均后再汇总, 样本比例与梯度贡献仍受序列长度和实现 reduction 影响.

设一批中三类有效监督 token 数为 nu,nt,ngn_u,n_t,n_g, 对应平均 token loss 为 Lu,Lt,LgL_u,L_t,L_g, 最简单总损失为:

L=nuLu+ntLt+ngLgnu+nt+ng.L=\frac{n_uL_u+n_tL_t+n_gL_g}{n_u+n_t+n_g}.

此时生成样本每条 576 个监督位置, 可能比短理解答案贡献更多 token. 如果实现先按样本或任务归一化再加权, 贡献又不同. 论文没有给 loss reduction 与显式任务权重, 所以表中数据比例不能直接解释为梯度百分比.

sequence packing 进一步改变有效样本数. 短文本可以在一个 4096 序列内放多条, 图像 token 占用固定长度. packing 提高硬件利用率, 也让「batch 512」更接近打包序列数而非原始样本数. 原稿按一序列一条样本估算是保守下限, 适合比较阶段量级, 不适合当精确数据曝光次数.

4.1. 三阶段训练分别建立什么能力

阶段 I 冻结语言主干和视觉编码器, 只训练 adaptor 与 image head. 理解 adaptor 学会把 SigLIP 特征放进 LLM 可读取的隐藏空间; 生成 adaptor 和 head 学会让固定语言主干承载图像 token. 这一阶段更像接口对齐. Janus-Pro 延长到 20K 步并把生成比例提高到 75%, 让类别条件像素依赖在便宜的冻结训练中先稳定下来.

阶段 II 解冻 LLM, 进行统一预训练. 正常文生图替代 ImageNet, 生成开始学习长提示、对象属性与开放域构图; 9000 万理解数据扩展图像描述、文档和图表; 纯文本维持语言能力. 三类数据同一步混合, 共享主干同时接收梯度, 是统一能力真正形成的阶段.

阶段 III 属于监督微调. SigLIP 解冻, 理解比例提高, 加入中文对话、表情包和交互体验数据. 生成比例降低但没有归零, 用于防止主干在理解 SFT 中遗忘图像生成. 这是一种多任务 rehearsal: 旧任务数据继续出现, 约束参数不要只适应新任务.

三个阶段都不可由名称简单理解成「预训练—微调」. 阶段 I 已经学图像生成接口, 阶段 II 同时包含理解、语言和生成, 阶段 III 仍保留大规模生成监督. 能力是连续累积的, 论文没有逐阶段 checkpoint 评测, 无法量化每阶段带来多少最终分数.

合成数据改变了什么分布: 7200 万合成美学图与真实图按 1:1 混合, 先改变视觉质量分布. 合成模型往往输出构图完整、主体突出、光线和风格更强的图, 训练目标中的噪声与弱配对减少. 这能解释收敛更快和展示图更稳定. 合成数据也会继承教师模型的风格偏好、对象偏差和失败模式.

提示来自 Midjourney 社区, 其中常见风格词、摄影参数和高细节描述. 这与 DPG-Bench 的稠密提示更接近, 也与论文展示的「detailed, 8k」风格相近. 数据分布接近评测格式可以提升指令跟随, 不能视为作弊, 但会限制结论外推到短口语、非英语提示和真实低质量照片.

若合成图生成器本身擅长对象绑定和空间关系, Janus-Pro 可以通过最大似然学习其输出分布. 这是一种隐式蒸馏, 教师身份、采样参数和过滤流程会影响学生上限. 论文没有公开生成器, 因而 7200 万图无法独立复现, 也无法分离「数量更多」与「教师更强」的贡献.

真实数据仍占一半有两个作用. 它提供合成模型不覆盖的长尾与自然图像统计, 也防止学生完全收缩到统一审美风格. 1:1 是一个配方点, 没有 0:1、1:3、3:1 消融. 不能从一次成功推出合成比例越高越好.

理解数据扩充如何对应指标: 新增 9000 万理解样本覆盖通用描述、表格、图表和文档. MMBench、SEED 与 MM-Vet 的明显提升与更广指令和开放回答数据相容; MMMU 还依赖语言底座知识, 7B 扩展更明显. POPE 与 GQA 的提升较小, 说明新增数据没有均匀覆盖所有视觉能力.

文档与图表数据能教模型识别布局、表头和坐标关系, 384 分辨率却限制小字. 如果原图缩放后字符只剩几像素, 再多监督也只能依赖上下文猜测. 数据扩充和输入分辨率形成短板效应: 有标签而无视觉信号, loss 可能鼓励语言先验, 甚至增加幻觉.

阶段 III 解冻 SigLIP 后, 理解数据会改变视觉 encoder. 这使 Janus-Pro 相对 Janus 的理解提升同时包含更多数据、更长训练、不同配比、编码器更新量和 7B 底座. 1B 对比能排除底座规模, 仍分不开其余因素. 论文没有训练日程消融, 归因只能落到整套配方.

4.2. B 与 7B 对照能回答什么

两版共享视觉前端、分辨率、码本和主要数据配方, 语言主干规模不同. 7B 相对 1B 的差值因此是规模效应最接近的观测, 但阶段 III 步数也从 80K 减到 40K, 训练计算与样本曝光没有完全固定. 它不是严格控制变量实验.

理解侧, MM-Vet 从 39.8 到 50.0、MMMU 从 36.3 到 41.0, 显示开放回答和知识推理受益明显. 生成侧, GenEval 从 0.73 到 0.80, DPG 从 82.63 到 84.19, 规模也改善组合指令. 大主干可能提供更强文本解析、对象关系规划和更低 next-token loss.

数据日程的效应可由 Janus 到 Pro-1B 近似观察, 因为底座规模接近且架构相同. GenEval +0.12 大于 Pro-1B 到 7B 的 +0.07, DPG +2.95 大于 +1.56. 这支持论文标题中的 data scaling 很关键. 但 Janus 与 Pro-1B 的阶段超参同时变化, 不能把差值全部归到数据量.

严格缩放实验应固定 token 数或固定计算量, 并给多种模型规模的 loss 与下游曲线. Janus-Pro 只有两个规模, 没有计算最优前沿. 「模型更大收敛更快」来自训练观察, 缺少曲线与等算力对照. 7B 表现更好可以确认, 缩放律斜率和最优数据配比无法估计.

多任务梯度怎样作用到共享主干: 在一次混合 batch 中, 共享参数梯度可写成三类任务梯度的加权和:

g=αugu+αtgt+αggg.g=\alpha_u g_u+\alpha_t g_t+\alpha_g g_g.

gug_u 来自理解答案, gtg_t 来自纯文本, ggg_g 来自图像 token. 若 gu⊤gg>0g_u^\top g_g>0, 两类任务在局部参数空间方向一致; 若小于零, 同一步更新会牺牲其中一类. 数据比例、loss reduction 和序列长度共同决定有效 α\alpha.

解耦 encoder 会把一部分冲突限制在各自通路, adaptor 与共享 Transformer 仍接收多任务梯度. 阶段 I 冻结主干时, gug_u 与 ggg_g 不会改动语言参数, 只调整各自接口; 阶段 II 开始, 冲突进入共享层; 阶段 III 解冻 SigLIP 后, gug_u 还能改变理解视觉特征. 训练日程因此也是控制梯度作用范围的手段.

纯文本数据只有 10% 或 30%, 作用是维持语言能力与隐藏空间. 如果完全移除, 共享主干可能在大量图像 token 监督下遗忘通用文本分布. 论文没有报告纯文本 benchmark 前后变化, 无法判断保留比例是否刚好. 这也是统一模型常见代价: 视觉能力上涨时需要确认语言能力没有退化.

冻结阶段为什么可能更省算力: 冻结 LLM 不仅少存参数梯度, 也免去 optimizer state 与权重更新. 前向仍需经过主干, 反向只需把梯度传到 adaptor 输入与输出头相关路径, 不为冻结参数累积梯度. 对 AdamW, 可训练参数通常还需要一阶、二阶矩状态, 冻结大幅减少显存.

阶段 I 的目标也更窄. ImageNet 类别名短、对象单一, 主要学习图像 token 的局部依赖和粗语义条件. 固定语言主干可防止大量简单类别样本把语言表示拉偏. 等接口对齐后再用开放域描述解冻, 主干接收到的信息密度更高.

但「冻结也能生成」不能推出主干没有参与视觉建模. 固定 LLM 的注意力与 MLP 已经执行所有 576 个位置, adaptor 只是把图像码字嵌入映射进它能处理的区域. 学到的生成分布依赖主干预训练形成的序列先验. 若换一个随机初始化同结构 Transformer, 薄 adaptor 未必能在相同步数达到同样效果.

节省量也取决于实现. 若框架仍保存某些中间激活以计算 adaptor 梯度, 前向成本不会消失; 图像 encoder 与 tokenizer 预处理也有固定成本. 论文没有给三阶段吞吐与显存, 所以只能确认冻结减少可训练状态, 无法给出精确节省比例.

早停发生在怎样的证据空白中: 阶段 II 计划 360K 步, 实际 270K 停止. 早停需要监控量, 可能是验证 loss、生成样例、GenEval 子集或训练稳定性. 不同判据会选择不同 checkpoint: 最低 token loss 未必对应最好美感, GenEval 最优也未必对应理解最优. 论文没有说明判据.

多任务训练还可能出现各任务峰值不同. 理解 loss 继续下降时生成开始过拟合合成风格, 或生成提示跟随提高时纯文本能力下降. 单一总 loss 会掩盖这些拐点. 合理选择需同时观察多任务验证集, 再定义权衡. 没有曲线时, 270K 只能视为配方的一部分.

早停也影响数据曝光. 合成与真实池都可能尚未完整遍历, 数据顺序和采样器 seed 会改变哪些样本被看到. 若重现者跑满 360K, 结果不一定更好; 若只按 epoch 设置, 又无法对应论文的混合采样. 复现至少需要 sampler、packing 与停止 checkpoint, 官方未公开训练代码.

4.3. 数据污染与评测重合

9000 万理解样本和 7200 万合成图规模很大, 来源多样. 公开 benchmark 的图片、题目或近似描述可能混入训练池. 论文没有报告去重、污染检测和时间切分. 这不等于已经污染, 只说明评测分数包含未知的训练重合风险.

生成评测的提示模板较固定. Midjourney 提示数据若包含相似对象组合和风格短语, 模型会更熟悉指令分布. 即使没有逐字提示泄漏, 分布匹配也会带来优势. 这属于数据设计效果, 在跨模型比较时仍需知道各家训练语料差异.

理解评测中的选择题还可能被语言模型记住问题文本. 图像变化能降低纯文本记忆的作用, 但某些答案模式与数据集说明仍可能进入训练. 更可靠的验证包括私有集、更新集与按来源去重. Janus-Pro 报告没有这些补充.

缩放数据时, 污染概率与重复样本也会增加. 有效数据量取决于去重后的独特信息, 不能只看 9000 万与 7200 万. 论文结果证明所用数据池有效, 没提供可复算的质量构成.

训练计算如何随主干规模变化: Transformer 训练的粗略计算与激活参数量、监督 token 数乘积成正比. 两版数据步数接近, 7B 主干约为 1B 主干数倍, 所需 FLOPs 也相应增长. 视觉 encoder 和 VQ tokenizer 的开销对两版近似固定, 所以模型越大, 主干计算占比越高.

1B 使用 128 张 A100 约 9 天, 7B 使用 256 张约 14 天. GPU 小时约相差 3.1 倍, 低于参数粗比. 可能原因包括大矩阵在 GPU 上效率更高、1B 固定视觉开销占比更大、实际 packing 与阶段 III 步数不同. 没有 profiler、token 吞吐和利用率, 不能从墙钟数据精确还原训练效率.

模型规模还改变可训练 image head. 16384 类输出矩阵从隐宽 2048 扩到 4096, 参数与计算翻倍. 两层 adaptor 也随隐宽变大. 所以 Pro-7B 的额外容量不只在 Transformer, 模态接口也扩大. 视觉 encoder 与 VQ 码本保持相同, 输入信息上限没有随主干同步增长.

这会产生瓶颈迁移. 小模型可能受主干容量限制, 扩到 7B 后理解和提示解析提高; 再继续放大时, 384 分辨率与 VQ 重建可能成为主要短板. 如果视觉输入已经丢掉小字, 更大 LLM 只能用先验猜. 缩放实验应同时监控视觉信息量与语言容量, 不能默认参数越大所有项持续等比例提高.

为什么数据质量可能胜过重复训练: 最大似然训练期望模型拟合数据条件分布. 配对噪声意味着同一提示对应不相关图像, 梯度会把正确条件信号冲淡. 假设比例 η\eta 的样本近似随机配对, 条件梯度可以粗略分成 (1−η)gsignal+ηgnoise(1-\eta)g_{\text{signal}}+\eta g_{\text{noise}}. 增加低质量数据同时放大两项, 清洗或高质量合成主要降低 η\eta.

合成数据还有一致性优势. 教师模型按照完整提示生成, 属性与画面往往比网页 alt-text 更对齐; 真实网页图文常是标题、上下文或不完整描述. GenEval 和 DPG 奖励这种细粒度绑定, 因而高质量合成对它们尤其有效. 代价是学生继承教师分布, 对真实世界长尾与不完美构图覆盖较少.

重复训练高质量小数据会增加过拟合与记忆, 大规模多样合成可以减少重复. Janus-Pro 的池子很大、阶段 II 曝光有限, 更接近单遍学习. 这与传统小数据多 epoch 微调不同, 数据去重和质量筛选对每次梯度价值更重要.

真实与合成 1:1 还可以看成偏差折中. 真实数据带来分布广度与自然噪声, 合成数据带来条件准确和美学一致. 比例过低无法修正噪声, 过高会收缩到教师风格. 论文给出一个成功点, 没有绘出比例—质量曲线.