多模态大模型总结
两类多模态大模型
原生多模特模型和多个单模型拼接
原生多模态模型意味着这些模型是从一开始的设计阶段,就是用于处理多种模态(包括文本、图像、音频、视频等)的数据。
把不同的单个模型拼接起来使得模型具备多模态能力这种做法也比较好理解,比如之前社区开源的Qwen-VL[1],它就是 Qwen-7B + Openclip ViT-bigG(2.54B)的结构,前者作为LLM基础模型,后者作为视觉模型,因此Qwen-VL也支持图像、文本多模态输入。
在数据融合方面,来自不同模态的数据在模型内部被有效地融合,这样可以更好地理解数据间的关联和相互作用。而对于单个模型拼接,不同模态的处理通常是独立进行的,然后在某个阶段再把数据融合到一起。这种做法相对来说会使不同模态之间的信息融合不够紧密,协调性较差。
体现在模型能力上,原生多模态模型可以在整个模型中共享特征和学习策略,有助于捕获跨模态特征间的复杂关系。所以它们通常在执行跨模态任务时表现更好,例如图文匹配、视觉问答或多模态翻译。
但这是整体来说的,具体原生设计并训练的模型是否能产生一个在每个领域都具有强大能力的模型也是一个很难确定的问题。
Gemini
Gemini 模型专为多模态应用而设计。Gemini 模型接受包含文本和图片等提示,然后返回文本响应。Gemini 还支持函数调用,让开发者可以传递函数的说明,然后模型会返回与说明最匹配的函数和参数。然后,开发者可以在外部 API 和服务中调用该函数。
即将推出针对 Gemini 的微调。
Gemini Pro 和 Gemini Pro Vision 可在亚洲和美国区域使用。
Vertex AI Gemini API 专为开发者和企业设计,用于扩缩部署。它提供企业安全性、数据驻留、性能和技术支持等功能。如果您已经是 Google Cloud 客户或部署了大中型应用,那您就来对地方了。
优劣
Gemini 适用于各种多模态应用场景,包括但不限于:
使用场景 | 说明 |
---|---|
信息挖掘 | 将世界知识与从图片和视频中提取的信息融合。 |
对象识别 | 回答与对图片和视频中的对象进行精细识别相关的问题。 |
数字内容理解 | 回答问题并从信息图、图表、图形、表格和网页等各种内容中提取信息。 |
结构化内容生成 | 根据提供的提示说明,以 HTML 和 JSON 等格式生成响应。 |
字幕/说明 | 生成具有不同细节级别的图片和视频说明。我们建议您从以下图片/视频提示开始,从此处迭代操作以获取更具体的说明。 - 图片:“您能编写关于图片的说明吗?” - 视频:“您能编写这个视频所发生情况的说明吗?” |
推断结果 | 根据位置推荐其他可看到的内容,在图片或视频之后/之前/之间可能发生的情况,并实现创造性用途,例如根据视觉输入编写故事。 |
虽然强大,但 Gemini 存在局限性。它在图片、长视频和复杂的指令等方面难以确定精确的对象位置。不适用于医疗用途或聊天机器人。
限制 | 说明 |
---|---|
空间推理 | 难以对图片进行精确的对象/文本定位。它对理解旋转图片的准确率可能较低。 |
计数 | 只能提供对象数量的粗略近似值,尤其是对于模糊的对象。 |
理解较长的视频 | 可支持视频作为单独的模态(与仅处理单张图片不同)。但是,模型从一组非连续的图片帧中接收信息,而不是从连续视频本身(不接收音频)接收。Gemini 也不会提取超过视频 2 分钟之外的任何信息。如需提升包含密集内容的视频的性能,请缩短视频,以便模型捕获更多视频内容。 |
按照复杂的说明操作 | 难以处理需要多个推理步骤的任务。可以考虑分解说明或提供镜头较少的示例,以获得更好的指导。 |
幻觉 | 有时,推断内容可能超出图片/视频中的实际位置,或生成不正确的内容以进行广泛文本解析。降低温度或要求缩短说明有助于缓解这种情况。 |
医疗用途 | 不适合解读医学图片(例如 X 光片和 CT 扫描),或不适合提供医学建议。 |
多轮(多模态)聊天 | 未经训练,无法使用聊天机器人功能或以聊天语气回答问题,并且在多轮对话中表现不佳。 |
原理
- 多模态交叉编排
这个技术是在 Flamingo 中首先提出的,具体来说就是在文本序列中插入特殊的标记 来表示这个位置有一个图像/视频内容。直接输入到模型中的是包含这些特殊标记的文本序列,视觉信息则是通过交叉注意力机制来注入到模型中,并且通过mask来限制每段文本能感知到的视觉内容(一段文本对应一个图像/视频)。由于 Flamingo 没有开源代码,所以不知道官方的实现细节,但可以参考 OpenFlamingo 的代码。 Flamingo 补充材料中的图 7 非常能说明这个细节,可以仔细的研读。
根据技术报告中的图2(上面也引了),Gemini 没有简单的采用 Flamingo 的方式,应该是把其他模态内容的 token 序列直接和文本的 token 序列交叉合并在一起输入到模型中而不是通过交叉注意力机制注入进去,我认为这种形式才算得上原生多模态,不仅设计简洁优雅,而且可能效果更好。
- 多模态离散序列化
上面那段从 Gemini 技术报告中引用的内容提到 “the models ... can natively output images using discrete image tokens (Ramesh et al., 2021; Yu et al., 2022b). ”。这句话引用的两篇文章分别是 Google 自家的 Parti 和 OpenAI 的 DALL·E(临时吐槽一下,GPT4 都集成 DALL·E 3 了,Google 还搁这 DALL·E 1 呢),两个都是图像生成模型,都采用了 VQVAE 、 VQGAN 提出的离散图像序列化技术。最近受到广泛关注的 LVM 也使用了同样的技术,并且从 LVM 的实验来看,这种直接把离散视觉序列输入到大模型中学习出的效果还是挺好的,我个人也认同这种方式相比于用文本作为中介的方式能让模型更充分的感知视觉信息。
根据技术报告中另一段说明 “In addition, Gemini can directly ingest audio signals at 16kHz from Universal Speech Model (USM) (Zhang et al., 2023) features.”,音频模态是直接复用的 USM 这篇工作,其同样使用了和视觉中类似的 VQ(vector quantization) 技术,这个技术出自 NeurIPS 2022 的 BEST-RQ(RQ := random-projection quantizer ),BEST-RQ 文中也把自己的 RQ 和 VQVAE 的 VQ 做了比较。
可以看出这种离散序列化技术在 Gemini 的原生多模态架构中起了重要作用,可以把文本之外的模态内容在形式上和文本统一起来。根据 “Gemini models build on top of Transformer decoders (Vaswani et al., 2017)”,Gemini 就是和 GPT、Llama一样直接采用了 Decoder only 架构,因此统一的多模态 token 序列可以直接用自回归方式进行训练,LVM 在纯视觉数据上已经证明了可行性。
根据以上这两点关键技术,我个人很自然地就把 Gemini 理解为 Flamingo + LVM + USM,其实这个框架我在很久之前读 Flamingo 以及在 Gemini 发布的前几天读到 LVM 的时候就设想过,不过也仅仅是设想,真的很佩服能把设想真正实现的大神们。
所以原生多模态能力实现的关键就在于输入输出都统一为交叉编排的多模态 token 序列,那它到底什么样呢?有了 Flamingo + LVM 的铺垫,它可能是下面这样:
其中 BOS 和 EOS 标记整个序列起始结束,
本文到此为止,粗浅地梳理出 Gemini 原生多模态的可能实现,以后有时间可以再继续梳理和讨论更多的可能的细节,包括 Tokenizer 的实现、为什么是离散序列化、位置编码等。
Gemini团队组成
Gemini 将团队划分为约 10 个小组,分别负责预训练、数据、基础设施、模型微调、模型评估、代码库、多模态、强化学习、工具使用以及人工标注数据。
QWEN-VL
我们通过引入新的视觉接收器,包括与语言对齐的视觉编码器和位置感知适配器,增强了LLM 基础模型的视觉能力。
- 强大的性能:在四大类多模态任务的标准英文测评中(Zero-shot Caption/VQA/DocVQA/Grounding)上,均取得同等通用模型大小下最好效果;
- 多语言对话模型:天然支持多语言对话,端到端支持图片里中英双语的长文本识别;
- 多图交错对话:支持多图输入和比较,指定图片问答,多图文学创作等;
- 首个支持中文开放域定位的通用模型:通过中文开放域语言表达进行检测框标注;
- 细粒度识别和理解:相比于目前其它开源LVLM使用的224分辨率,Qwen-VL是首个开源的448分辨率的LVLM模型。更高分辨率可以提升细粒度的文字识别、文档问答和检测框标注。
Qwen-VL的整体网络架构由三个组件构成,模型参数的详细信息在表1中展示:
大型语言模型:Qwen-VL采用了一个大型语言模型作为其基础组件。该模型初始化自预训练权重Qwen-7B(Qwen, 2023)。
视觉编码器:Qwen-VL的视觉编码器采用了Vision Transformer(ViT)(Dosovitskiy等人,2021)架构,并使用Openclip的预训练权重ViT-bigG(Ilharco等人,2021)进行初始化。在训练和推理阶段,输入图像会被调整至特定分辨率。视觉编码器通过以步长为14的方式将图像分割成多个块,生成一组图像特征。
位置感知视觉-语言适配器:为了解决由于图像特征序列过长导致的效率问题,Qwen-VL引入了一个视觉-语言适配器来压缩图像特征。这个适配器包含一个随机初始化的单层交叉注意力模块。该模块使用一组可训练向量(嵌入)作为查询向量,并将视觉编码器生成的图像特征作为交叉注意力操作中的键向量。这种机制将视觉特征序列压缩到固定的长度256。关于查询数量的消融实验在附录E.2中有详细介绍。此外,考虑到精确图像理解中位置信息的重要性,2D绝对位置编码被融入到交叉注意力机制的查询-键对中,以减轻压缩过程中可能损失的位置细节。经过压缩得到的长度为256的图像特征序列随后被输入到大型语言模型中。
输入与输出
图像输入: 图像通过视觉编码器和适配器处理后,产生固定长度的图像特征序列。为了区分图像特征输入和文本特征输入,在图像特征序列的开头和结尾分别添加两个特殊标记,分别表示图像内容的起始和结束。
边界框输入与输出: 为了提升模型对细粒度视觉理解和定位的能力,Qwen-VL在训练中涉及了区域描述、问题及检测数据。不同于涉及图像-文本描述或问题的传统任务,该任务要求模型精确地理解和生成指定格式的区域描述。对于任何给定的边界框,会应用一个归一化过程(范围在[0, 1000)内),然后将其转换为特定字符串格式:“(Xtopleft, Ytopleft),(Xbottomright, Ybottomright)”。这个字符串作为文本进行分词,并不需要额外的位置词汇表。为了区分检测字符串和常规文本字符串,在边界框字符串的开头和结尾添加了两个特殊标记()。此外,为了恰当关联边界框与其对应的描述性词语或句子,引入了另一组特殊标记( 和 ),用以标记由边界框所指代的内容。
Flamingo
图文多模态领域典型任务如img-text retrieval、VQA、captioning、grounding等,目前的学术设定难度尚可。但是,一旦知识范围扩展,到了open-ended scenario,任务难度立刻剧增。但是DeepMind的Flamingo模型在这些挑战场景中使用同一个模型便做到了。
在机器学习和深度学习的领域中,"open-ended scenario"通常指的是一个具有高度复杂性和不确定性的场景,这种场景下的问题没有固定的结束点,可能会有多种可能的解决方案和路径。
在open-ended scenario中,系统或模型需要能够处理未知的、新颖的或动态变化的情况,而不仅仅是根据预先定义的规则或者有限的训练数据集来做决定。这要求系统具备一定程度的创新能力、适应性和泛化能力。实际应用示例
- 自然语言处理(NLP):在开放式对话系统中,用户可以自由地输入任何形式的问题或评论,系统必须能够理解和生成合理的回答,而不是仅仅从预定义的回复中选择。
- 游戏AI:在某些策略游戏或模拟环境中,AI可能需要面对无法预测的玩家行为和持续变化的游戏状态,它必须实时地制定和调整策略。
- 机器人:在真实世界的机器人任务中,如搜救任务或家庭服务机器人,机器人可能会遇到各种预料之外的障碍和情况,它需要能够自主学习和适应环境。
解决Open-Ended Scenario的方法
在处理open-ended scenario时,研究人员和工程师会采取各种方法来提高模型的鲁棒性和灵活性:
- 强化学习:通过让模型在模拟环境中尝试和错误来学习最优策略。
- 迁移学习:使用在一个任务上训练好的模型来解决另一个相似的任务,从而快速适应新场景。
- 元学习:训练模型学习如何学习,以便它能够在面对新任务时快速适应。
- 多任务学习:同时训练模型在多个任务上工作,以提高其泛化能力。
- 生成对抗网络(GANs):在某些情况下,使用GANs生成新的训练样本来增强模型的泛化能力。
open-ended scenario是AI研究中的一个重要领域,因为它更接近人类的认知和解决问题的能力,同时对于开发真正智能的系统也是一个关键的挑战。
作者团队目前已经开源了OpenFlamingo-9B模型权重,虽然还未经过全面优化,但基于社会的反馈,它已经展现出惊人的替力,并为领域的发展提供了深入挖掘的基础
该模型在COCO目标检测任务和知识问答任务中,也展现现强大的few-shot能力:
COCO(CIDEr)
0-shot | 4-shot | 8-shot | 16-shot | 32-shot | |
---|---|---|---|---|---|
OpenFlamingo-9B* | 65.5 | 74.3 | 79.3 | 81.8 | 84.5 |
DeepMind Flamingo-9B | 79.4 | 93.1 | 99.0 | 102.2 | 106.3 |
VQAv2 (VQA accuracy)
0-shot | 4-shot | 8-shot | 16-shot | 32-shot | |
---|---|---|---|---|---|
OpenFlamingo-9B | 43.5 | 44.0 | 47.5 | 48.9 | 50.3 |
DeepMind Flamingo-9B | 51.8 | 56.3 | 58.0 | 59.4 | 60.4 |
Yi-VL
- 🙌 Yi 系列模型是一个双语语言模型,在 3T 多语言语料库上训练而成,是全球最强大的大语言模型之一。Yi 系列模型在语言认知、常识推理、阅读理解等方面表现优异。例如,
-
Yi-34B-Chat 模型在 AlpacaEval Leaderboard 排名第二,仅次于 GPT-4 Turbo,超过了 GPT-4、Mixtral 和 Claude 等大语言模型(数据截止至 2024 年 1 月)。
-
Yi-34B 模型在 Hugging Face Open LLM Leaderboard(预训练)与 C-Eval 基准测试中荣登榜首,在中文和英文语言能力方面均超过了其它开源模型,例如,Falcon-180B、Llama-70B 和 Claude(数据截止至 2023 年 11 月)。
-
🙏 (致谢 Llama )感谢 Transformer 和 Llama 开源社区,不仅简化了开发者从零开始构建大模型的工作,开发者还可以利用 Llama 生态中现有的工具、库和资源,提高开发效率。
-
结构
Yi-VL采用 LLaVA架构,由三个主要组件组成:
- Vision Transformer (ViT):使用 CLIP ViT-H/14 模型初始化并用于图像编码。
- 投影模块:它旨在将图像特征与文本特征空间对齐,由具有层归一化的两层多层感知器 (MLP) 组成。
- 大型语言模型(LLM):使用 Yi-34B-Chat Yi-34B-Chat 或 Yi-6B-Chat进行初始化,在理解和生成英文和中文方面表现出非凡的熟练程度。
gpt4-vision-preview
Vary-toy
Vary-toy在消费级显卡可训练、8G显存的老显卡可运行,依旧支持中英文!我们希望Vary-toy能当好一个结构简单、能力全面、性能可比的baseline的角色,因此这个“小”VLM几乎涵盖了目前LVLM主流研究中的所有能力:Document OCR、Visual Grounding、Image Caption、VQA…… 技术报告在这里:Small Language Model Meets with Reinforced Vision Vocabulary
我们基于它设计了两个优秀的模型,一个是Vary-document(专门用于文档/pdf处理),另一个是用于图表分析的Vary-plot。你可以在这里看到他们精彩的表演Vary-family。
DeepSeek-VL
这是一个开源的大型多模态模型,它建立在DeepSeek语言模型系列之上。我们开发这个模型的目的是在实际场景中实现卓越的性能,这涉及到广泛的预训练、基于用例分类的数据精选、用于高分辨率处理的模型架构设计以及平衡多模态的训练策略。此外,我们还发展了一种训练方法,引导模型从10亿参数扩展到70亿参数。这些全面的探索为实际应用带来了显著的性能优势,与其他相似规模的大型多模态模型(LMMs)相比。
DeepSeek-VL的预训练数据集来自多个来源,包括但不限于Common Crawl、Web代码、电子书、教育资源和arXiv文章。这个集合广泛覆盖了真实世界的场景,如网页截图、PDF、OCR、图表和基于知识的内容(专业知识、教科书),旨在提供广泛而实用的代表性,同时保持可扩展性。
尽管我们的预训练数据包含了丰富的世界知识,但我们精心筛选了指令微调数据集,以反映真实的使用场景。为此,我们从互联网上手动收集了GPT-4V和Gemini的真实测试案例,并将它们系统地组织成一个全面的分类体系。我们使用这个结构化的分类体系为每张测试图像选择提示,确保构建一个实际且相关的指令微调数据集。这个分类体系也被用来创建一个评估数据集,能够有效地评估真实世界中的性能。
视觉模块设计的目标是优化对高分辨率视觉输入的利用,同时在固定令牌预算内有效地管理推理成本。因此,我们采用了一种混合视觉编码器,它结合了一个用于在384x384分辨率下进行粗略语义提取的文本对齐编码器和一个用于在1024x1024分辨率下捕获详细视觉信息的高分辨率编码器。通过融合这两个编码器,我们的混合方法能高效地将1024x1024分辨率的图像(满足大多数用例)压缩成576个令牌。这个令牌数量在丰富的视觉表示和令牌经济性之间找到了平衡,使其适用于文本-图像交错和多轮推理场景。
在多模态模型的预训练过程中,一个常见的挑战是过度依赖视觉-语言数据可能会导致语言能力的退化。我们的研究发现,保持至少70%的语言数据比例对于保持模型内的语言知识完整性至关重要。这种平衡对于实现不牺牲语言性能的强大多模态能力至关重要。此外,我们引入了一种新颖的“模态预热”策略。这种方法在训练过程中谨慎调整模态的比例,逐渐增加更多视觉-语言数据。通过精心调整模态比例和预热策略,实现了两种模态的平衡性能。
性能评估
结论
- gemini 是闭源的,pro 版本需要微调,但是 gemini 暂时未开放微调功能,未来会开放。ultra 版本需要 visa 银行卡,故没有测试。但根据其开放的评估指标评分达到可用的水平
- qwen-vl 是开源的,Pro 与 Max 版本不开源,Max 版本同样无法达到项目所需的精度要求,可以微调qwen-vl,下一步尝试使用 qwen-vl 微调,测试效果
- chatglm 有 Vision 版,但 glm4 已经闭源,不知道是否会开放微调。
- gpt4-vision-preview 版本图片理解能力较强,测试了少量样本,基本满足业务需求
- yi-vl-34b 开源且能进行 swift 微调
参考文献
像 Gemini 这样的原生多模态模型,和多个单模型拼接相比有什么区别?有哪些优势? - 知乎
原生多模态通用大模型——从 Gemini 说起
https://makersuite.google.com/app/prompts/new_freeform
https://ai.google.dev/tutorials/
GitHub - QwenLM/Qwen-VL: The official repo of Qwen-VL (通义千问-VL) chat & pretrained large vision language model proposed by Alibaba Cloud.
通义千问
解读 Gemini 技术报告(Gemini: A Family of Highly Capable Multimodal Models)
大语言模型之五 谷歌Gemini_谷歌通过对比五个大型自然语言处理模型-CSDN博客
https://arxiv.org/pdf/2312.11805.pdf
https://arxiv.org/pdf/2204.14198v1.pdf
多模态LLM系列调研 - 1 | LLaVA、MiniGPT-4、Flamingo
https://zhuanlan.zhihu.com/p/617864689
https://zhuanlan.zhihu.com/p/507622221
https://github.com/Ucas-HaoranWei/Vary-family