为什么多模态AI是下一个风口?深度解读新一代LLM 精华
本文旨在解释多模态大语言模型的工作原理。此外,还将回顾并总结最近几周发布的十几篇多模态研究论文和模型(包括 Llama 3.2)的内容,以比较它们的不同实现方式。
一、多模态大语言模型是什么?
多模态大语言模型(Multimodal Large Language Models,简称Multimodal LLMs)是一种能够理解和生成多种类型数据的模型,包括文本、图片、音频和视频等。这些模型可以跨越不同的数据形式,进行信息的交互与生成。例如,传统语言模型只能处理文字,但多模态模型不仅能“读”文字,还能“看”图片、“听”声音,甚至“看”视频,并用文字或其他形式将它们的理解表达出来。
一个典型的应用场景是图片描述。例如,你可以上传一张图片,模型可以用自然语言准确地描述图片中的内容。它还能完成更复杂的任务,比如提取PDF文件中的表格数据,生成学术文档所需的LaTeX格式等。不管是日常生活中的实用性,还是在专业领域的助力,多模态模型都展示了其广泛的应用潜力。
二、构建多模态大语言模型的常见方法
构建多模态大语言模型(LLM)主要有两种常见的方法:
- 方法A:统一嵌入解码架构(Unified Embedding Decoder Architecture);
- 方法B:跨模态注意力架构(Cross-Modality Attention Architecture)。
如上图所示,统一嵌入解码架构(Unified Embedding-Decoder Architecture)使用单一解码模型,其结构类似于未修改的大语言模型架构,例如 GPT-2 或 Llama 3.2。在这种方法中,图像被转换为与原始文本标记(Token)相同的嵌入大小,使得LLM能够在文本和图像输入标记合并后共同处理这些数据。
相比之下,跨模态注意力架构(Cross-Modality Attention Architecture)通过跨注意力机制在注意力层中直接集成图像和文本嵌入。
接下来的部分将从概念层面探索这些方法如何工作,并结合最近的多模态LLM研究论文,探讨它们在实际应用中的实现方式。
2.1 方法A:统一嵌入解码架构
让我们先从统一嵌入解码架构开始,这种架构如下面的图示所示。
统一嵌入解码架构的图示,这一架构基于未修改的解码器风格的大语言模型(如 GPT-2、Phi-3、Gemma 或 Llama 3.2),模型接收的输入包括图像标记和文本标记的嵌入。
在统一嵌入解码架构中,图像被转换为嵌入向量,其过程与标准文本语言模型处理文本时将输入文本转换为嵌入的方式类似。
对于一个典型的仅处理文本的LLM来说,文本输入通常会经过以下步骤:
a. **标记化:**文本被分解为小的单位(如使用字节对编码法,Byte-Pair Encoding);
b. **嵌入层处理:**这些标记通过嵌入层转换为嵌入向量。
2.1.1 理解图像编码器
类似于文本的标记化和嵌入生成,图像嵌入是通过一个图像编码器模块生成的(而不是通过标记器生成),如下图所示。
图像编码器的内部如何工作?如图所示,为了处理一张图像,我们首先将图像分割成小块,就像在标记化过程中将单词分解为子词一样。这些小块随后由一个预训练的**视觉Transformer(Vision Transformer,简称ViT)**进行编码,具体过程如下面的图示所示。
该图示展示了经典ViT模型的设置,与论文《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》(2020年)中提出的模型类似。
需要注意的是,ViT通常用于分类任务,因此上图中包含了一个分类头(classification head)。然而,在这里我们只需要使用图像编码器部分。
2.1.2 线性投影模块的作用
前一图示中的“线性投影”(linear projection)由一个单独的线性层(即全连接层)组成。其作用是将经过展平的图像块投影为一个与Transformer编码器兼容的嵌入尺寸。如下图所示,这一线性投影的过程展示了如何将一个展平的图像块从256维向量投影为768维向量。
上图展示了线性投影层如何将展平的图像块从256维嵌入空间映射到768维嵌入空间。如果更倾向于通过代码示例理解,我们可以用以下PyTorch代码实现对图像块的线性投影:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
import torch
class PatchProjectionLayer(torch.nn.Module):
def __init__(self, patch_size, num_channels, embedding_dim):
super().__init__()
self.patch_size = patch_size
self.num_channels = num_channels
self.embedding_dim = embedding_dim
self.projection = torch.nn.Linear(
patch_size * patch_size * num_channels, embedding_dim
)
def forward(self, x):
batch_size, num_patches, channels, height, width = x.size()
x = x.view(batch_size, num_patches, -1) # Flatten each patch
x = self.projection(x) # Project each flattened patch
return x
# Example Usage:
batch_size = 1
num_patches = 9 # Total patches per image
patch_size = 16 # 16x16 pixels per patch
num_channels = 3 # RGB image
embedding_dim = 768 # Size of the embedding vector
projection_layer = PatchProjectionLayer(patch_size, num_channels, embedding_dim)
patches = torch.rand(
batch_size, num_patches, num_channels, patch_size, patch_size
)
projected_embeddings = projection_layer(patches)
print(projected_embeddings.shape)
# This prints
# torch.Size([1, 9, 768])
如果你阅读过机器学习问与答》(Machine Learning Q and AI)一书,你可能知道,可以用卷积操作来替代线性层,并实现数学上的等价性。在这里,这种方法尤其实用,因为我们可以通过卷积操作同时完成图像块的创建和投影,仅需两行代码:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
layer = torch.nn.Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16))
image = torch.rand(batch_size, 3, 48, 48)
projected_patches = layer(image)
print(projected_patches.flatten(-2).transpose(-1, -2).shape)
# This prints
# torch.Size([1, 9, 768])
2.1.3 图像与文本的标记化对比
在简单讨论了图像编码器(及其包含的线性投影)的作用后,让我们回到之前提到的文本标记化类比,进一步比较图像和文本标记化与嵌入的过程,如下图所示。
上图展示了图像和文本标记化过程的并排对比。可以看到,在图像编码器之后,我添加了一个额外的投影模块(projector)。这一模块通常是一个线性投影层,与前面提到的类似,其目的是将图像编码器的输出投影到与文本标记嵌入相匹配的维度,如下图所示。(需要注意的是,这个模块有时也被称为适配器、连接器或转换器。)
现在,图像块嵌入的维度已经与文本标记嵌入的维度相同,因此我们可以将它们简单地拼接在一起,作为输入提供给大语言模型(LLM)。为了方便参考,以下再次展示了本节开头的图示。
将图像块标记投影到与文本标记嵌入相同维度后,拼接为标准LLM的输入。顺便提一下,此部分讨论的图像编码器通常是预训练的视觉Transformer(ViT)。一个常见的选择是CLIP或OpenCLIP。
然而,方法A也有一些变体可以直接处理图像块,例如Fuyu模型,如下图所示。
如上图所示,Fuyu模型直接将输入的图像块送入线性投影层(或嵌入层),通过自身学习图像块的嵌入,而不像其他模型和方法那样依赖额外的预训练图像编码器。这种方法显著简化了架构和训练流程。
2.2 方法B:跨模态注意力架构
在讨论了统一嵌入解码架构的方法并理解了图像编码的基本概念后,我们来探讨另一种实现多模态LLM的方法:跨模态注意力架构,如下图所示。
在上图所示的跨模态注意力架构中,我们仍然使用前面讨论的图像编码器设置。然而,不同的是,这种方法不是将图像块编码作为LLM的输入,而是通过多头注意力层中的跨注意力机制将输入图像块连接起来。
这一思想可以追溯到2017年提出的经典Transformer架构(Attention Is All You Need论文),如下图所示。
需要注意的是,上图中原始的Attention Is All You Need Transformer最初是为语言翻译开发的。因此,它由一个文本编码器(图的左侧)和一个文本解码器(图的右侧)组成,用于生成翻译结果。在多模态LLM的背景下,编码器部分被图像编码器取代,但核心思想保持一致。
跨注意力是如何工作的?我们来看一个概念图,展示了常规自注意力机制内部的运行方式。
在上图中,输入为 x,而 W_q 是生成查询(Query, Q)的权重矩阵。同样,K 表示键(Key),V 表示值(Value)。A 是注意力分数矩阵,Z 则是输入 x 转换后的输出上下文向量。
在跨注意力中,与自注意力不同,我们有两个不同的输入来源,如下图所示。
跨注意力的示意图,在跨注意力中,可能存在两个不同的输入 x_1 和 x_2。如前两幅图所示,在自注意力中,我们处理的是同一个输入序列。而在跨注意力中,我们混合或结合了两个不同的输入序列。
在经典 Transformer 架构(Attention Is All You Need 论文)中,两个输入 x_1 和 x_2 分别对应于编码器模块输出的序列(x_2)和解码器部分正在处理的输入序列(x_1)。在多模态LLM的上下文中,x_2 是图像编码器的输出。(请注意,查询通常来自解码器,而键和值通常来自编码器。)
值得注意的是,在跨注意力中,两个输入序列 x_1 和 x_2 的元素数量可以不同,但它们的嵌入维度必须匹配。如果我们设置 x_1 = x_2,那么这相当于自注意力。
三、统一解码器与跨注意力模型的训练
在讨论了多模态设计的两大主要选择后,让我们简要谈谈模型训练中涉及的三个主要组件,它们在下图中有所概述。
多模态LLM的不同组件概览,编号为1-3的组件可以在多模态训练过程中冻结或解冻。与传统文本LLM的开发类似,多模态LLM的训练也分为两个阶段:预训练 和 指令微调。然而,与从零开始训练不同,多模态LLM通常以一个预训练且已进行指令微调的文本LLM作为基础模型开始训练。
对于图像编码器,通常使用 CLIP,并在整个训练过程中保持不变,尽管也有例外。
在预训练阶段,通常将LLM部分冻结,只训练投影器(通常是一个线性层或一个小型多层感知机,MLP)。由于投影器的学习能力有限(通常仅包含一到两层),LLM通常会在多模态指令微调阶段(阶段2)解冻,以实现更全面的更新。但在基于跨注意力的模型(方法B)中,跨注意力层在整个训练过程中都是解冻的。
在介绍了两种主要方法(方法A:统一嵌入解码架构和方法B:跨模态注意力架构)后,可能会问哪种方法更有效。答案取决于具体的权衡。
- 统一嵌入解码架构(方法A)通常更容易实现,因为它不需要对LLM架构本身进行修改。
- 跨模态注意力架构(方法B)通常被认为在计算效率上更优,因为它不会通过额外的图像标记超载输入上下文,而是将它们稍后引入跨注意力层。
此外,如果在训练期间冻结LLM参数,该方法还能保持原始文本LLM的性能。
四、最新的多模态模型与方法
在本文的剩余部分,将回顾关于多模态LLM的文献。这并非多模态LLM的历史性概览或全面综述。以下是这些论文的详细内容:
4.1 The Llama 3 Herd of Models
Meta AI 在 2024 年 7 月 31 日发布了 Llama 3 Herd of Models 论文,这标志着 Llama 3 系列多模态模型的推出。虽然在论文发布时未正式发布模型,但 Llama 3.2 系列模型于 9 月 25 日正式宣布并开放使用。
Llama 3.2 系列包括 110 亿和 900 亿参数版本,采用此前描述的 基于跨注意力的方法(方法B),具体结构如下图所示。
Llama 3.2 多模态模型架构(图注来自 Llama 3 论文:https://arxiv.org/abs/2407.21783)。
不同于多模态LLM开发中通常冻结图像编码器的做法,Llama 3.2 研究团队反其道而行之,他们选择更新图像编码器的参数,而保持语言模型的参数不变。这是为了保留文本模型的能力,使得 110 亿和 900 亿参数的多模态模型可以直接替代文本模型 Llama 3.1 8B 和 70B,用于纯文本任务。训练过程:
- 训练从 Llama 3.1 文本模型开始,添加图像编码器和投影器(在此称为“适配器”)后,先在图像-文本数据上进行预训练。
- 接着,进行类似 Llama 3 仅文本模型的指令和偏好微调。
研究团队选择不使用预训练的图像编码器(如 CLIP),而是从零开始训练一个视觉Transformer。具体来说,他们采用经典 ViT 架构中的 ViT-H/14(包含 6.3 亿参数),并在 25 亿图像-文本对数据集上进行了五轮训练,然后将其连接到 LLM。
此外,由于跨注意力层引入了大量参数,这些层只添加到每四个 Transformer 块中:
- 对于 8B 模型,增加了 30 亿参数。
- 对于 70B 模型,增加了 200 亿参数。
4.2 Molmo 和 PixMo:开源权重与数据的多模态模型
2024 年 9 月 25 日,Molmo 和 PixMo 论文提出了一种开源模式,承诺开放模型权重、数据集以及源码。Molmo(Multimodal Open Language Model)是模型名称,而 PixMo(Pixels for Molmo)是数据集的名称。
Molmo 解码器仅方法(方法A)架构(图注来自论文:https://arxiv.org/abs/2409.17146)。
Molmo 使用现成的 CLIP 作为图像编码器,并通过“连接器”(即“投影器”)对齐图像特征和语言模型。训练策略:
- 采用简化的训练流程,避免多个预训练阶段。
- 统一更新基础LLM、连接器和图像编码器的参数。
Molmo 提供多种基础LLM选项:
- OLMo-7B-1024(完全开源的模型骨干);
- OLMoE-1B-7B(专家混合架构,最为高效);
- Qwen2 7B(性能优于 OLMo-7B-1024 的开源权重模型);
- Qwen2 72B(最佳性能的开源权重模型)。
4.3 NVLM:开放的前沿级多模态LLM
NVIDIA 于 2024 年 9 月 17 日发布了 NVLM: Open Frontier-Class Multimodal LLMs 论文,该研究探讨了三种方法:
- 方法A:统一嵌入解码架构(NVLM-D);
- 方法B:跨模态注意力架构(NVLM-X);
- 混合方法:NVLM-H,将两种方法的优势结合。
NVLM 的三种多模态方法概览(图注来自论文:https://arxiv.org/abs/2409.11402)。
如下图所总结,NVLM-D 对应方法 A,NVLM-X 对应方法 B(如前文所述)。混合模型(NVLM-H)的概念是结合两种方法的优势:输入一张图像缩略图后,通过跨注意力机制动态引入若干图像块,以捕捉更精细的高分辨率细节。
简而言之,研究团队发现以下结论:
- NVLM-X 在处理高分辨率图像时展现出优越的计算效率。
- NVLM-D 在与 OCR 相关的任务中达到了更高的准确性。
- NVLM-H 结合了两种方法的优势。
与 Molmo 及其他类似方法一样,他们以仅文本的大语言模型(LLM)为基础模型,而不是从零开始预训练多模态模型(这种方式通常效果更好)。此外,他们使用的是经过指令微调的 LLM,而不是基础模型。具体来说,其核心 LLM 是 Qwen2-72B-Instruct(据我所知,Molmo 使用的是 Qwen2-72B 的基础版本)。
在 NVLM-D 方法中,他们训练了所有的 LLM 参数;但对于 NVLM-X 方法,他们发现冻结原始 LLM 的参数,仅在预训练和指令微调阶段训练跨注意力层效果良好。
对于图像编码器,他们没有使用常见的 CLIP 模型,而是使用 InternViT-6B,并在所有阶段保持其参数冻结。
此外,投影器(projector)使用的是一个多层感知机(MLP),而非单一线性层。
4.4 Qwen2-VL:提升视觉-语言模型的感知能力
前面提到的两篇论文和模型(Molmo 和 NVLM)都基于 Qwen2-72B LLM。而在这篇论文中,Qwen 研究团队正式发布了一种多模态 LLM Qwen2-VL,全称为 Enhancing Vision-Language Model’s Perception of the World at Any Resolution(提升视觉-语言模型对任意分辨率图像的感知能力),发布时间为 2024 年 10 月 3 日。
这项工作的核心在于其所谓的“Naive Dynamic Resolution”(朴素动态分辨率)机制。这种机制允许模型处理不同分辨率的图像,而无需简单的降采样,从而能够输入原始分辨率的图像。
Qwen 多模态模型概览:Qwen2-VL 模型能够原生地处理各种不同分辨率的输入图像。(图注来自 Qwen2-VL 论文:https://arxiv.org/abs/2409.12191)。
这种原生分辨率输入通过对 ViT(视觉 Transformer)进行修改实现,具体方法是移除原有的绝对位置嵌入(absolute position embeddings),并引入 2D-RoPE(二维旋转位置嵌入)。
研究团队使用了一个经典的视觉编码器,其参数量为 6.75 亿,并结合了不同大小的 LLM 骨干模型,具体如表所示。
模型的训练分为以下三个阶段:
1. 预训练阶段:仅训练图像编码器。
2. 全参数解冻阶段:解冻所有参数(包括 LLM),统一预训练。
3. 指令微调阶段:冻结图像编码器,仅微调 LLM。
4.5 Pixtral 12B
Pixtral 12B(2024 年 9 月 17 日发布)是 Mistral AI 推出的首个多模态模型,采用了 方法 A:统一嵌入解码架构。遗憾的是,目前尚未提供技术论文或报告,但 Mistral 团队在博客文章中分享了一些有趣的细节。
一个引人注目的决定是,他们没有使用预训练的图像编码器,而是从零开始训练了一个具有 4 亿参数的图像编码器。对于 LLM 的主干模型,他们选择了 12 亿参数的 Mistral NeMo 模型。
与 Qwen2-VL 类似,Pixtral 也原生支持可变图像大小,如下图所示。
通过这种设计,Pixtral 展现了其在多模态输入处理上的灵活性,无需依赖固定分辨率或降采样。此特点使其在处理多样化的图像输入任务时具备显著优势。
Pixtral 支持不同图像尺寸的处理(图注来自 Pixtral 博客文章:https://mistral.ai/news/pixtral-12b/)。
4.6 MM1.5:多模态 LLM 微调方法、分析与洞见
MM1.5: Methods, Analysis & Insights from Multimodal LLM Fine-tuning 论文(2024 年 9 月 30 日发布)提供了一些实用的微调技巧,并介绍了一种多模态的专家混合模型(Mixture-of-Experts,MoE)以及类似于 Molmo 的稠密模型。这些模型的参数规模从 10 亿到 300 亿不等,覆盖了多种大小的模型需求。
该论文中的模型重点采用了 方法 A:统一嵌入 Transformer 架构,这一架构能够有效地结构化输入,优化多模态学习的表现。
此外,论文还进行了多项有趣的消融研究,探讨了以下内容:
- 数据混合方式:不同数据类型的组合对模型性能的影响;
- 坐标标记(coordinate tokens)的作用:在多模态模型中用于表示输入边界框等信息,研究其对学习能力和推理结果的影响。
这些研究不仅为多模态 LLM 的设计提供了理论支持,还为模型开发者在微调过程中提供了实践指导。
MM1.5 方法示意图MM1.5 方法中引入了额外的 坐标标记(coordinate tokens),用于表示输入图像中边界框的位置信息。(图注来自 MM1.5 论文:https://arxiv.org/abs/2409.20566。)
4.7 Aria: 开放的多模态原生专家混合模型
Aria: An Open Multimodal Native Mixture-of-Experts Model 论文(2024 年 10 月 8 日发布)提出了一种专家混合模型(Mixture-of-Experts, MoE)的方法,与 Molmo 和 MM1.5 系列中的变体类似。
Aria 模型的参数构成:
• 模型总参数量:24.9 亿。
• 分配给每个文本标记的参数:3.5 亿。
• 图像编码器(SigLIP)的参数量:438 万。
模型架构
Aria 基于 跨模态注意力方法(Cross-Attention Approach),并采用以下整体训练流程:
1. 完全从零开始训练 LLM 骨干网络:与其他通常以预训练文本模型为基础的方法不同,Aria 从头开始构建 LLM。
2. 预训练 LLM 骨干网络和视觉编码器:在早期阶段同时对语言和图像处理能力进行优化。
设计特点
Aria 模型充分利用跨模态注意力机制,能够有效整合文本和图像信息。其训练流程强调从零开始构建,表明研究团队试图通过精细控制训练过程来进一步优化模型性能。这种方法与其他基于预训练模型的方法形成了鲜明对比,为多模态 LLM 的研究提供了另一种思路。
4.8 Baichuan-Omni
Baichuan-Omni 技术报告(2024 年 10 月 11 日发布)介绍了 Baichuan-Omni 模型,这是一种具有 70 亿参数的多模态 LLM,基于 方法 A:统一嵌入解码架构,如图所示。
Baichuan-Omni 能够处理多种输入模态。(图注来自 Baichuan-Omni 论文:https://arxiv.org/abs/2410.08565)
Baichuan-Omni 的训练采用三阶段方法:
1. 投影器训练(Projector training):
• 初始阶段,仅训练投影器模块,同时冻结视觉编码器和语言模型(LLM)。
2. 视觉编码器训练(Vision encoder training):
• 解冻视觉编码器并进行训练,而 LLM 仍然保持冻结状态。
3. 全模型训练(Full model training):
• 最后阶段,解冻 LLM,允许整个模型进行端到端训练。
模型特点:
• 使用 SigLIP 视觉编码器。
• 集成了 AnyRes 模块,通过下采样技术处理高分辨率图像。
• 虽然报告未明确说明 LLM 的骨干网络,但根据模型参数规模和命名规则,推测其基于 Baichuan 7B LLM。
Baichuan-Omni 的模块化训练流程以及对高分辨率图像的支持,使其在多模态任务中具有较强的适应性和灵活性。
4.9 Emu3: Next-Token Prediction is All You Need
Emu3: Next-Token Prediction is All You Need 论文(2024 年 9 月 27 日发布)提出了一种替代扩散模型的全新图像生成方法,完全基于 Transformer 解码器架构。尽管从经典意义上说,Emu3 并非严格意义上的多模态 LLM(即更关注图像生成而非图像理解),但其研究非常有趣,展示了使用 Transformer 解码器完成图像生成的可能性,而这一任务传统上由扩散模型主导。(值得注意的是,此前也有类似的尝试,例如 Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation。)
模型特点:Emu3 专注于基于 Transformer 解码器的图像生成架构,展现了 Transformer 在扩散模型主导任务中的潜在优势。这种方法为图像生成任务开辟了新的路径,挑战了传统方法的主导地位。
Emu3 主要是一种用于图像生成的大语言模型(LLM),是扩散模型的替代方案。(来自 Emu3 论文的注释图:https://arxiv.org/abs/2409.18869)。
研究人员从零开始训练了 Emu3 模型,并通过直接偏好优化(Direct Preference Optimization,DPO)将模型调整到符合人类偏好的方向。
该模型的架构包含一个受 SBER-MoVQGAN 启发的视觉分词器,核心的大语言模型架构基于 Llama 2,但完全从头开始训练。
4.10 Janus:解耦视觉编码实现统一的多模态理解与生成
此前我们主要关注用于图像理解的多模态大语言模型,并以 Emu3 为例介绍了一个图像生成的模型。现在,《Janus:解耦视觉编码实现统一的多模态理解与生成》(2024年10月17日发表)引入了一个框架,在单一的大语言模型骨干中统一多模态理解和生成任务。
Janus 的一个关键特性是解耦视觉编码路径,以满足理解任务和生成任务的不同需求。研究人员指出,图像理解任务需要高维语义表示,而图像生成任务则需要图像的详细局部信息和全局一致性。通过分离这些路径,Janus 能够有效管理两者的差异化需求。
该模型采用 SigLIP 视觉编码器(类似于 Baichuan-Omni 中的编码器)处理视觉输入。在图像生成中,模型使用矢量量化(Vector Quantized,VQ)分词器完成生成过程。Janus 的基础大语言模型是 DeepSeek-LLM,拥有13亿参数。
Janus 的统一解码器架构概览(来自 Janus 论文的注释图:https://arxiv.org/abs/2410.13848)
Janus 模型的训练过程分为三个阶段,如下图所示。
Janus 模型的三阶段训练过程示意图(来自 Janus 论文的注释图:https://arxiv.org/abs/2410.13848)。
- 第一阶段:仅训练投影层和图像输出层,而 LLM、理解编码器和生成编码器保持冻结状态。
- 第二阶段:解冻 LLM 主干和文本输出层,允许在理解和生成任务上进行统一的预训练。
- 第三阶段:解冻整个模型,包括 SigLIP 图像编码器,进行监督微调,使模型能够充分整合和优化其多模态能力。
总结
在公共基准上比较大语言模型(LLM)和多模态大语言模型的性能是一项具有挑战性的任务,因为普遍存在的数据污染问题,这意味着测试数据可能已包含在训练数据中。
此外,不同模型的架构组件差异巨大,因此进行公平的性能比较非常困难。不过,特别值得称赞的是 NVIDIA 团队开发了不同版本的 NVLM 模型,这至少使得解码器架构和交叉注意力方法之间的比较成为可能。
无论如何,这篇文章的主要结论是:多模态大语言模型可以通过多种不同的方式成功构建。 下图总结了本文涉及的不同模型、其子组件以及训练方法的概览。
本文转载自芝士AI吃鱼,作者: 芝士AI吃鱼