Janus 包含 2 个独立的视觉编码路径,分别用于多模态理解、生成,并带来两个收益:1)缓解了源自多模态理解和生成不同粒度需求的冲突,2)具有灵活性和可扩展性,解耦后,理解和生成任务都可以采用针对其领域最先进的编码技术,未来可输入点云、脑电信号或音频数据,使用统一的 Transformer 进行处理。
对于文本理解,使用 LLM 内置 Tokenizer 将文本转换为离散 IDs;
对于多模态理解,使用 SigLIP 编码器抽取图片中的高维语义特征(笔者注:Cosmos中在Guardrails部分同样使用SigLIP编码器),使用 Adaptor(2 层 MLP)将抽取特征映射到 LLM 的文本特征空间中;
长边调整至 384 像素,使用 RGB(127, 127, 127)填充短边至 384 像素;
对于视觉生成,使用 VQ Tokenizer 将图像转换为离散IDs,使用Adaptor(2 层 MLP)将每个 ID 映射到 LLM 的文本特征空间中;
短边调整至384像素,长边裁剪至 384 像素;
整体训练使用 16 个节点,每个节点包含 8 块 Nvidia A100 GPU;
对于文本理解,使用 LLM 内置 Tokenizer 将文本转换为离散 IDs;
对于多模态理解,使用 SigLIP 编码器抽取图片中的高维语义特征(笔者注:Cosmos中在Guardrails部分同样使用SigLIP编码器),使用 Adaptor(2 层 MLP)将抽取特征映射到 LLM 的文本特征空间中;
长边调整至 384 像素,使用 RGB(127, 127, 127)填充短边至 384 像素;
长边调整至 384 像素,使用 RGB(127, 127, 127)填充短边至 384 像素;
对于视觉生成,使用 VQ Tokenizer 将图像转换为离散IDs,使用Adaptor(2 层 MLP)将每个 ID 映射到 LLM 的文本特征空间中;
短边调整至384像素,长边裁剪至 384 像素;
短边调整至384像素,长边裁剪至 384 像素;
整体训练使用 16 个节点,每个节点包含 8 块 Nvidia A100 GPU;
无论是视觉生成还是多模态理解任务,图片特征序列和文本特征序列都会连接在一起,作为 LLM(文中使用 DeepSeek-LLM 1.3B)的输入;
The built-in prediction head of the LLM is utilized for text predictions in both the pure text understanding and multimodal understanding tasks, while a randomly initialized prediction head is used for image predictions in the visual generation task. The entire model adheres to an autoregressive framework without the need for specially designed attention masks.Janus/blob/main/janus_pro_tech_report.pd
Janus 的训练分为 3 个阶段:
第一阶段:训练 Adaptor 与 Image Head,在嵌入空间创建语言元素与视觉元素之间的联系,使得 LLM 能够理解图像中的实体,并具备初步视觉生成能力;
对于多模态理解,使用来自 SHareGPT4V 的 125 万个图像-文本配对字幕数据,格式:<图像><文本>;
对于视觉生成,使用来自 ImageNet1k 的 120 万个样本,格式:<类别名><图像>;
第二阶段:统一预训练,使用多模态语料库进行统一预训练,学习多模态理解和生成。在该阶段使用纯文本数据、多模态理解数据和视觉生成数据。使用ImageNet-1k进行简单的视觉生成训练,随后使用通用文本到图像数据提升模型开放领域的视觉生成能力;
纯文本数据:DeepSeek-LLM 预训练语料库;
交错的图像 - 文本数据:WikiHow 和 WIT 数据集;
图像 Caption 数据:来自多个来源的图像,并采用开源多模态模型重新为部分图像添加字幕,数据格式为问答对,如
表格和图表数据:来自 DeepSeek-VL 的相应表格和图表数据,数据格式为
视觉生成数据:来自多个数据集的 image-caption 对以及 200 万个内部数据;
在训练过程中,以 25% 的概率随机仅使用 caption 的第一句话;
ImageNet 样本仅在最初的 120K 训练步骤中出现,其他数据集的图像在后续 60K 步骤中出现;
第三阶段:监督微调,使用指令微调数据对预训练模型进行微调,以增强其遵循指令和对话的能力。微调除生成编码器之外的所有参数。在监督答案的同时,对系统和用户提示进行遮盖。为了确保 Janus 在多模态理解和生成方面都具备熟练度,不会针对特定任务分别微调模型。相反,我们使用纯文本对话数据、多模态理解数据和视觉生成数据的混合数据,以确保在各种场景下的多功能性;
文本理解:使用来自特定来源的数据;
多模态理解:使用来自多个来源的指令调整数据;
视觉生成:使用来自部分第二阶段数据集的图像-文本对子集以及 400 万个内部数据;
数据格式为:User: \n Assistant:
第一阶段:训练 Adaptor 与 Image Head,在嵌入空间创建语言元素与视觉元素之间的联系,使得 LLM 能够理解图像中的实体,并具备初步视觉生成能力;
对于多模态理解,使用来自 SHareGPT4V 的 125 万个图像-文本配对字幕数据,格式:<图像><文本>;
对于视觉生成,使用来自 ImageNet1k 的 120 万个样本,格式:<类别名><图像>;
对于多模态理解,使用来自 SHareGPT4V 的 125 万个图像-文本配对字幕数据,格式:<图像><文本>;
对于视觉生成,使用来自 ImageNet1k 的 120 万个样本,格式:<类别名><图像>;
第二阶段:统一预训练,使用多模态语料库进行统一预训练,学习多模态理解和生成。在该阶段使用纯文本数据、多模态理解数据和视觉生成数据。使用ImageNet-1k进行简单的视觉生成训练,随后使用通用文本到图像数据提升模型开放领域的视觉生成能力;
纯文本数据:DeepSeek-LLM 预训练语料库;
交错的图像 - 文本数据:WikiHow 和 WIT 数据集;
图像 Caption 数据:来自多个来源的图像,并采用开源多模态模型重新为部分图像添加字幕,数据格式为问答对,如
表格和图表数据:来自 DeepSeek-VL 的相应表格和图表数据,数据格式为
视觉生成数据:来自多个数据集的 image-caption 对以及 200 万个内部数据;
在训练过程中,以 25% 的概率随机仅使用 caption 的第一句话;
ImageNet 样本仅在最初的 120K 训练步骤中出现,其他数据集的图像在后续 60K 步骤中出现;
纯文本数据:DeepSeek-LLM 预训练语料库;
交错的图像 - 文本数据:WikiHow 和 WIT 数据集;
图像 Caption 数据:来自多个来源的图像,并采用开源多模态模型重新为部分图像添加字幕,数据格式为问答对,如
表格和图表数据:来自 DeepSeek-VL 的相应表格和图表数据,数据格式为
视觉生成数据:来自多个数据集的 image-caption 对以及 200 万个内部数据;
在训练过程中,以 25% 的概率随机仅使用 caption 的第一句话;
ImageNet 样本仅在最初的 120K 训练步骤中出现,其他数据集的图像在后续 60K 步骤中出现;
第三阶段:监督微调,使用指令微调数据对预训练模型进行微调,以增强其遵循指令和对话的能力。微调除生成编码器之外的所有参数。在监督答案的同时,对系统和用户提示进行遮盖。为了确保 Janus 在多模态理解和生成方面都具备熟练度,不会针对特定任务分别微调模型。相反,我们使用纯文本对话数据、多模态理解数据和视觉生成数据的混合数据,以确保在各种场景下的多功能性;
文本理解:使用来自特定来源的数据;
多模态理解:使用来自多个来源的指令调整数据;
视觉生成:使用来自部分第二阶段数据集的图像-文本对子集以及 400 万个内部数据;
数据格式为:User: \n Assistant:
文本理解:使用来自特定来源的数据;
多模态理解:使用来自多个来源的指令调整数据;
视觉生成:使用来自部分第二阶段数据集的图像-文本对子集以及 400 万个内部数据;
数据格式为:User: \n Assistant:
训练目标
Janus 是自回归模型,训练使用交叉熵损失函数,对于纯文本理解和多模态理解任务,在文本序列计算损失。对于视觉生成任务,仅在图像序列上计算损失。为了保持设计简单,没有为不同任务分配不同的损失权重。
推理
使用下一个词元预测方法,对于纯文本理解和多模态理解,从预测分布中依次采样词元。对于图像生成,使用无分类器引导。
可能的扩展
对于多模态理解,1)可选择更强的视觉编码器,2)可使用动态高分辨技术;
对于视觉生成,1)可选择更加细粒度的编码器,2)使用专门为视觉生成设计的损失函数,3)结合因果注意力和并行方法;
更多模态,能够集成 3D 点云、触觉、脑电图等输模态输入;
对于多模态理解,1)可选择更强的视觉编码器,2)可使用动态高分辨技术;
对于视觉生成,1)可选择更加细粒度的编码器,2)使用专门为视觉生成设计的损失函数,3)结合因果注意力和并行方法;
更多模态,能够集成 3D 点云、触觉、脑电图等输模态输入;
Janus-Pro升级
Janus 训练数据有限且模型容量(1B)相对较小,在一些方面存在不足,如在短提示下的图像生成表示不佳,文本到图像生成的质量不稳定。Janus-Pro 的架构与 Janus 相同,可参考下图:
主要改进
训练策略
Stage 1: 增加训练步数,在 ImageNet 上充分训练;
Stage 2: 不再使用 ImageNet,直接使用常规文本到图像数据的训练数据;
Stage 3: 修改微调过程中的数据集配比,将多模态数据、纯文本数据和文本到图像的比例从 7:3:10 改为 5:1:4;
数据规模
多模态理解
Stage 2: 增加 9000 万个样本,包括图像字幕数据 YFCC、表格图表文档理解数据 Doc-matrix;
Stage 3: 加入 DeepSeek-VL2 额外数据集,如 MEME 理解等;
视觉生成:真实世界数据可能包含质量不高,导致文本到图像的生成不稳定,产生美学效果不佳的输出, Janus-Pro 使用 7200 万份合成美学数据样本,统一预训练阶段(Stage 2)真实数据与合成数据比例 1:1;
模型规模
将模型参数扩展到 70 亿参数规模;
训练策略
Stage 1: 增加训练步数,在 ImageNet 上充分训练;
Stage 2: 不再使用 ImageNet,直接使用常规文本到图像数据的训练数据;
Stage 3: 修改微调过程中的数据集配比,将多模态数据、纯文本数据和文本到图像的比例从 7:3:10 改为 5:1:4;
Stage 1: 增加训练步数,在 ImageNet 上充分训练;
Stage 2: 不再使用 ImageNet,直接使用常规文本到图像数据的训练数据;
Stage 3: 修改微调过程中的数据集配比,将多模态数据、纯文本数据和文本到图像的比例从 7:3:10 改为 5:1:4;
数据规模
多模态理解
Stage 2: 增加 9000 万个样本,包括图像字幕数据 YFCC、表格图表文档理解数据 Doc-matrix;
Stage 3: 加入 DeepSeek-VL2 额外数据集,如 MEME 理解等;
视觉生成:真实世界数据可能包含质量不高,导致文本到图像的生成不稳定,产生美学效果不佳的输出, Janus-Pro 使用 7200 万份合成美学数据样本,统一预训练阶段(Stage 2)真实数据与合成数据比例 1:1;
多模态理解
Stage 2: 增加 9000 万个样本,包括图像字幕数据 YFCC、表格图表文档理解数据 Doc-matrix;
Stage 3: 加入 DeepSeek-VL2 额外数据集,如 MEME 理解等;
Stage 2: 增加 9000 万个样本,包括图像字幕数据 YFCC、表格图表文档理解数据 Doc-matrix;
Stage 3: 加入 DeepSeek-VL2 额外数据集,如 MEME 理解等;
视觉生成:真实世界数据可能包含质量不高,导致文本到图像的生成不稳定,产生美学效果不佳的输出, Janus-Pro 使用 7200 万份合成美学数据样本,统一预训练阶段(Stage 2)真实数据与合成数据比例 1:1;
模型规模
将模型参数扩展到 70 亿参数规模;
将模型参数扩展到 70 亿参数规模;
对比 Janus,Janus-Pro 实验细节基本一致。相比之下,更大规模参数的模型使用了更多的集群节点(16 个变为 32 个)。
Janus-Pro训练超参数
不足
对于多模态理解,输入分辨率限制在384x384,影响细粒度的视觉任务性能。对于文本到图像的生成,低分辨率导致生成结果缺乏细节。
作者:Eternity,Datawhale成员
!
知乎主页:
https://www.zhihu.com/people/AlbertRen返回搜狐,查看更多