仅1.3B!Janus 统一多模态理解和生成 原创
DeepSeek开源了一个仅1.3B大小的多模态大模型:Janus(两面神),统一了多模态理解和生成。通过将视觉编码解耦成独立的pathway,同时仅使用一个统一的transformer架构进行处理。Janus在多模态理解和生成基准测试中超越了以往的统一模型,作为一个多模态“小”模型具有显著的优势。
Paper: https://arxiv.org/abs/2410.13848
Github: https://github.com/deepseek-ai/Janus
Model: https://huggingface.co/deepseek-ai/Janus-1.3B
Janus
Janus 是一个统一的多模态理解和生成的大型语言模型(MLLM),它将多模态理解和生成的视觉编码解耦。Janus 基于 DeepSeek-LLM-1.3b-base 构建,该模型训练时使用了大约5000亿个文本token的语料库。在多模态理解方面,它使用 SigLIP-L 作为视觉编码器,支持384 x 384像素的图像输入。在图像生成方面,Janus 使用了LlamaGen的tokenizer,并且具有16倍的下采样率。
Janus的训练过程是分阶段进行的,以确保模型在多模态理解和生成任务上都能达到高性能:
第一阶段:训练Adpater和图像Head
- 目标:在这一阶段,主要目标是在视觉和语言元素之间建立概念联系,使大型语言模型(LLM)能够理解图像中显示的实体,并具备初步的视觉生成能力。
- 训练策略:在这一阶段,视觉编码器和LLM被保持冻结状态,只有理解适配器、生成适配器和图像头部中的可训练参数会被更新。
第二阶段:统一预训练
- 目标:在这一阶段,通过多模态语料库进行统一预训练,使Janus能够学习多模态理解和生成。
- 数据:使用所有类型的训练数据,包括纯文本数据、多模态理解数据和视觉生成数据。
- 训练策略:受到Pixart的启发,首先使用ImageNet-1k进行简单的视觉生成训练,帮助模型掌握基本的像素依赖关系。然后,使用通用的文本到图像数据增强模型的开放领域视觉生成能力。
第三阶段:监督微调(SFT)
- 目标:在这一阶段,使用指令调整数据对预训练模型进行微调,以增强其遵循指令和对话的能力。
- 训练策略:除了生成编码器之外,所有参数都会进行微调。
- 数据:为了确保Janus在多模态理解和生成方面的熟练程度,微调时不会对特定任务进行单独模型微调。相反,使用混合的纯文本对话数据、多模态理解数据和视觉生成数据,以确保在多种场景下的多功能性。
训练细节:
- 损失函数:Janus作为一个自回归模型,在训练期间简单地采用交叉熵损失函数。
- 推理方法:在推理过程中,模型完全采用next token prediction进行推理。对于纯文本理解和多模态理解,按照预测分布顺序采样token。对于图像生成,使用CFG(classifier-free guidance, 在训练过程中,以10%的概率将文本到图像数据中的文本条件替换为pad token,使模型具有无条件的视觉生成能力)
作为一个next token prediction的图像生成模型,生成效果相当不错:
同时作为一个多模态理解模型,仅1.3B且只有384的输入分辨率,效果也超出预期。比如带有文字的meme图的理解,甚至也还行:
可以看出,多模态大模型生成和理解,越卷越统一;模型尺寸也有着越卷越小的趋势。
本文转载自公众号思源数据科学 作者:思源Source