
Take Home Message: Janus 是一个简单、统一且可扩展的多模态理解与生成模型,其将多模态理解与生成的视觉编码进行解耦,缓解了两个任务潜在存在的冲突。可在未来通过拓展,纳入更多的输入模态。Janus-Pro 在此基础上,优化训练策略(包括增加训练步数、调整数据配比等)、增加数据(包括使用合成数据等)、扩大模型规模(扩大到 70 亿参数),使得模型多模态理解和文本到图像指令遵循能力方面取得了进步。

代码地址:https://github.com/deepseek-ai/JanusJanus
Janus Pro 地址:https://github.com/deepseek-ai/Janus/blob/main/janus_pro_tech_report.pdf
Janus-Pro 是之前工作 Janus 的高级版本,具体地,包括(1)优化的训练策略、(2)扩展的训练数据以及(3)更大的模型规模。通过这些改进,Janus-Pro 在多模态理解和文本到图像指令遵循能力方面取得了显著进步,同时也增强了文本到图像生成的稳定性。在解读 Janus-Pro 前,先回顾一下 Janus。
前作 Janus 是一个统一多模态理解与生成的自回归框架 ,用于解耦视觉编码以实现统一的多模态理解与生成。对于多模态理解,通常遵循 LLaVA 的设计,使用视觉编码器作为桥梁,使大语言模型能够理解图像。对于生成,通常基于扩散模型,也有一些基于自回归方法。一些方法试图使用单个 Transformer 试图统一多模态理解与生成任务,其通常使用单一视觉编码器处理两个任务的输入。
然而,多模态理解与生成任务所需要的表示有所差异。在多模态理解任务中,视觉编码器的目的是提取高层次的语义信息(如物体类别或者视觉属性),输出不仅涉及从图像中提取信息,还涉及复杂的语义推理,编码器主要集中于高维语义表示。生成任务主要关注于生成局部细节并在图像中保持全局一致性,因此需要低维度编码表示空间结构和纹理细节。在同一空间中将两种任务的表示进行统一会导致冲突。
Janus 包含 2 个独立的视觉编码路径,分别用于多模态理解、生成,并带来两个收益:1)缓解了源自多模态理解和生成不同粒度需求的冲突,2)具有灵活性和可扩展性,解耦后,理解和生成任务都可以采用针对其领域最先进的编码技术,未来可输入点云、脑电信号或音频数据,使用统一的 Transformer 进行处理。

无论是视觉生成还是多模态理解任务,图片特征序列和文本特征序列都会连接在一起,作为 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 个阶段:

训练目标
Janus 是自回归模型,训练使用交叉熵损失函数,对于纯文本理解和多模态理解任务,在文本序列计算损失。对于视觉生成任务,仅在图像序列上计算损失。为了保持设计简单,没有为不同任务分配不同的损失权重。
推理
使用下一个词元预测方法,对于纯文本理解和多模态理解,从预测分布中依次采样词元。对于图像生成,使用无分类器引导。
可能的扩展
Janus 训练数据有限且模型容量(1B)相对较小,在一些方面存在不足,如在短提示下的图像生成表示不佳,文本到图像生成的质量不稳定。Janus-Pro 的架构与 Janus 相同,可参考下图:

对比 Janus,Janus-Pro 实验细节基本一致。相比之下,更大规模参数的模型使用了更多的集群节点(16 个变为 32 个)。

Janus-Pro训练超参数
对于多模态理解,输入分辨率限制在384x384,影响细粒度的视觉任务性能。对于文本到图像的生成,低分辨率导致生成结果缺乏细节。
作者:Eternity,Datawhale成员
往期作品:一文详尽之LLM-Based Agent!
知乎主页:
https://www.zhihu.com/people/AlbertRen