8.1 Understanding Multimodal LLMs

这篇文章深入探讨了多模态大语言模型(LLMs)的最新进展和技术,尤其是不同的架构和训练方法。这为投资者提供了对AI领域新兴技术的全面理解,尤其是在多模态处理能力日益重要的背景下。作为风险投资人,我看到这些技术在各个行业的潜在应用,尤其是在图像识别、自然语言处理和信息提取等领域,这些都可能成为未来投资的热点。

ONE SENTENCE SUMMARY:

本文介绍了多模态大语言模型的主要技术、最新模型及其应用,包括统一嵌入解码器架构和交叉注意力架构。

MAIN POINTS:

TAKEAWAYS:

这两个月真是充满了惊喜。AI研究领域再次取得了许多进展,其中有两个诺贝尔奖颁发给了AI领域,还有几篇有趣的研究论文发表。

其中,Meta AI发布了他们最新的Llama 3.2模型,包括1B和3B大语言模型的开放权重版本以及两个多模态模型。

在本文中,我将解释多模态LLM的工作原理。此外,我还将回顾和总结最近几周发表的大约十几篇其他多模态论文和模型(包括Llama 3.2),以比较它们的方法。

(要查看目录菜单,请点击左侧的线条堆叠图标。)

一个多模态LLM的示意图,可以接受不同的输入模态(音频、文本、图像和视频),并返回文本作为输出模态。

但在我们开始之前,我还有一些个人的好消息要分享!我的书, 《从零开始构建大语言模型》 ,现在终于在 亚马逊上架 了!

《从零开始构建大语言模型》现已在亚马逊上架

写这本书是一个巨大的努力,我非常感谢过去两年中所有的支持和激励反馈——尤其是在过去几个月中,许多热心读者分享了他们的反馈。谢谢大家,作为一名作者,没有什么比听到这本书对你们的职业生涯产生影响更令人振奋的了!

对于那些已经读完这本书并渴望更多内容的读者,请继续关注!我将在未来几个月内在GitHub仓库中添加一些额外内容。

附言:如果您已经读过这本书,我将非常感激您能留下 简短的评论 ;这对我们作者真的很有帮助!

1. 多模态LLM的应用场景

什么是多模态LLM?正如在介绍中所提到的,多模态LLM是能够处理多种类型输入的大语言模型,其中每种“模态”指的是一种特定类型的数据——例如文本(如传统LLM中)、声音、图像、视频等。为了简单起见,我们将主要关注图像模态和文本输入。

多模态LLM的一个经典且直观的应用是图像描述:您提供一个输入图像,模型生成该图像的描述,如下图所示。

多模态大型语言模型(LLM)解释一个表情包的示例。

当然,还有许多其他的应用场景。例如,我最喜欢的一个是从PDF表格中提取信息并将其转换为LaTeX或Markdown格式。

2. 构建多模态LLM的常见方法

构建多模态LLM主要有两种方法:

(顺便说一句,我认为这些技术的官方术语可能还不存在,但如果你遇到过,请告诉我。例如,简短的描述可能是“仅解码器”和“基于跨注意力”的方法。)

开发多模态LLM架构的两种主要方法。

如上图所示, 统一嵌入解码器架构 使用单一解码器模型,类似于未修改的LLM架构,如GPT-2或Llama 3.2。在这种方法中,图像被转换为与原始文本标记相同嵌入大小的标记,允许LLM在连接后同时处理文本和图像输入标记。

跨模态注意力架构 则采用跨注意力机制,直接在注意力层中整合图像和文本嵌入。

在接下来的部分中,我们将从概念层面探讨这些方法的工作原理。然后,我们将查看关于多模态LLM的最新研究论文,了解它们在实践中的应用。

2.1 方法A:统一嵌入解码器架构

让我们从统一嵌入解码器架构开始,下面的图再次展示了这一架构。

统一嵌入解码器架构的示意图,这是一种未修改的解码器风格的LLM(如GPT-2、Phi-3、Gemma或Llama 3.2),其接收的输入由图像令牌和文本令牌嵌入组成。

