【Paper Reading】多模态大模型Cambrain-1理解

作者:崔权

前言

arxiv.org/pdf/2406.16...

常见的MLLM结构

作者团队是谁

代表性工作都在计算机视觉预训练领域,MoCo和MAE等,所以本篇paper重视的一个问题是"visual侧特征学得好不好",和一些MLLM代表作关注的视角并不一样

理解Related Work

Related work章节的信息浓度很高,分为6个section,同时也交待了paper & 做好MLLM要关注的6大问题

问题 讨论
LLM LLM是MLLM模型的基础,LLM可以基于prompt和visual encoder的输出,完成复杂的多模态任务。近期有很多工作是通过强化LLM,进而优化MLLM的性能。但是这也引出了一个问题,目前对于MLLM的评估是非常容易被LLM的性能影响的,很少有人对MLLM的视觉感知能力做评估。
Vision encoder 大多数MLLM的vision encoder都是CLIP预训练的,但是除了文本监督的预训练方式,还有各种各样的视觉模型(自监督、分割、深度估计、扩散)。最近有一些工作探索了如何在MLLM引入多样的视觉模型。本文也会系统性探索MLLM中视觉模型的选择。
Multimodal connector 视觉模型输出的特征无法直接被LLM处理,大多数MLLM会引入一个projector把视觉特征映射到LLM的token空间。目前最主流的projector是MLP:- MLP的问题:visual token的数量会随着分辨率平方增长,极大限制了视觉context的长度(例如LLaVa-Next需要2880个token去处理672分辨率的图片)。本文为了解决这个问题,设计了一种处理高分辨率图片的projector
Instruction tuning data 视觉指令微调的数据很重要,但是难收集,相比于文本instruction数据来说,获取成本非常高。本文收集了尽可能多的VQA数据&视觉互动数据,探究数据平衡&数据类别配比等问题;
Instruction tuning 大部分MLLM,都用预训练的LLM和vision encoder进行初始化;基于视觉指令微调数据,对LLM&projector进行finetune。但是最合适的finetune策略一直是悬而未决的,比如:- 是否需要在同时finetune LLM&projector前,对projector进行pretrain finetune的过程中是否freeze住vision encoder关于这些问题,本文也提供了系统性的实验。
Evaluation & benchmark 现有MLLM benchmark的合理性存疑

MLLM x 视觉模型

怎么评:MLLM的benchmark合理吗?

Finding1:大多数benchmark并无法反映MLLM的视觉能力,能反映的benchmark自身的样本数又很少

  1. 左上图:MLLM在下游benchmark上做测评

    1. 训练设置:基于2阶段训练,第一阶段用1.2M (来自ShareGPT-4V)数据训练connector,第二阶段用0.74M数据同时训练connector和LLM;
    2. 测试设置:绿色label代表"使用文本+视觉特征",红色label代表"只用文本特征",蓝色实心label表示"绿色和红色的diff",黄色实心表示"random guess"的结果
  2. 结论:

    1. 大多数数据集上,有没有visual侧特征,对最终的结果影响不大
    2. 缺少visual侧特征影响较大的任务,自身的样本数很少
  3. 解决方案:本文提出CV-Bench,把CV任务给自然语言化,用来评测MLLM在视觉侧的能力

    1. 空间关系
    2. 物体数量
    3. 深度关系
    4. 相对距离

怎么训:MLLM的训练方法

Finding2:两阶段的训练是必要的,并且一阶段projector的训练数据越多效果越好;Unfreeze视觉backbone训练大部分情况下有益;

表格纵轴的含义:

  • 0M❄️:freeze视觉backbone,不用数据pretrain projector
  • 0.5M❄️:freeze视觉backbone,用0.5M数据pretrain projector
  • 1.2M❄️:freeze视觉backbone,用1.2M数据pretrain projector
  • 1.2M🔥:unfreeze视觉backbone,用1.2M数据pretrain projector

表格的结论:

  • 不可以跳过projector的训练,两阶段训练是有用的;
  • 越多的数据训练projector,最终的效果越好;
  • 在projector的训练阶段,unfreeze视觉backbone大多数情况下有收益,但是可能会被计算资源限制可行性,资源充足的情况下可以尝试;

怎么选vision encoder:MLLM的视觉backbone选择

Finding3:VL预训练的视觉backbone比视觉SSL预训练的backbone效果好。

  • 图6:所有蓝色的点,在红色&绿色的点上方。蓝色点代表使用VL预训练的backbone,红色代表视觉SSL的backbone,绿色代表其他任务(如分割)预训练的backbone;总体来看,VL预训练的backbone最适合当做MLLM的视觉基座;
  • 其中效果最好的是SigLIP的模型,比较惊喜的是,ConvNext-L的效果也不错;

Finding4:高分辨率的视觉backbone对表格理解、重视觉侧的任务都很有帮助。基于CNN的backbone天然对上述任务友好。

结论有点牵强,看图6即可;

怎么进一步提升视觉能力:MLLM x 多个视觉backbone

Finding5:结合多个视觉backbone的特征,可以增强MLLM的性能。

由图6可以看出,不同pre-train、不同architecture的视觉backbone擅长的任务不同,可以将他们进行结合获取更好的效果。

