多模态大语言模型 (MLLM) 是一种深度学习算法,能够理解并生成文本、图像、视频、音频等多种形式的内容。
MLLM 扩展了传统大语言模型 (LLM) 的能力,后者主要专注于处理和生成文本。通过整合多种类型的数据,MLLM 能够支持更复杂、更多样化的应用,这些应用需要综合和理解文本及非文本信息。
这意味着 MLLM 能够解读多种数据领域,包括:
世界是多模态的,人类与数字内容的交互并不局限于文本。
MLLM 能够摄取、理解和生成多种数据类型,使 AI 交互更加自然、高效,从而体现了这种多样性。
MLLM 非常重要,因为它们可帮助 AI 工具弥合人际交互与技术之间的鸿沟。理解和解读不同模态数据的能力,催生了日常生活中更具影响力和吸引力的应用。例如,医疗机构可以利用 MLLM 辅助评估患者的 X 光影像和医疗档案,进而为患者提供个性化治疗建议或确定可能的诊断。
这些模型的价值远远超出医疗保健范畴。MLLM 能够摄取包含图表、图像等多种数据的复杂文档(如 PDF),从而开辟了从教育到企业等各个领域的应用场景。在这些场景中,员工可以利用聊天机器人优化工作流和提升工作效率。
与 LLM 类似,MLLM 也应用自注意力机制(计算注意力分数)来反映输入数据不同部分与其他部分的关联性。在 MLLM 中,自注意力机制使模型能够理解文本中的字符(一种模态)与图像部分(另一种模态)之间的关联。由于自注意力机制无法捕捉序列顺序,因此需要使用位置编码来理解序列中数据 (例如视频数据中的时序序列)的含义。若无此机制,模型将以无序方式解读数据,可能导致数据失去其意义。
由于 MLLM 通常包含参数量达数十亿的大型神经网络,其训练过程可能需要大量的计算资源。为应对这种复杂性,数据和模型并行技术科将计算工作负载分配至不同的 GPU,从而实现高效的训练流程。
由于 MLLM 能够处理多种模态,因此需要一种机制将所有这些模态结合起来。编码器有助于实现这种集成。
对于每种模态,采用特定的编码器将该类型的输入数据 (例如文本、图像、音频)转换为共享高维向量空间的嵌入向量。每种模态的嵌入向量被组合到一个联合嵌入空间中,以便轻松实现不同嵌入向量间的转换。
以音频编码器和图像解码器为例说明 MLLM 场景中的编码和解码过程。最简单的办法是,编码器将截取上下文信息并将输入数据转换为嵌入向量,解码器则获取这些嵌入标准并在目标模态中生成内容。音频编码器将录制语音并将其转换为一组嵌入表征该录音的向量空间的特征向量。图像解码器则从联合嵌入空间中提取特定的图像嵌入向量,并生成期望的输出。
基于大量文本数据训练的 LLM 推动了生成式 AI 工具的第一波浪潮。这使得 LLM 能够有效地生成文章、电子邮件和代码片段,因为它们能够根据先前见过的响应模式来应对新的查询。
如果说 LLM 提供语言和上下文理解能力的“大脑”,那么 MLLM 则超越了典型 LLM 的现状,因为其能够驱动多种数据模态的生成。
从传统 LLM 向更先进的多模态模型的演进,不仅意味着能力的扩展,还涉及底层架构、应用场景、训练和微调方法的变化。
| 大语言模型 | 多模态大语言模型 | |
| 数据处理 | 纯文本数据:通过文本分词器进行编码 | 多模态数据:需为每种模态使用独立的编码器 |
| 模型架构 | 单一 Transformer 架构 | 每种模态使用独立的编码器,后接融合模块,将编码后的表征投影至统一的嵌入空间中 |
| 训练目标 | 语言建模目标,如下一个分词预测 | 通常采用对比学习目标,旨在对齐不同模态的表征 |
| 推理计算复杂度 | 与输入序列长度成二次方关系 | 在纯文本 LLM 复杂度的基础上,还需叠加同时编码多模态输入和解码输出的计算开销 |
| 模态编码器 | 仅处理文本数据,故无需模态编码器 | 将图像、音频等非文本数据转换为反映内容含义的嵌入向量 |
| 输入投影器 | 通常仅处理直接源自文本数据的文本嵌入向量,无需对其他模态对齐 | 将来自各种模态的编码表征与文本数据对齐,形成语言模型能够处理的统一输入 |
| LLM 骨架网络 | 处理文本数据 | 使用预训练知识处理对齐后的多模态输入,以执行推理、理解和内容生成等任务 |
| 输出投影器 | 无需将嵌入向量转换回其他模态 | 将模型的输出嵌入向量映射回目标模态,以生成非文本输出 |
| 模态生成器 | 模型没有模态生成器,因为它们并非设计用于处理非文本输出 | 在各模态中生成输出,通常使用潜扩散模型 (LDM) |
LLM 通常基于单一的 Transformer 架构构建,针对处理序列数据和管理长程文本依赖项进行了优化。这种架构使 LLM 能够熟练理解和生成语言。相比之下,MLLM 采用更为复杂的设计,包括针对每种模态的独立编码器,例如用于文本的 Transformer 和用于图像的卷积神经网络 (CNN)。这些独立的编码器截取并编码每种模态的特定信息。随后,融合模块将这些编码的表征整合到统一的嵌入空间中。该架构使得 MLLM 能够无缝整合来自不同数据类型的特征,促进对多模态输入数据的整体理解。
LLM 和 MLLM 训练过程截然不同。作为传统的基于文本的模型,LLM 使用由书籍、文章和网页组成的大规模数据集进行训练。其目标是教会模型预测序列中的下一个词,使其能够生成连贯且与上下文相关的文本。此过程始于数据采集和预处理,以清理数据并为训练准备好数据。Transformer 因其在处理序列数据和长程依赖项方面的有效性,成为 LLM 的首选架构。
另一方面,MLLM (如 GPT-4V) 旨在从图像和文本等多种数据类型中学习。这种训练更为复杂,因为它涉及关联不同的模态,例如将狗的图片与“狗”这个词关联起来,或为经济图表生成描述性文本。MLLM 的训练过程整合了图像处理的 CNN 和用于文本处理的 Transformer 等技术,确保模型能够有效地处理和整合来自这两种模态的特征。
由于架构差异,训练 LLM 与 MLLM 的计算需求也有所不同。LLM 需要大量 GPU 资源来管理处理数十亿参数和大量数据集所需的大规模并行计算。Transformer 的自注意力机制因其二次方复杂度进一步增加了这些需求。然而,MLLM 的计算需求更高。除了 Transformer 相关的挑战外,它们还需要额外的处理能力来运行用于图像处理的 CNN。不同模态的集成通常涉及交叉注意力技术,这会增加计算负载。因此,训练 MLLM 通常需要更复杂的硬件配置和模型架构创新,以优化效率。
深入探究 MLLM 的复杂性将揭示一系列挑战,从架构的错综复杂到数据管理和计算需求的细微差别。
部分关键挑战包括:
借助 MLLM 处理多种模态的能力,各行各业涌现出令人惊叹的应用。
选择合适的开发框架对于使用 MLLM 至关重要。重要的是选择一个不仅支持与具体项目相关的特定模态,还能与现有技术栈和开发实践良好契合的框架。
NVIDIA NeMo™ 是一个用于开发定制生成式 AI 的端到端平台。NeMo 框架提供了一个综合性库,旨在促进跨各种数据模态的 MLLM 的创建和微调。
MLLM 的效果在很大程度上取决于其训练所用的多模态数据的质量和对齐度。这涉及收集包含对齐的不同模态配对或组合的数据集,例如文本-图像对或带字幕的视频。对此类数据进行适当的预处理和归一化对于确保数据能够有效地用于模型训练至关重要。
利用预训练模型可以显著减少对大量计算资源的需求,并提供一个获得有效结果的捷径。基于特定数据集进行微调后,该模型能够适应应用的具体特性和需求,从而提升其性能和相关性。
模型搭建完成后,使用真实世界的数据和场景进行广泛测试非常重要。此测试阶段对于理解模型的性能表现以及识别其可能需要进一步优化的任何领域至关重要。基于性能反馈进行持续迭代,是开发出能够可靠地满足目标的稳健 MLLM 的关键。
MLLM 的部署涉及将其集成到合适的运行环境中,使其能够接收输入并根据需要生成输出。部署后,持续监控模型的性能并根据需要调整其配置,以保持其有效性和效率,这一点至关重要。