在统一嵌入解码器架构中,图像被转换为嵌入向量,类似于标准文本LLM中输入文本被转换为嵌入的方式。

对于处理文本的典型文本LLM,文本输入通常会被标记化(例如,使用字节对编码)然后通过嵌入层,如下图所示。

文本标记化和转换为令牌嵌入向量的标准过程示意图,这些向量随后在训练和推理过程中传递给LLM。

2.1.1 理解图像编码器

类似于文本的标记化和嵌入,图像嵌入是通过图像编码器模块(而不是标记器)生成的,如下图所示。

图示为将图像编码为图像块嵌入的过程。

上图中的图像编码器内部发生了什么?为了处理图像,我们首先将其分割成更小的块,就像在分词时将单词分成子词一样。这些块随后由一个预训练的视觉Transformer(ViT)进行编码,如下图所示。

经典视觉Transformer(ViT)设置的图示,类似于《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (2020)》中提出的模型。

请注意,ViT通常用于分类任务,因此我在上图中包含了分类头。然而,在这种情况下,我们只需要图像编码器部分。

2.1.2 线性投影模块的作用

前图中所示的“线性投影”由一个线性层(即全连接层)组成。该层的目的是将图像块(已展平为向量)投影到与Transformer编码器兼容的嵌入尺寸中。此线性投影在下图中有所说明。一个图像块,展平为256维向量,被上投影为768维向量。

线性投影层的示意图,该层将展平的图像块从256维投影到768维的嵌入空间。

对于那些喜欢看代码示例的人来说,我们可以用PyTorch代码实现图像块的线性投影,如下所示:

import torchclass 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)  # 展平每个图像块        x = self.projection(x)  # 投影每个展平的图像块        return x# 示例用法:batch_size = 1num_patches = 9  # 每张图像的总块数patch_size = 16  # 每个块16x16像素num_channels = 3  # RGB图像embedding_dim = 768  # 嵌入向量的大小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)# 输出# torch.Size([1, 9, 768])

如果你碰巧读过我的 《机器学习问答与AI》 一书,你可能知道有一些方法可以用卷积操作替换线性层,并且可以实现数学上的等价。在这里,这尤其方便,因为我们可以将图像块的创建和投影合并成两行代码:

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)# 输出# torch.Size([1, 9, 768])

2.1.3 图像与文本的标记化

现在我们简要讨论了图像编码器的目的(以及编码器的一部分线性投影),让我们回到之前的文本标记化类比,并并排查看文本和图像的标记化和嵌入,如下图所示。

图像标记化和嵌入(左)与文本标记化和嵌入(右)并排展示。

如上图所示,我在图像编码器后面加入了一个额外的 投影器 模块。这个 投影器 通常只是另一个 线性投影 层,类似于前面解释的那个。其目的是将图像编码器的输出投影到与嵌入的文本标记相匹配的维度,如下图所示。(正如我们稍后将看到的,这个投影器有时也被称为适配器、适配器或连接器。)

图像标记化与文本标记化的并排比较,其中投影器的作用是匹配文本标记的嵌入维度。

现在图像块嵌入与文本标记嵌入具有相同的嵌入维度,我们可以简单地将它们作为输入连接到大型语言模型(LLM),如本节开头的图所示。下面是同一张图,方便参考。

在将图像块标记投影到与文本标记嵌入相同的维度后,我们可以简单地将它们作为输入连接到标准的LLM。

顺便提一下,我们在本节讨论的图像编码器通常是一个预训练的视觉变换器。一个流行的选择是 CLIP OpenCLIP

然而,也有一些方法A的版本直接在图像块上操作,例如 Fuyu ,如下图所示。