结合的逻辑是,从每个backbone输出的visual tokens中,插值出固定个数的visual tokens;多个backbone输出的特征在channel维度进行concat,再用MLP projector到LLM的token space,继而送进后面的LLM中;

比如,encoder 1的特征维度是196x1024,encoder 2的特征维度是256x2048,那做法就是,从每个encoder的特征中插值出来64个,得到一个64x1024和一个64x2048的特征,再从channel维度concat起来,变成64x3072,再用一个FC把维度降下来,对齐后面的LLM;

提出解法:多个视觉模型特征聚合模块 SVA

Finding6:特征聚合的关键点是空间归纳偏置、LLM&视觉特征的深度交互

用cross attention layer,处理多个visual encoders的特征

  1. 先定义一个learnable query token <math xmlns="http://www.w3.org/1998/Math/MathML"> X ∈ R L 2 × C X \in \mathbb{R}^{L^2 \times C} </math>X∈RL2×C,L代表feature map的长宽,C代表feature的dimension;

  2. Given图片里3个encoder的特征,由于可能是3种不同的feature map大小,需要对同一个spatial position上的特征做对齐;

    1. Given一个query vector <math xmlns="http://www.w3.org/1998/Math/MathML"> x i , j x_{i,j} </math>xi,j,对于同大小feature map,则感知固定位置的feature vector <math xmlns="http://www.w3.org/1998/Math/MathML"> F 1 i , j F_{1_{i,j}} </math>F1i,j,作为KV;
    2. 如果feature map的长宽是L的 <math xmlns="http://www.w3.org/1998/Math/MathML"> m k m_k </math>mk倍,则感知一个区域内的feature <math xmlns="http://www.w3.org/1998/Math/MathML"> F k [ m k ⋅ i : m k ⋅ ( i + 1 ) , m k ⋅ j : m k ⋅ ( j + 1 ) ] F_{k}[m_k·i:m_k·(i+1), m_k·j:m_k·(j+1)] </math>Fk[mk⋅i:mk⋅(i+1),mk⋅j:mk⋅(j+1)]作为KV;
  3. 总的来说,一个query会负责聚合"多个encoder、同一spatial region"内的特征,聚合多个encoder的visual tokens,产出固定个数(L*L)visual tokens作为聚合后的结果;

具体指标:从结果来看,也没有比concat领先太多,感觉形式大于作用,多个source的encoders才是涨点的本质原因;

MLLM x 数据

  1. 如图9所示,paper收集了非常多的多模态数据,包括OCR数据、VL数据、纯文本数据等;除了以上7M的开源数据,作者还从Internet定向增补了3M的数据,主要手段是用搜索引擎+wiki+大模型生成prompt;这里所有的数据加起来产出了Cambrain-10M数据集;
  2. 基于Cambrain-10M,调整了垂类的配比,得到了更精简、更高质量的数据集Cambrain-7M;和10M版本的对比如下,7M训出来的模型效果更好;
  1. 对于答案非常短的训练数据,增加一些system语句,不同的数据集适用的prompt不同;这一操作非常有利于提升模型的对话能力,防止模型退化到"answer machine"只会以很短的文案回答问题;

和SOTA的比较

  • cambrain-1的训练setting:

    • stage1 数据:用2.5M数据预训练projector,1.2M captioning data from shareGPT4V and 1.2M captioning data used in MiniGemini; 1e-4学习率,bs 512;
    • stage2数据:Cambrain-7M数据做SFT;2e-5学习率,bs512;
    • 模型侧:4个visual encoders通过SVA聚合;
  • 结论:cambrain超过了开源sota(mini-gemini和llava-next),仅用了1/4的视觉token数(但是有SVA聚合多个encoder的结果)

小trick,评估的时候应该使用模糊匹配对output进行后处理;For instance, if the correct answer is "(a) Apple" and the model outputs "Apple", it is crucial to recognize the response as correct.

其余的两个SOTA

再回头看cambrain和其余两个sota不一样的地方,cambrain是通过visual encoder的diversity取胜,其余两个sota在纯怼分辨率

Mini-Gemini

LLaVa-Next

相关推荐
LZXCyrus2 小时前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
数字化营销工兵12 小时前
大语言模型(LLM)安全:十大风险、影响和防御措施
llm·大语言模型·数据安全·隐私保护
gz7seven21 小时前
BLIP-2模型的详解与思考
大模型·llm·多模态·blip·多模态大模型·blip-2·q-former
不爱说话郭德纲1 天前
探索LLM前沿,共话科技未来
人工智能·算法·llm
我爱学Python!1 天前
解决复杂查询难题:如何通过 Self-querying Prompting 提高 RAG 系统效率?
人工智能·程序人生·自然语言处理·大模型·llm·大语言模型·rag
任某某01162 天前
第四期书生大模型实战营 - 基础岛闯关作业3 - 浦语提示词工程实践
llm
知来者逆3 天前
DrugLLM——利用大规模语言模型通过 Few-Shot 生成生物制药小分子
人工智能·语言模型·自然语言处理·llm·大语言模型·生物制药
waiting不是违停3 天前
MetaGPT实现多动作Agent
langchain·llm
HuggingFace4 天前
通用辅助生成: 使用任意辅助模型加速解码
llm
用户3157476081354 天前
带你在前端上玩转机器学习,从零去构建,训练一个模型!!
前端·机器学习·llm