本次分享包括以下几大部分:
1. 多模态大模型的能力与应用场景
2. 多模态大模型架构的演变及其特点
3. 多模态大模型开发套件 PaddleMIX
4. Q&A
分享嘉宾|王冠中 百度在线网络技术(北京)有限公司 资深研发工程师
编辑整理|Edith
内容校对|李瑶
出品社区|DataFun
多模态大模型的能力与应用场景
首先来探讨多模态大模型的能力及应用场景。多模态指的是数据或者信息的多种表示形式。多模态大模型的能力划分为多模态理解和多模态生成。多模态理解能力包含多种基础感知任务实现,包括自然图像摘要问答、公众人物识别等。这些任务构成了多模态领域的基石,并且当前无论是开源模型还是专有模型,在这些任务上都达到了良好的性能指标。
接下来是细粒度图像理解的能力,这类任务相比基础感知更为复杂。这包括但不限于文字识别、以及更细致的视觉感知能力。例如,在 GPT-4V 中有一个有趣的案例展示了通过箭头和方框作为视觉提示,模型能够识别出标注物体的具体信息。此外,复杂的视觉推理任务,如专业图像(深度图、CT 影像)分析或代码生成相关的能力,属于更加专业化和垂类场景的应用,目前通用多模态大模型在这方面仍有很大的提升空间。
关于多模态生成能力,自去年年初以来取得了显著进展,尤其是在文生图和视频生成方面,这些应用在画面刻画能力、流畅度和图像文本相关性上都有了显著改进。基于这些进步,衍生出了一系列应用,比如短视频生成、数字人、Talking Head 等热门方向,还包括音色克隆和视频特效生成等技术。
在讨论多模态大模型的应用场景时,我们提出了几个分析原则来确定使用此类模型的必要性和可行性。首先,对于问题定义是否开放,多模态大模型可以通过 Prompt 方式提供更灵活的解决方案。其次,小模型可能存在效果瓶颈,尤其在处理多模态组合的任务时。最后,考虑到多个小模型的维护成本较高,多模态大模型可能提供一个更综合性的解决方案。针对可行性的考量,主要关注成本问题和幻觉现象——即模型产生不准确或虚构的信息。为解决这些问题,我们探索了大小模型结合的方法,其中小模型用于获取轻量级结构化或感知信息,而大模型则用于获得更开放的结果。
以 GBI(生成式商业智能)场景为例,该场景下的数据形式多样且复杂,传统的 OCR 技术难以应对图表或表格的综合使用需求。因此,采用多模态大模型可以避免模块间误差累积,并增强视觉推理能力。同时,通过对大量商业图表数据进行有监督微调,可以激发不同格式的分析能力。
另一个应用场景是工业质检中的瑕疵检测。在这个场景中,虽然对于已知类型的缺陷,传统 CV 小模型已经足够有效,但对于长尾问题,多模态大模型可能提供额外的价值。然而,由于实际工业环境中缺陷样本较少,直接应用通用多模态大模型的效果并不理想。因此,我们建议利用合成数据扩充方法,并依赖于领域特定的数据预训练来提高模型性能。
多模态大模型架构的演变及其特点
接下来,将探讨当前多模态大模型架构的演进情况及其特点。自 2022 年起,多模态大模型的发展呈现出加速趋势。至 2023 年,随着 LLaVA 等项目的推出,开源社区分享了众多关于多模态大模型的具体实现和训练细节,这大大促进了学术界与工业界的迭代和发展。截至今日,多模态大模型朝着统一处理多种模态(如视频、图像、音频)的方向前进。目前,开源界的多模态大模型效果也在持续提升,在中文场景下的文档处理和图像理解任务中,最新的开源模型已经能够匹敌或超越商业模型。
在架构设计方面,一个直观的想法是借助现有的大语言模型的力量,以期获得更好的多模态大模型。一种思路是将大语言模型作为独立的调度单元,例如用户输入文本后,通过大语言模型获取调度信息,选择不同的视觉、语音或视频模型进行处理,并整合输出,形成一个多模态系统。这种方法的优点在于它能够快速实现不同功能,因为各个子模型可以单独调用且易于扩展,但其缺点是信息损失较为严重,并存在效果瓶颈。另一种架构则是将大语言模型作为多模态大模型的一个子模块,通过端到端的方式构建。这种方式具备更高的上限,是当前更为理想的多模态统一方案。
然而,在理解和生成这两类任务中,架构上仍存在显著差异。对于理解任务,输入为多模态数据,输出为文本形式,通常采用多模态 Encoder+Connector+LLM 架构。而在多模态生成领域,则更多使用扩散模型,大语言模型将文本信息编码后注入扩散模型以引导更佳的图像生成。
Encoder 模块通常以 CLIP 和 ViT 作为常见结构。CLIP 能够提供图像和文本空间对齐的视觉表示,其基于 Transformer 架构,对于数据处理和参数量都有较好的扩展能力。目前,业界已经对 CLIP 的训练范式进行了一定优化,例如 CLIP 和 EVA-CLIP 等模型在这方面取得了更好的效果。
然而,针对 ViT 架构存在一个显著的问题:它对输入分辨率有一定的限制。当前多数模型主要使用的是 224x224 这样的低分辨率图像作为输入。但在实际应用中,如表格解析或目标检测任务,我们经常需要处理 1024x1024 这样高分辨率的图像。对于如此高的分辨率,ViT 模型的计算量将大幅增加,给系统带来巨大挑战。因此,业界正在重点研究如何通过 Encoder 来优化高分辨率输入的处理策略。
第一种是图像切片法,即当输入图像非常大时,可以将其切割成多个小块图像,并将这些小块依次送入多模态大模型中进行处理。这种方法可以有效减少单次输入的数据量,降低计算复杂度。第二种方法是采用多路 Encoder,这种方法适用于已经基于较小分辨率训练好的模型。通过引入额外的 Encoder 专门处理高分辨率图像,能够在不影响原有模型性能的前提下,增强其处理高分辨率图像的能力。
下面介绍 Connector 模块的作用及其不同结构特点。Connector 的主要任务是将多模态特征与文本特征更好地对齐。这个过程对于确保多模态模型能够有效整合来自不同来源的信息至关重要。各个模块的结构差异显著,下面详细介绍几种常见的 Connector 结构。MLP 结构目前较为常见,被多个项目如 LLaVA-1.5 和 CogVLM 采用。通过一系列全连接层或简单的线性映射来处理多模态特征,旨在将图像、音频等非文本信息转换为与文本特征相兼容的形式。这类方法简单直接,适用于多种应用场景。
BLIP 及其衍生模型采用了基于 cross attention 结构的 Q-Former 模块,这是一种特别设计用于跨模态交互的技术。Cross Attention 允许模型在输入的不同部分之间建立关联,从而选择最有价值的特征。具体来说,它可以帮助确定哪些视觉或听觉元素最能补充给定文本内容,反之亦然。这种结构增强了模型理解复杂场景的能力,因为它可以聚焦于最重要的信息片段。
另一种流行的方法是使用类似于 Self-Attention 的 Resampling 结构。这种方法强调的是内部特征的选择和融合,即从输入特征中挑选出最具代表性的部分,并将它们组合起来形成更强的表现力。Self-Attention 机制让每个位置上的特征都可以关注到序列中的其他位置,这有助于捕捉长距离依赖关系,使得模型能够在更广泛的上下文中评估每个特征的重要性。
下面来看一下多模态生成架构的特点,特别是与扩散模型相关的特性。扩散模型的核心思想是通过学习一个状态转移分布,逐步去噪以生成目标图像。这一过程涉及正向扩散(训练)和反向扩散(推理)。在正向扩散过程中,模型不断为输入数据添加噪声,并学习预测这些被加入的噪声。具体来说,这个训练过程就是不断地加噪,然后模型尝试预测所生成的噪声。而反向扩散则是从随机初始化的噪声开始,通过逐步去噪,并通过文本引导,最终生成目标图像。从架构上看,扩散模型逐渐从基于卷积的架构转变为以 DIT、MMDIT 等为代表的 Transformer 架构。这是因为发现,在多模态生成领域,Transformer 架构同样具备一定的扩展能力。最近开源的如 SD 3 和 SD 3.5 等模型表明,随着参数量的增加,模型效果也得到了进一步提升。
这种转变不仅体现了架构上的进步,也反映了扩散模型在处理复杂多模态任务时的能力增强。随着参数量的增大,模型能够捕捉到更细微的数据特征,从而生成更加逼真和符合预期的结果。
多模态输入输出统一模型目前在学术界引发了极为热烈的讨论。许多研究者都在思考一个问题:之前完成了众多与理解生成相关的任务,是否有可能通过一个模型来解决所有问题?在此,我们将整个架构划分为大语言模型与扩散相结合的一类。例如,Next-GPT 和 Transfusion 等模型就属于此类。其实,从结构上看,Transformer 已经相对优雅地实现了统一,它可以直接用于解决理解和生成类的任务。然而,Transformer 内部仍然包含文本和扩散两块训练任务,因此仍将其归入大语言模型与扩散这一类架构中。
第二类架构是 Next token prediction。这种架构更为优雅,它试图通过一套模型结构和一套训练范式来统一整个理解和生成任务的训练过程。但目前来看,这类模型的效果与最新的单理解或单生成模型相比,仍存在一定的差距。
我们之前提到,在实际的应用场景中,训练的重要性不言而喻。为了实现产业应用的有效落地,通常需要对通用多模态大模型进行训练。这一过程中的训练模式类似于大型模型的训练方式,主要分为两个步骤:首先是大规模预训练,目的是将多模态信息与文本信息进行对齐;其次是监督下的微调,这一步骤中会引入更多样化的任务数据或指令数据,以增强模型在特定任务上的表现及遵循指令的能力。目前,不同的模型训练模式在细节上存在差异,例如某些模型在预训练阶段会采取两步走的方式,不同阶段处理的数据类型及其训练参数模块也会有所区别。
除了训练以外,数据的重要性同样不容忽视。随着模型规模的不断扩展,对于高质量多模态数据的需求也在不断增加。多模态数据的来源极为丰富,比如互联网图片及其关联文字、电子书、教育资料、各类文章等,这些都是构建多模态数据集的基础。然而,尽管多模态数据量庞大,但数据质量普遍不高。许多情况下,与图像匹配的文本标签过于简略,未能详尽描述图像中的具体细节。因此,为了提高数据质量,通常需要经历一个复杂的数据处理流程。首先,需要从各种渠道收集数据;其次,提升数据质量,这包括数据质量分析、数据去重、视频或图像标题的改写等工作,以此提高数据的整体质量;在训练阶段,需要考虑不同数据源之间的配比情况,确保训练数据的多样性和均衡性;在精调阶段,则需要准备多样化的问答数据,这部分数据既可以通过人工标注获得,也可以利用先进的多模态大模型自动生成;最后,在评估阶段,不仅要直接评估数据本身的质量,如多样性、准确性等,还需要通过观察数据迭代后对模型性能的影响来间接评估数据质量。
举例来说,在 LLaVA 中使用的训练数据展示了当前多模态大模型的训练数据量已达到数百万乃至更大的规模。为了获得良好的训练效果,这些数据包含了多种类型的数据,如通用文档、代码等,确保了数据的全面性和代表性。
多模态大模型开发套件 PaddleMIX
接下来,分享百度飞桨开源多模态大模型开发套件 PaddleMIX,其目的是帮助开发者更高效地构建和使用不同的多模态大模型。目前,PaddleMIX 已发布至 2.1 版本,基于百度飞桨深度学习框架,并覆盖图像、文本、音频、视频等不同模态的最前沿模型。对于开发者而言,我们对整个多模态大模型开发流程进行了优化,涵盖从数据处理到预训练、精调直至推理部署的全流程。此外,PaddleMIX 还配备了一系列应用工具,以支持开发者探索多模态技术带来的能力。
首先,PaddleMIX 拥有一个丰富的多模态模型库,不仅集成了多模态理解和生成两大方向上的先进模型,还包含了理解架构中的关键模块和策略,如 Encoder 中的主流结构及高分辨率处理策略,以及 Connector 的不同结构。为了支持动态理解任务,我们确保了与主流大语言模型的兼容性。
其次,在端到端全流程开发体验方面,我们将开发过程分为数据处理和模型开发两个阶段。为了降低开发者在数据处理方面的门槛并提升模型效果,PaddleMIX 中集成了一个名为 DataCopilot 的数据处理工具箱,旨在帮助用户更高效地生成高质量数据,具备一系列完备的功能支持,包括但不限于便捷的数据模式(schema)与格式转换,以及易用的操作,如数据切片、采样和融合等方法。
我们特别强调通过此工具促进用户数据和模型的协同进化能力。为此,内置了许多数据增强和评估模板,并通过模型反馈驱动数据优化。在 2.1 版本中,还引入了 PP-Instagger 功能标签模型,以帮助用户进行数据过滤。此模型是一个多模态理解模型,能够为多模态数据打标,例如颜色判断标签,从而标识数据特征。基于这些标签,我们提出了信息密度概念,用于筛选信息量更大的数据,以此最大化训练价值。实验表明,仅使用 50% 的数据即可达到全量数据的效果,有效降低了模型训练成本。
对于模型开发,当前业界多模态大模型处于快速发展阶段,开源领域内的模型分散呈现,导致用户需要在多个平台上操作,增加了上手难度。PaddleMIX 包含了一系列预训练任务的端到端实现,可通过配置化编程界面快速调用不同模型。此外,针对不同模型相对独立的问题,PaddleMIX 对多模态模块进行了抽象,允许开发者像积木一样拼接不同的大语言模型,提升了二次开发的灵活性。
面对开源方案中普遍缺乏成熟的分布式训练和产业级推理部署方案的问题, PaddleMIX 提供了一套完备的分布式训练能力和一键式高性能部署方案。特别是在大规模预训练方面,飞桨底层针对训练性能进行了全方位优化,包括算子层面的计算加速,如 Flash Attention 和 Fused Linear 等,以确保高效的大规模训练、精调训练及高性能推理。
在低精度训练方面,使用如 FP16 和 BF16 等格式已经成为大模型训练的标准范式。我们在多模态大模型中也致力于将更多算子转换为低精度训练,在确保模型训练效果的前提下,尽可能提升训练性能。这种做法不仅减少了计算资源的需求,还加速了训练过程。对于 4D 混合并行策略,百度飞桨早在 2021 年就发布了这一套策略,并在国际权威基准测试 MLPerf 上多次取得第一的成绩。通过结合不同维度的并行化方法,该策略显著提升了大规模模型训练的效率。基于这些框架层面的优化措施,我们可以看到,无论是多模态生成模型(如 SD、Large DiT)还是理解类模型(如 BLIP-2),飞桨的多模态大模型预训练性能均处于领先地位。
在有监督精调阶段,我们注意到训练数据在文本长度上的不一致性。为了提高训练吞吐量,PaddleMIX 提出了一种 MixToken 方法,避免了传统方案中需要对不同样本进行填充到固定长度的问题。这种方法有效地增大了训练吞吐量,提高了效率。
关于高性能推理,我们在非阻塞执行和其他性能相关的工作上进行了多项优化。具体来说,包括算子融合、通用 Pass 优化、调整 layout 布局以有效处理 transpose 操作,以及针对特定 kernel 采用更友好的内存布局(如 NHWC)。此外,我们还实现了 batch 多卡并行推理,这些优化策略使得不同模型的推理性能至少提升了 26% 以上。
最后,分享一些有趣的应用实例。例如,当前流行的可控生成节点,如文生图等,已被集成到 PaddleMIX 中。此外,上图中展示了两个艺术风格的二维码示例:左侧的是 PaddleMIX 的 GitHub 页面链接。如果感兴趣,欢迎使用并点赞我们的代码仓库,同时可以在仓库中提出任何建议或反馈。目前,PaddleMIX 正处于高频迭代开发和维护状态,不断改进和完善。此外,我们还提供了诸如二次元文生图、LoRA 风格以及其他可控生成应用。这些应用展示了 PaddleMIX 在多模态技术方面的潜力和灵活性。
Q&A
Q1:关于视频理解及视频生成的应用,百度飞桨有哪些相关进展?
A1:对于视频这一领域,从开源的角度来看,仍处于起步阶段。不过,包括像 Qwen 这样的新模型已经开始具备视频理解的能力。从应用角度来看,最近我们正好接触了一些外部开发者,他们分享了一些有趣的场景可以与大家分享。一个例子是对视频流或媒体场景进行标记和分析,比如从长时间的直播视频中挑选出广告带货或精彩片段。此外,在视频生成领域,虽然开源的相关工作较少,但其潜在价值很大,应用场景包括预告片生成和视频的二次编辑等。
Q2:老师您好,您提到的 Data Copilot 具体是怎么回事?它是如何辅助打标流程或数据准备流程的?或者说,它提供的自动化增强程度有多大?
A2:最初,我们开发这个工具的目的是提高效率。因为在进行多模态大模型的开发训练时,我们发现收集到的各种开源数据格式极不统一,处理起来需要编写大量代码。因此,我们设想是否可以创建一个工具,让用户仅需一行代码就能完成数据集的转换或采样等操作。这是基础功能之一。至于打标,由于其本质上是一个模型驱动的过程,我们可以通过模型推理来获取数据标签,进而利用这些标签进行后续的数据过滤等操作,以减少训练成本。总的来说,它并不是完全自动化的打标工具,而是通过标签过滤和筛选来优化流程的一种手段。针对信息密度的问题,我们需要根据具体情况调整策略,以确定标签的数量和频率是否合理。
Q3:您好,我有一个小白级别的问题,关于材料中提到的信息密度过滤,其中一种情况是标签数量少但频率高,另一种是数量多但频率低。请问这两种过滤策略的设计依据是什么?
A3:从设计初衷来看,我们认为信息密度与数据的价值是等价的。对于具有相同能力的数据,数量越多,某项能力就越强。因此,我们希望单个数据能具备多种能力,这意味着可以用更少的数据达到预期效果。之所以提到标签数量和频率,是因为我们在分析标签时发现,很多数据可能只有一个或非常少的几个标签,这类数据往往可以被过滤掉。例如,如果一张图片中包含的信息在其他数据中已经多次出现,就没有必要重复使用。此外,对于那些频率极高的数据,如果它们反复出现,可能会影响其他能力的发展。因此,我们也希望数据集中的标签分布尽可能均匀。
Q4:我想问一个偏理论性的问题:大语言模型的技术已经趋于成熟,应用也更加广泛。那么,大语言模型的理论和方法能否应用于多模态模型?另外,从理论上讲,大语言模型和多模态模型有何区别或联系?
A4:从架构上看,多模态大模型可以视为基于大语言模型实现的。大语言模型的能力已经被广泛认可,因此,所有多模态大模型通常都是在大语言模型的基础上增加其他模态的子能力。在理解层面,我们通常只需要实现特征级别的对齐,但我们希望多模态大模型也能拥有视觉推理和问答等高级能力,这些能力的实现很大程度上依赖于大语言模型中的特定模块。从训练范式来看,多模态大模型的训练方式与大语言模型相似,只是在预训练阶段和精调阶段,需要训练的具体参数可能会有所不同。因此,可以说在理念上、结构上以及训练范式上,多模态大模型与大语言模型是相当一致的。也就是说,只要可能,我们就尽量将大语言模型的方法迁移到多模态模型中,只不过处理的数据类型不同。
目前,业界正在探索一种大一统的模型,即试图在一个模型中统一处理多种模态的数据,但这仍然是一个挑战,尤其是多模态数据之间的对齐质量和数据质量本身的问题需要解决。
目前来看,两者之间最大的区别可能在于数据和架构方面。例如,对于文本到图像的生成任务,扩散模型可能是相对于大语言模型而言差异较大的一个点。