Fuyu多模态LLM的注释图,直接在图像块上操作,无需图像编码器。(注释图来自https://www.adept.ai/blog/fuyu-8b。)

如上图所示,Fuyu直接将输入图像块传递到线性投影(或嵌入层),以学习其自身的图像块嵌入,而不是像其他模型和方法那样依赖于额外的预训练图像编码器。这大大简化了架构和训练设置。

2.2 方法B:跨模态注意力架构

现在我们已经讨论了构建多模态LLM的统一嵌入解码器架构方法,并了解了图像编码背后的基本概念,让我们来谈谈通过跨注意力实现多模态LLM的另一种方法,如下图所示。

跨模态注意力架构方法构建多模态LLM的示意图。

在上图所示的跨模态注意力架构方法中,我们仍然使用之前讨论的相同图像编码器设置。然而,不同的是,我们通过跨注意力机制在多头注意力层中连接输入图像块,而不是将图像块编码为LLM的输入。

这个想法与2017年《Attention Is All You Need》论文中的原始Transformer架构有关,如下图所示。

原始Transformer架构中使用的交叉注意力机制的高级示意图。(图注来自“Attention Is All You Need”论文:https://arxiv.org/abs/1706.03762。)

请注意,上图所示的原始“Attention Is All You Need”Transformer最初是为语言翻译而开发的。因此,它由一个文本 编码器 (图的左侧)组成,该编码器接收要翻译的句子,并通过一个文本 解码器 (图的右侧)生成翻译。在多模态LLM的背景下,编码器是一个图像编码器而不是文本编码器,但相同的理念适用。

交叉注意力是如何工作的呢?让我们看看常规自注意力机制内部发生的概念图。

常规自注意力机制的轮廓。(此流程图描绘了常规多头注意力模块中的一个头。)

在上图中,x是输入, W q 是用于生成查询( Q )的权重矩阵。类似地, K 代表键, V 代表值。A表示注意力分数矩阵, Z 是输入(x)转换为输出上下文向量。(如果这看起来令人困惑,您可能会发现我在 《从零开始构建大型语言模型》 一书的第三章中提供的全面介绍很有帮助;或者,您也可以参考我的文章 《理解和编码自注意力、多头注意力、交叉注意力和因果注意力在LLM中的应用》 。)

在交叉注意力中,与自注意力相反,我们有两个不同的输入源,如下图所示。

交叉注意力的示意图,其中可以有两个不同的输入 x 1 和 x 2

如前两幅图所示,在自注意力中,我们处理的是相同的输入序列。在交叉注意力中,我们混合或结合了两个不同的输入序列。

Attention Is All You Need 论文中提出的原始Transformer架构中,两个输入 x 1 x 2 分别对应于左侧编码器模块返回的序列( x 2 )和右侧解码器部分正在处理的输入序列( x 1 )。在多模态LLM的上下文中, x 2 是图像编码器的输出。(注意,查询通常来自解码器,而键和值通常来自编码器。)

注意,在交叉注意力中,两个输入序列 x 1 x 2 可以有不同数量的元素。然而,它们的嵌入维度必须匹配。如果我们设置 x 1 = x 2 ,这就等同于自注意力。

3. 统一解码器和交叉注意力模型训练

现在我们已经讨论了一些主要的多模态设计选择,让我们简要谈谈在模型训练过程中如何处理三个主要组件,这些组件在下图中进行了总结。

多模态LLM中不同组件的概述。编号为1-3的组件可以在多模态训练过程中被冻结或解冻。

与传统的仅文本LLM的开发类似,多模态LLM的训练也涉及两个阶段:预训练和指令微调。然而,与从头开始不同,多模态LLM训练通常以一个预训练的、指令微调的仅文本LLM作为基础模型。

对于图像编码器,通常使用CLIP,并且在整个训练过程中保持不变,尽管有例外情况,我们将在后面探讨。在预训练阶段,通常也保持LLM部分冻结,仅专注于训练投影器——一个线性层或一个小型多层感知器。由于投影器的学习能力有限,通常只有一到两层,在多模态指令微调(阶段2)中,LLM通常会被解冻以允许更全面的更新。然而,请注意,在基于交叉注意力的模型(方法B)中,交叉注意力层在整个训练过程中都是解冻的。

在介绍了两种主要方法(方法A:统一嵌入解码器架构和方法B:跨模态注意力架构)之后,您可能会想知道哪种方法更有效。答案取决于具体的权衡。

统一嵌入解码器架构(方法A)通常更容易实现,因为它不需要对LLM架构本身进行任何修改。

跨模态注意力架构(方法B)通常被认为在计算上更高效,因为它不会通过额外的图像标记过载输入上下文,而是在交叉注意力层中引入它们。此外,如果在训练过程中保持LLM参数冻结,这种方法可以保持原始LLM的仅文本性能。

我们将在后面的章节中讨论NVIDIA的NVLM论文时,重新审视关于建模性能和响应质量的讨论。

这标志着对多模态LLM的介绍的结束。写到这里,我意识到讨论比最初计划的要长,这可能是结束文章的一个好地方。

然而,为了提供一个实用的视角,研究一些最近实施这些方法的研究论文会很有帮助。因此,我们将在本文的剩余部分探讨这些论文。

4. 最近的多模态模型和方法

在本文的剩余部分,我将回顾最近关于多模态大型语言模型(LLM)的文献,特别关注最近几周发表的作品,以保持合理的范围。

因此,这不是多模态LLM的历史概述或全面回顾,而是对最新发展的简要观察。我也会尽量保持这些总结简短且不啰嗦,因为有10篇论文要介绍。

本文结尾的结论部分有一个比较这些论文中使用的方法的概述。

4.1 Llama 3 模型群

Llama 3 模型群 论文(2024年7月31日)由Meta AI在今年夏初发布,在LLM领域中,这似乎已经是很久以前的事了。然而,考虑到他们仅仅描述了而没有立即发布他们的多模态模型,直到更晚才发布,我认为将Llama 3列入此名单是公平的。(Llama 3.2模型在9月25日正式宣布并提供使用。)

多模态Llama 3.2模型有110亿和900亿参数版本,是图像-文本模型,使用之前描述的基于交叉注意力的方法,如下图所示。

Llama 3.2使用的多模态LLM方法的插图。(来自Llama 3论文的注释图:https://arxiv.org/abs/2407.21783。视频和语音部分被视觉遮挡以集中注意力于图像部分。)

请注意,虽然图中也描绘了视频和语音作为可能的模态,但截至本文撰写时发布的模型仅专注于图像和文本。

Llama 3.2使用基于交叉注意力的方法。然而,它与我之前提到的有些不同,通常在多模态LLM开发中,我们会冻结图像编码器并仅在预训练期间更新LLM参数。

在这里,研究人员几乎采取了相反的方法:他们更新了图像编码器,但不更新语言模型的参数。他们写道,这是有意为之,以保留文本能力,使得11B和90B多模态模型可以作为Llama 3.1 8B和70B文本模型在文本任务中的替代品。

训练本身是在多个迭代中进行的,从Llama 3.1文本模型开始。在添加图像编码器和投影(这里称为“适配器”)层后,他们在图像-文本数据上预训练模型。然后,类似于Llama 3模型的文本训练(我在 早期文章 中写过),他们接着进行指令和偏好微调。

研究人员没有采用像CLIP这样的预训练模型作为图像编码器,而是使用了他们从头开始预训练的视觉变换器。具体来说,他们采用了经典视觉变换器架构的ViT-H/14变体(6.3亿参数)( Dosovitskiy等,2020 )。然后,他们在一个包含25亿图像-文本对的数据集上对ViT进行了五个周期的预训练;这是在将图像编码器连接到LLM之前完成的。(图像编码器接收224×224分辨率的图像,并将其划分为14×14的补丁网格,每个补丁大小为16×16像素。)

由于交叉注意力层增加了大量参数,因此它们仅在每第四个变换器块中添加。(对于8B模型,这增加了30亿参数,对于70B模型,这增加了200亿参数。)

4.2 Molmo和PixMo:开放权重和开放数据的最先进多模态模型

Molmo和PixMo:开放权重和开放数据的最先进多模态模型 论文(2024年9月25日)值得注意,因为它承诺不仅开源模型权重,还开源数据集和源代码,类似于仅限语言的OLMo LLM。(这对LLM研究非常有利,因为它允许我们查看确切的训练过程和代码,还可以让我们在相同的数据集上进行消融研究和重现结果。)

如果你想知道为什么论文标题中有两个名字,Molmo指的是模型(多模态开放语言模型),而PixMo(Pixels for Molmo)是数据集。

Molmo解码器仅方法(方法B)的示意图。图中标注的内容改编自Molmo和PixMo:用于最先进多模态模型的开放权重和开放数据论文:https://www.arxiv.org/abs/2409.17146。

如上图所示,图像编码器采用了现成的视觉变换器,特别是CLIP。这里的“连接器”指的是一个“投影器”,用于将图像特征与语言模型对齐。

Molmo通过避免多个预训练阶段来简化训练过程,而是选择一个简单的管道,以统一的方法更新所有参数——包括基础LLM、连接器和图像编码器的参数。

Molmo团队为基础LLM提供了几种选择:

4.3 NVLM:开放的前沿级多模态LLM

NVIDIA的 NVLM:开放的前沿级多模态LLM 论文(2024年9月17日)特别有趣,因为它不仅专注于一种方法,还探索了两种方法:

此外,他们开发了一种混合方法(NVLM-H),并提供了三种方法的对比分析。

三种多模态方法的概述。(图中标注的内容来自NVLM:开放的前沿级多模态LLM论文:https://arxiv.org/abs/2409.11402)

如下面的图中总结所示,NVLM-D对应于方法A,而NVLM-X对应于之前讨论的方法B。混合模型(NVLM-H)的概念是结合两种方法的优势:输入一个图像缩略图,然后通过交叉注意力传递动态数量的图像块,以捕捉更精细的高分辨率细节。

简而言之,研究团队发现:

与Molmo和其他方法类似,他们从一个仅文本的LLM开始,而不是从头开始预训练一个多模态模型(因为这通常表现更好)。此外,他们使用了一个经过指令调优的LLM,而不是基础LLM。具体来说,骨干LLM是Qwen2-72B-Instruct(据我所知,Molmo使用的是Qwen2-72B基础模型)。

在NVLM-D方法中训练所有LLM参数时,他们发现对于NVLM-X,冻结原始LLM参数并仅在预训练和指令微调期间训练交叉注意力层效果很好。

对于图像编码器,他们没有使用典型的CLIP模型,而是使用 InternViT-6B ,并在所有阶段保持冻结。

投影器是一个多层感知器,而不是单一的线性层。

4.4 Qwen2-VL:增强视觉语言模型对任何分辨率世界的感知

html

前两篇论文和模型,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”机制(“naive”一词是故意使用的,并不是“native”的拼写错误,尽管“native”也很合适)。这种机制允许模型处理不同分辨率的图像,而不是简单的降采样,从而能够输入原始分辨率的图像。

多模态 Qwen 模型的概述,可以原生处理不同分辨率的输入图像。(来自 Qwen2-VL 论文的注释图:https://arxiv.org/abs/2409.12191)

原生分辨率输入是通过修改的 ViT 实现的,方法是去除原始的绝对位置嵌入并引入 2D-RoPE。

他们使用了一个具有 6.75 亿参数的经典视觉编码器和不同大小的 LLM 主干,如下表所示。

不同 Qwen2-VL 模型的组件。(来自 Qwen2-VL 论文的注释图:https://arxiv.org/abs/2409.12191)

训练本身分为三个阶段:(1)仅预训练图像编码器,(2)解冻所有参数(包括 LLM),(3)冻结图像编码器,仅对 LLM 进行指令微调。

4.5 Pixtral 12B

Pixtral 12B (2024年9月17日),采用方法 A:统一嵌入解码器架构,是 Mistral AI 的第一个多模态模型。不幸的是,没有可用的技术论文或报告,但 Mistral 团队在他们的 博客文章 中分享了一些有趣的细节。

有趣的是,他们选择不使用预训练的图像编码器,而是从头开始训练一个具有 4 亿参数的编码器。对于 LLM 主干,他们使用了 120 亿参数的 Mistral NeMo 模型。

与 Qwen2-VL 类似,Pixtral 也原生支持可变图像大小,如下图所示。

Pixtral如何处理不同尺寸图像的示意图。(图注来自Pixtral博客文章:https://mistral.ai/news/pixtral-12b/)

4.6 MM1.5:多模态LLM微调的方法、分析与见解

MM1.5:多模态LLM微调的方法、分析与见解 论文(2024年9月30日)提供了实用的技巧,并介绍了一种专家混合多模态模型以及类似于Molmo的密集模型。这些模型的规模从10亿到300亿参数不等。

论文中描述的模型专注于方法A,即统一嵌入变压器架构,该架构有效地组织输入以进行多模态学习。

此外,论文还进行了一系列有趣的消融研究,探讨了数据混合和使用坐标标记的效果。

MM1.5方法的示意图,其中包括用于表示边界框的附加坐标标记。(图注来自MM1.5论文:https://arxiv.org/abs/2409.20566。)

4.7 Aria:一种开放的多模态本地专家混合模型

Aria:一种开放的多模态本地专家混合模型 论文(2024年10月8日)介绍了另一种专家混合模型方法,类似于Molmo和MM1.5系列中的一种变体。

Aria模型拥有249亿参数,其中每个文本标记分配了35亿参数。图像编码器( SigLIP )拥有4.38亿参数。

该模型基于交叉注意力方法,整体训练过程如下:

  1. 从头开始训练LLM骨干。

  2. 同时预训练LLM骨干和视觉编码器。

4.8 Baichuan-Omni

Baichuan-Omni技术报告 (2024年10月11日)介绍了Baichuan-Omni,这是一种基于方法A的7亿参数多模态LLM:统一嵌入解码器架构方法,如下图所示。

Baichuan-Omni模型概览,该模型可以处理多种输入模态。(图注来自Baichuan-Omni论文:https://arxiv.org/abs/2410.08565)

Baichuan-Omni的训练过程分为三个阶段:

  1. 投影器训练 :最初,仅训练投影器,而视觉编码器和语言模型(LLM)保持冻结状态。

  2. 视觉编码器训练 :接下来,解冻并训练视觉编码器,而LLM仍然冻结。

  3. 全模型训练 :最后,解冻LLM,使整个模型可以端到端地进行训练。

该模型使用SigLIP视觉编码器,并结合 AnyRes 模块,通过下采样技术处理高分辨率图像。

虽然报告中没有明确说明LLM的基础结构,但根据模型的参数规模和命名惯例,很可能基于Baichuan 7B LLM。

4.9 Emu3:下一代预测是你所需的一切

Emu3:下一代预测是你所需的一切 论文(2024年9月27日)提出了一种基于transformer解码器架构的图像生成替代方案,具有吸引力。虽然它不是经典意义上的多模态LLM(即,专注于图像理解而非生成的模型),但Emu3非常有趣,因为它展示了使用transformer解码器进行图像生成的可能性,而这通常是扩散方法的领域。(然而,注意之前也有类似的方法,例如 自回归模型击败扩散:Llama用于可扩展图像生成 。)

Emu3主要是用于图像生成的LLM,作为扩散模型的替代方案。(图注来自Emu3论文:https://arxiv.org/abs/2409.18869)

研究人员从头开始训练Emu3,然后使用 直接偏好优化 (DPO)来使模型与人类偏好对齐。

其架构包括一个受 SBER-MoVQGAN 启发的视觉分词器。核心LLM架构基于Llama 2,但完全从头开始训练。

4.10 Janus:解耦视觉编码以实现统一的多模态理解和生成

我们之前关注了用于图像理解的多模态LLM,并刚刚看到一个用于图像生成的例子Emu 3。现在, Janus:解耦视觉编码以实现统一的多模态理解和生成 论文(2024年10月17日)介绍了一种在单一LLM骨干中统一多模态理解和生成任务的框架。

Janus的一个关键特性是解耦视觉编码路径,以应对理解和生成任务的不同需求。研究人员认为,图像理解任务需要高维语义表示,而生成任务需要图像中的详细局部信息和全局一致性。通过分离这些路径,Janus有效地管理了这些不同的需求。

该模型采用了与 Baichuan-Omni 类似的 SigLIP 视觉编码器来处理视觉输入。在图像生成方面,它使用 矢量量化(VQ) 分词器来处理生成过程。Janus 的基础大型语言模型(LLM)是 DeepSeek-LLM ,拥有13亿参数。

Janus 中使用的统一解码器框架概览。(图注来自 Janus 论文:https://arxiv.org/abs/2410.13848。)

该模型的训练过程分为三个阶段,如下图所示。

Janus 模型的三阶段训练过程示意图。(图注来自 Janus 论文:https://arxiv.org/abs/2410.13848)

在第一阶段,仅训练投影层和图像输出层,而 LLM、理解和生成编码器保持冻结状态。在第二阶段,LLM 主干和文本输出层解冻,允许在理解和生成任务上进行统一的预训练。最后,在第三阶段,整个模型,包括 SigLIP 图像编码器,全部解冻进行监督微调,使模型能够充分整合和优化其多模态能力。

结论

正如您可能注意到的,我几乎完全跳过了建模和计算性能的比较。首先,由于普遍存在的数据污染问题,比较 LLM 和多模态 LLM 在公共基准测试上的性能是具有挑战性的,这意味着测试数据可能已包含在训练数据中。

此外,架构组件差异很大,难以进行公平的比较。因此,向 NVIDIA 团队致以崇高的敬意,他们开发了不同版本的 NVLM,至少可以在解码器和交叉注意力方法之间进行比较。

无论如何,本文的主要结论是,多模态 LLM 可以通过多种不同的方式成功构建。下面的图总结了本文中涉及的模型的不同组件。

本文涵盖的不同模型概览,包括其子组件和训练方法。

希望您觉得这篇文章具有教育意义,并且现在对多模态大型语言模型(LLM)的工作原理有了更好的理解!

这本杂志是一个个人的热情项目,并不提供直接的报酬。然而,对于那些希望支持我的人,请考虑购买一本我的 《从零开始构建大型语言模型》书籍 。(我相信您会从这本书中获得很多,因为它以其他地方找不到的详细程度解释了LLM的工作原理。)

《从零开始构建大型语言模型》 现已在亚马逊上架

如果您读了这本书并有几分钟的空闲时间,我将非常感激您能在 亚马逊上留下简短的评论 。这对我们作者帮助很大!

文章来源:Understanding Multimodal LLMs

关键问题与行动计划

关键问题 1: 如何评估多模态大语言模型(LLM)的市场潜力和应用场景?

行动计划:

  1. 市场需求分析:研究团队将对当前多模态LLM的应用场景进行深入分析,识别出最具潜力的行业(如医疗、教育、娱乐等),并评估这些行业对多模态技术的需求。
  2. 竞争对手研究:数据团队将收集和分析市场上现有多模态LLM的竞争对手,包括它们的技术架构、市场定位和用户反馈,以识别市场空白和潜在的投资机会。

关键问题 2: 多模态LLM的技术创新如何影响其商业化进程?

行动计划:

  1. 技术趋势跟踪:研究团队将定期跟踪多模态LLM领域的最新技术进展,特别是新模型的发布和技术架构的创新,以评估这些技术对商业化的影响。
  2. 投资回报分析:数据团队将建立模型,分析不同技术路径(如统一嵌入解码器架构与交叉注意力架构)对商业化成功的潜在影响,帮助决策投资方向。

关键问题 3: 如何识别和评估多模态LLM初创公司的投资机会?

行动计划:

  1. 初创公司筛选:研究团队将制定标准,筛选出在多模态LLM领域具有创新技术和市场潜力的初创公司,并进行初步接触和评估。
  2. 投资尽职调查:数据团队将对筛选出的初创公司进行深入的尽职调查,包括财务状况、团队背景、技术能力和市场前景,以确保投资决策的科学性和有效性。

请告诉我们你对此篇总结的改进建议,如存在内容不相关、低质、重复或评分不准确,我们会对其进行分析修正