Janus-Pro 的架构采用了解耦视觉编码的设计理念,将多模态理解与视觉生成任务分离开来,以充分发挥各自优势。Janus-Pro的核心创新在于将视觉编码过程分为两个独立的路径,从而解决传统统一编码中“理解”和“生成”任务之间的冲突。
Janus-Pro 模型在架构设计上继承并优化了 Janus 的核心理念——视觉编码的解耦,这种设计通过分离多模态理解任务和视觉生成任务的视觉编码路径,进一步提升了模型在多模态任务中的表现,同时增强了其在大规模数据和复杂任务场景下的适应性。在接下来的内容中,将详细解析Janus-Pro模型的解耦视觉编码知识。
1. 理解编码器(Understanding Encoder)
Janus-Pro 的理解编码器基于 SigLIP 视觉编码器,其核心任务是从图像中提取高维语义特征,以支持多模态理解任务,例如图像分类、视觉问答(VQA)和图文匹配等。具体实现如下:
(1)SigLIP 视觉编码器:SigLIP 是一种基于 Transformer 的先进视觉编码器,专为多模态任务设计,能够捕捉图像中的全局语义信息和细节特征。与 Janus 相比,Janus-Pro 在 SigLIP 的使用上进行了优化,进一步提升了特征提取的效率和语义丰富度。SigLIP 编码器输出的特征表示不仅包含图像的整体语义,还能反映图像中的局部结构和关系。
(2)特征处理:SigLIP 编码器输出的特征是一个二维网格(2D grid),其中每个位置的特征向量代表图像的一个局部区域。为了与自回归 Transformer 的输入格式对齐,Janus-Pro 将这些二维特征网格展平为一维序列。这种展平操作保留了特征的空间顺序信息,使得模型能够更好地捕捉图像中的局部和全局语义关系。
(3)理解适配器(Understanding Adaptor):为了将提取的图像特征映射到大语言模型(LLM)的输入空间,Janus-Pro 引入了一个专门设计的理解适配器。与 Janus 相比,Janus-Pro 的理解适配器经过优化,能够更高效地将高维图像特征转换为与 LLM 兼容的特征表示。理解适配器由两层多层感知机(MLP)组成,其作用是将图像特征与文本特征在同一空间中对齐,从而实现多模态数据的统一处理。
2. 生成编码器(Generation Encoder)
生成编码器的目标是将图像转换为离散的 ID 序列,以支持文本到图像的生成任务。具体实现如下:
(1)VQ Tokenizer:Janus-Pro 使用 VQ Tokenizer 作为生成编码器的核心组件。与 Janus 相比,Janus-Pro 对 VQ Tokenizer 进行了优化,进一步提升了图像离散化的效果。VQ Tokenizer 通过矢量量化技术将图像划分为多个小块(patches),并将每个小块映射到一个离散的编码空间中,从而生成一个离散的 ID 序列。这种离散化处理使得图像能够以一种类似于文本的方式被处理,便于与语言模型的输入格式对齐。
(2)特征嵌入与映射:VQ Tokenizer 输出的每个离散 ID 对应一个码本嵌入(codebook embeddings),这些嵌入是 VQ Tokenizer 在训练过程中学习到的特征表示。为了将这些视觉 token 嵌入到 LLM 的输入空间中,Janus-Pro 使用了一个生成适配器。与 Janus 相比,Janus-Pro 的生成适配器经过优化,能够更高效地将码本嵌入映射到 LLM 的输入空间中。生成适配器同样由两层 MLP 组成,其作用是将视觉 token 与文本 token 在同一空间中对齐,从而实现高效的视觉生成任务。
(3)特征序列拼接:经过理解适配器和生成适配器处理后的图像特征序列,与文本特征序列按顺序拼接在一起,形成一个统一的多模态输入序列。这个序列随后被输入到自回归 Transformer 中进行进一步处理。与 Janus 相比,Janus-Pro 在特征拼接过程中进一步优化了不同模态特征的对齐方式,使得模型能够更好地理解多模态数据的上下文关系。
在Janus-Pro的第二阶段(统一预训练阶段)的设计中,最初参考了PixArt的方法,将文本到图像(Text-to-Image)生成能力的训练分为两个部分。这种分阶段的训练策略旨在通过不同的数据集和训练目标,逐步提升模型在视觉生成任务中的性能。然而,在实际实施过程中,这种策略暴露出了效率和效果上的问题,促使研究者对其进行了重新评估和优化。
1. 初始策略:参考PixArt方法的两部分训练
(1)第一部分:基于ImageNet数据的训练
(2)第二部分:基于普通文本到图像数据的训练
2. 问题与挑战
尽管这种分两部分的训练策略在理论上具有一定的合理性,但在实际实施过程中,研究者发现这种策略存在显著的问题:
(1)计算效率低下
(2)性能瓶颈
3. 优化方向
鉴于上述问题,研究者对Janus模型的训练策略进行了重新评估和优化。优化后的策略主要集中在以下几个方面:
总之,PixArt这种策略虽然在理论上具有一定的合理性,但在实际实施过程中暴露出了计算效率低下和性能瓶颈的问题。通过进一步实验和优化,DeepSeek团队对训练策略进行了调整,以提升模型的效率和表现。这种优化不仅解决了初始策略中的问题,还为多模态模型的训练提供了新的思路和方法。
在 DeepSeek 的技术报告中,针对原始 Janus 模型的三阶段训练流程中存在的训练效率和数据利用率问题,Janus-Pro 对训练策略进行了显著改进。这些改进不仅提升了模型的训练效率,还增强了其在多模态任务中的性能表现。以下是 Janus-Pro 在各阶段的具体优化措施:
1. 阶段 I:适配器与图像预测头训练
在原始 Janus 的训练流程中,阶段 I 主要用于训练适配器和图像预测头,但训练步数相对较少,导致模型在学习图像像素依赖关系时不够充分。为了优化这一点,Janus-Pro 对阶段 I 的训练策略进行了以下改进:
(1)延长 ImageNet 数据上的训练步数
Janus-Pro 显著增加了在 ImageNet 数据集上的训练步数。ImageNet 是一个大规模的图像分类数据集,包含丰富的图像类别和高质量的标注信息。通过延长在该数据集上的训练时间,模型能够在冻结大语言模型(LLM)参数的情况下,更充分地学习图像的像素依赖关系。这种改进使得模型即使在不更新 LLM 参数的情况下,也能生成较为合理和高质量的图像内容。
(2)专注于像素依赖关系的学习
在阶段 I,Janus-Pro 的目标是让模型专注于学习图像内部的像素依赖关系,而不是依赖于复杂的文本描述。通过这种方式,模型能够在后续阶段更好地处理图像生成任务,同时为多模态任务打下坚实的基础。
2. 阶段 II:统一预训练
原始 Janus 在阶段 II 的训练中,参考了 PixArt 的方法,将文本到图像的训练分为两部分:一部分使用 ImageNet 数据,以类别名称作为提示进行图像生成;另一部分使用常规的文本到图像数据进行训练。然而,这种策略导致了显著的计算效率低下,并且在处理复杂描述时表现不稳定。针对这一点,Janus-Pro 对阶段 II 的训练策略进行了以下优化:
(1)取消基于 ImageNet 分类提示的训练部分
Janus-Pro 取消了依赖 ImageNet 数据进行分类提示的训练部分。这种设计减少了不必要的计算开销,避免了模型在学习像素依赖关系时的冗余训练。
(2)直接使用常规文本-图像数据进行训练
Janus-Pro 直接使用常规的文本到图像数据进行训练,重点学习如何根据密集的文本描述生成图像。这种改进使得模型能够更高效地利用训练数据,同时在处理复杂描述时表现得更为稳定。
(3)提升训练效率与稳定性
通过这种优化,Janus-Pro 不仅提高了训练效率,还增强了模型在生成任务中的稳定性。模型能够更好地理解文本描述与图像内容之间的语义对齐,从而生成更高质量的图像。
3. 阶段 III:监督微调
在原始 Janus 的阶段 III 中,训练数据的比例为多模态理解数据、纯文本数据和文本到图像数据的 7:3:10。这种比例分配虽然能够平衡不同任务的需求,但在实际应用中,模型的多模态理解性能和图像生成能力仍有提升空间。针对这一点,Janus-Pro 对阶段 III 的训练策略进行了以下调整:
(1)调整数据比例
Janus-Pro 将训练数据的比例调整为 5:1:4,即多模态理解数据、纯文本数据和文本到图像数据的比例分别为 5、1 和 4。这一调整使得模型在保持较强图像生成能力的同时,进一步提升了多模态理解性能。
(2)优化任务平衡
通过调整数据比例,Janus-Pro 更好地平衡了多模态理解任务和图像生成任务的需求。减少文本到图像数据的比例,使得模型能够更专注于多模态理解任务,从而在视觉问答、图像分类等任务中表现得更为出色。
(3)增强模型的综合性能
这种调整不仅提升了模型在多模态理解任务中的表现,还使得模型在图像生成任务中保持了较高的质量。通过优化任务平衡,Janus-Pro 在多种多模态任务中展现了更强的综合性能。
总之,Janus-Pro 针对原始 Janus 模型的三阶段训练流程中存在的问题,进行了显著的优化和改进。在阶段 I,通过延长在 ImageNet 数据上的训练步数,模型能够更充分地学习图像的像素依赖关系;在阶段 II,取消了依赖 ImageNet 分类提示的训练部分,直接使用常规文本到图像数据进行训练,显著提升了训练效率和模型的稳定性;在阶段 III,通过调整训练数据的比例,优化了多模态理解任务和图像生成任务之间的平衡。这些改进不仅提升了模型的训练效率,还增强了其在多模态任务中的综合性能,为多模态模型的训练提供了新的思路和方法。
为了进一步提升 Janus-Pro 模型的性能,DeepSeek 在数据扩展方面进行了大幅度的改进,主要体现在以下两个方面。
1. 多模态理解数据扩展
在预训练阶段,Janus-Pro 新增了约 9000 万个样本,涵盖了多种类型的数据:
2. 视觉生成数据扩展
在视觉生成任务中,数据质量对模型性能至关重要。为此,Janus-Pro 采取了以下措施:
通过上述数据扩展策略,Janus-Pro 模型在多模态理解和视觉生成任务上均取得了显著的性能提升,为多模态 AI 的发展提供了坚实的基础。
除了架构和训练策略的改进,Janus-Pro 还通过扩展模型规模来进一步提升性能。模型规模的扩展不仅是对参数数量的增加,更是对模型架构和计算能力的全面优化。下面介绍了Janus-Pro模型在规模扩展方面的具体措施及其效果。
1. 多种模型规模
Janus-Pro 提供了两种不同规模的模型版本,以满足不同场景下的需求并验证模型扩展的有效性:
(1)1B 版本
1B 版本的 Janus-Pro 是在原始 Janus 模型的基础上进行优化的版本,在多模态理解和文本到图像生成任务中表现出色,尤其是在处理中等复杂度的任务时,能够以较低的计算成本提供高效的解决方案。
(2)7B 版本
7B 版本的 Janus-Pro 是对模型规模进行大幅扩展后的版本。通过增加嵌入维度、注意力头数量和层数,7B 版本在处理复杂多模态任务时表现出更强的能力。它能够捕捉到更丰富的语义信息和更复杂的模态间关系,从而在多模态理解和文本到图像生成任务中取得显著的性能提升。
2. 收敛速度与性能提升
实验结果表明,模型规模的扩展不仅提升了 Janus-Pro 的性能,还在多个方面带来了显著的改进:
(1)更快的收敛速度
(2)更高的性能表现
(3)验证模型扩展策略的有效性
实验结果验证了模型扩展策略的有效性。通过增加参数量、嵌入维度、注意力头数量和层数,7B 版本的 Janus-Pro 在多模态任务中展现出更强的性能。这种扩展不仅提升了模型的表达能力,还增强了其在复杂任务中的适应性。
此外,7B 版本的扩展还为未来进一步提升模型性能提供了基础。随着模型规模的增加,Janus-Pro 有望在更复杂的多模态任务中取得更好的表现,例如多模态对话、视频理解等。
总之,Janus-Pro 通过扩展模型规模,进一步提升了其在多模态任务中的性能。1B 和 7B 两种版本的设计满足了不同复杂度任务的需求,而 7B 版本在嵌入维度、注意力头数量和层数上的提升,显著增强了模型在多模态理解和文本到图像生成任务中的表现。实验结果表明,较大规模的模型不仅在收敛速度上有明显加快,而且在多个评测基准上均能取得领先成绩。这些改进验证了模型扩展策略的有效性,并为未来多模态模型的发展提供了重要的参考。