带回家的信息:Janus 是一个简单、统一、可扩展的多模态理解和生成模型,它将多模态理解和生成的视觉编码分离开来,减少了这两项任务之间的潜在冲突。未来,它还可以扩展到其他输入模式。Janus-Pro 在此基础上优化了训练策略(包括增加训练步数、调整数据比例等),增加了更多数据(包括使用合成数据等),并扩大了模型规模(达到 70 亿个参数),从而提高了模型的多模态理解和文本到图像指令的遵从能力。
Janus-Pro 是之前 Janus 工作的高级版本,具体包括:(1)优化的训练策略;(2)扩展的训练数据;(3)更大的模型规模。通过这些改进,Janus-Pro 在多模态理解和文本到图像指令遵从能力方面取得了显著进步,同时还增强了文本到图像生成的稳定性。在解读 Janus-Pro 之前,让我们先回顾一下 Janus。
回顾雅努斯
其前身 Janus 是一个用于统一多模态理解和生成的自回归框架,用于解耦视觉编码以实现统一的多模态理解和生成。对于多模态理解,其设计通常遵循 LLaVA,使用视觉编码器作为桥梁,使大型语言模型能够理解图像。对于生成,它通常基于扩散模型,有些则基于自回归方法。有些方法尝试使用单个转换器来统一多模态理解和生成任务,通常使用单个视觉编码器来处理两个任务的输入。
然而,多模态理解任务和生成任务所需的表征存在差异。在多模态理解任务中,视觉编码器旨在提取高级语义信息(如物体类别或视觉属性),输出不仅涉及从图像中提取信息,还涉及复杂的语义推理,编码器主要关注高维语义表征。生成任务主要涉及生成局部细节和保持图像的全局一致性,因此需要空间结构和纹理细节的低维编码表征。将这两项任务的表征统一在同一空间可能会导致冲突。
Janus 包含两个独立的视觉编码路径,分别用于多模态理解和生成,有两个好处:1)缓解了多模态理解和生成的不同粒度要求所产生的冲突;2)具有灵活性和可扩展性,解耦后,理解和生成任务都可以使用各自领域的最先进编码技术进行编码,将来还可以输入点云、脑电图信号或音频数据,并使用统一的转换器进行处理。
为了理解文本,使用 LLM 内置的 Tokenizer 将文本转换为离散 ID;
为了实现多模态理解,使用 SigLIP 编码器提取图像中的高维语义特征(笔者注:Cosmos 在 Guardrails 部分也使用了 SigLIP 编码器),并使用 Adaptor(2 层 MLP)将提取的特征映射到 LLM 的文本特征空间;
长边调整为 384 像素,短边使用 RGB(127,127,127)填充为 384 像素;
在视觉生成方面,使用 VQ Tokenizer 将图像转换为离散的 ID,并使用 Adaptor(2 层 MLP)将每个 ID 映射到 LLM 的文本特征空间;
短边被调整为 384 像素,长边被裁剪为 384 像素;
整体训练使用 16 个节点进行,每个节点包含 8 个 Nvidia A100 GPU;
在视觉生成和多模态理解任务中,图像特征序列和文本特征序列被链接在一起,作为 LLM 的输入(文中使用的是 DeepSeek-LLM 1.3B);
在纯文本理解和多模态理解任务中,LLM 的内置预测头被用于文本预测,而在视觉生成任务中,一个随机初始化的预测头被用于图像预测。整个模型采用自回归框架,无需专门设计注意力掩码。
雅努斯培训 分为 3 个阶段:
第 1 阶段
列车适配器和成像头 在嵌入空间的语言和视觉元素之间建立联系,使 LLM 能够理解图像中的实体,并具备初步的视觉生成能力;
为便于多模态理解,使用 SHareGPT4V 中 125 万个图像-文本配对标题数据,格式为;
在视觉生成方面,使用来自 ImageNet1k 的 120 万个格式样本:;
第二阶段
统一预培训该阶段使用多模态语料库进行统一预训练,以学习多模态理解和生成。该阶段使用纯文本数据、多模态理解数据和视觉生成数据。使用 ImageNet-1k 进行简单的视觉生成训练,然后使用通用文本到图像数据来增强模型开放域中的视觉生成;
纯文本数据:DeepSeek-LLM 预训练语料库;
交错图像文本数据:WikiHow 和 WIT 数据集;
图像标题数据:从多个来源获取图像,并使用开放源多模态模型为其中一些图像重新添加标题,数据格式为问答对,例如 详细描述图像
表格和图形数据:来自 DeepSeek-VL 的相应表格和图形数据,格式为;
视觉生成的数据:来自多个数据集和 200 万个内部数据的图像-标题对;
在训练过程中,只随机使用标题的第一句话,概率为 25%;
ImageNet 样本仅出现在最初的 120K 训练步骤中,其他数据集的图像则出现在随后的 60K 训练步骤中;
第三阶段
监督微调在这种情况下,使用指令微调数据对预先训练好的模型进行微调,以提高它们遵循指令和对话的能力。微调除生成编码器之外的所有参数。在监督答案时屏蔽系统和用户提示。为了确保 Janus 能够熟练地进行多模态理解和生成,我们没有针对特定任务对模型进行单独微调。相反,我们混合使用纯文本对话数据、多模态理解数据和视觉生成数据,以确保在各种情况下的通用性;
文本理解:使用特定来源的数据;
多模态理解:利用多种来源的数据调整教学;
视觉生成:使用部分第二阶段数据集的图像-文本对子集以及 400 万个内部数据;
数据格式为User: \n Assistant:;
培训目标
Janus 是一个使用交叉熵损失函数训练的自回归模型,对于纯文本理解和多模态理解任务,损失是在文本序列上计算的。对于视觉生成任务,则只在图像序列上计算损失。为了保持设计的简洁性,没有为不同的任务分配不同的损失权重。
推理
对于纯文本理解和多模态理解,使用下一个词素预测方法,从预测分布中按顺序抽取词素。对于图像生成,则使用无分类器引导法。
可能的扩展
对于多模态理解,1)可以选择更强的视觉编码器,2)可以使用动态高分辨率技术;
在视觉生成方面,1)可以选择更精细的编码器;2)使用专门为视觉生成设计的损失函数;3)将因果注意和并行方法结合起来;
更多模式,能够整合三维点云、触觉、脑电图和其他损失模式输入;
Janus-Pro 升级
由于训练数据有限,模型容量相对较小(1B),Janus 在某些方面存在不足,例如短线索下图像生成的代表性较差,文本到图像的生成质量不稳定:
主要改进
培训战略
第 1 阶段:增加训练步数,在 ImageNet 上进行全面训练;
第二阶段:不再使用 ImageNet,直接使用常规文本到图像数据进行训练;
第三阶段:在微调过程中修改数据集比例,将多模态数据、纯文本数据和文本到图像数据的比例从 7:3:10 改为 5:1:4;
数据比例
多模态理解
第二阶段:增加 9000 万个样本,包括用于图像标题的 YFCC 和用于表格和图表文档理解的 Doc-matrix;
第 3 阶段:添加 DeepSeek-VL2 附加数据集,如 MEME 理解;
视觉生成:真实世界的数据可能质量较差,导致文本到图像的生成不稳定,美学输出效果不佳,Janus-Pro 使用了 7200 万个合成美学数据样本,在预训练阶段(第二阶段),真实数据与合成数据的比例统一为 1:1;
模型比例
将模型参数缩放至 70 亿参数比例;
实验细节
与 Janus 相比,Janus-Pro 实验的细节基本相同。相比之下,大参数模型使用了更多的集群节点(16 到 32 个)。
Janus-Pro 训练超参数
不足
在多模态理解方面,输入分辨率仅限于 384×384,影响了细粒度视觉任务的性能。对于文本到图像的生成,低分辨率导致生成的结果缺乏细节。