多模态大模型入门指南
1. 引言
1.1 多模态 LLMs 的现状
最近,多模态大模型取得重大进展。随着数据集和模型的规模不断扩大,传统的 MM 模型带来了巨大的计算量,尤其是从头开始训练的话。研究人员意识到 MM 的研究重点工作在各个模态的连接上,所以一个合理的方法是利用好现成的训练好的单模态基础模型,尤其是 LLM。这样可以减少多模态训练的费用,提升训练效率。
MM-LLM 利用 LLM 为各种 MM 任务提供认知能力。LLM 具有良好的语言生成、zero-shot 和 ICL(In-Context Learning)的能力。其他模态的基础模型则提供了高质量的表征。考虑到不同模态的模型是分开训练的,如何将不同模态连接起来,实现协同推理,是核心挑战。
这里面的主要工作便是通过多模态预训练和多模态的指令微调,来实现模态之间的对齐,以及模型输出与人类意图的对齐。
1.2 多模态的发展历程
关于多模态的发展主要有以下几个阶段:
- 最初的发展集中在多模态的内容理解和文本的生成,例如 Flamingo, BLIP-2, Kosmos-1, LLaVA/LLaVA-1.5/LLaVA-1.6, MiniGPT-4, MultiModal-GPT, Video-Chat, Video-LLaMA, IDEFICS, Fuyu-8B, Qwen-Audio。
- 同时实现多模态的输入和输出工作 MM-LMM,探索特定模态的生成,例如 Kosmos-2, Mini-GPT5, 以及语音生成的 SpeechGPT。
- 将 LLM 和外部工具继承进来,实现'any-to-any'的多模态理解和生成,如 visual-chatgpt, ViperGPT, MM-React, HuggingGPT, AudioGPT。
- 为了减少级联过程中传播误差的工作,有 NExT-GPT 和 CoDI-2,来开发任意模式的多模态模型。
1.3 内容结构
本文接下来的结构如下所示。第二节讲模型架构,第三节讲训练流程。
第二节模型架构分为五部分:不同模态的编码器 Encoder,输入 Projector,LLM 骨干,输出 Projector,不同模态的生成器。
训练流程包含两个部分:预训练流程和指令微调部分。同时提供了主流的数据集的介绍。
第四节,讨论 26 个最先进的多模态模型。
2. 模型结构
如图 2 所示,这里包含了通用多模态模型结构的五个组件部分,以及每个组件部分的常用选择。多模态理解主要是前三个部分(模态对齐)。训练期间,encoder,LLM Backbone 和 generator 一般保持冻结。主要优化输入和输出的 projector。由于 Projector 是轻量级的模块,MM-LLMs 中可以训练的参数比例和总参数相比非常小(2% 左右),模型的总体参数规模取决于 LLM 部分。
注意:目前有的多模态大模型,也会对 Encoder,甚至 LLM 进行训练,来提升整体的模型的能力。
2.1 Modality Encoder
模态编码器主要是对来自不同模态的输入进行编码,来获得相应的特征:
$$F_X = M_E(X_I)$$
存在各种预训练的编码器来处理不同的模态,模态可以是图像、视频、音频、3D 等。
视觉模态: 对于图像,一般有四个可选的编码器:NFNet-F6, ViT, CLIP ViT, EVA-CLIP ViT。
- NFNet-F6:是一个无归一化的 ResNet 网络,可以在增强过的数据集上获得 SOTA 的图像识别的性能。
- ViT:采用 transformer 模型,将 image 变成 patch,然后对图像进行处理。然后经过线性投影 flatten,然后经过多个 transformer 模块。
- CLIP-ViT:利用大量的文本 - 图像块,通过对比学习来优化 ViT,将成对的文本图像视为正样本,其他的文本和图像视为负样本。
- EVA-CLIP:对大规模的 CLIP 训练稳定了训练过程和优化过程。
对于视频,可以统一采样 5 帧,进行与图像同样的处理。
音频模态: 通常使用 C-Former, HuBERT, BEATs 和 Whisper 等进行编码。
- C-Former:使用了 CIF 对齐机制来实现序列的转换,并且使用一个 Transformer 来提取音频特征。


