前言
Hi大家好,我叫延捷,是一名计算机视觉算法工程师,也是叉烧的老朋友了。 我们计划发布一系列关于多模态大模型的文章,帮助大家快速、精准地了解多模态大模型的前世今生,并且深 入各个多模态大模型领域优秀的工作,希望能给大家一个脉络性的盘点,一起学习,共同进步。
Hi大家好,我叫延捷,是一名计算机视觉算法工程师,也是叉烧的老朋友了。我们计划发布一系列关于多模态大模型的文章,帮助大家快速、精准地了解多模态大模型的前世今生,并且深入各个多模态大模型领域优秀的工作,希望能给大家一个脉络性的盘点,一起学习,共同进步。
Instruction
上一期我介绍了介绍下BLIP到LLaVA的一系列工作,关于LLaVA仅仅介绍到了LLaVA-NeXT,本期作为part1.5(也呼应了LLaVA-NeXT后续工作提出了1.5阶段训练^_^),我们顺着LLaVA这条线会细致介绍下LLaVA-NeXT的若干延伸工作,并且也会跟大家分享LLaVA系列的集大成之作LLaVA-OneVision,同样地我并不会过多列举一些不必要的论文细节和指标,而是会着重讲述:
- “心路历程”:一个系列工作逐步发展的路径,作者是如何根据当前工作的缺点一步步优化的,并且会总结出每篇工作的highlight,在精而不在多;
- “数据细节”:各个工作中对数据处理的细节,包括但不限于数据的收集,采样时的分布,如何清洗/重建noisy数据,如何进行数据预处理,视频抽样的方案等,这些对算法工程师来说是同样重要的一环;
- “前人肩膀”:各个工作中隐藏着一些非常值得盘的消融实验,站在前人的肩膀上,使用这些已有的消融实验结论,不仅能帮助我们更好地理解论文,更能在实际工作中少做些不必要的实验and少走弯路。
我这边将按照时间顺序介绍2024年LLaVA系列的各个前沿工作,作为一个广受关注的多模态大模型,相信大家会从本文中收获不少。
LLaVA-NeXT-Video
《LLaVA-NeXT: A Strong Zero-shot Video Understanding Model》(2024)
https://llava-vl.github.io/blog/2024-04-30-llava-next-video/
核心是使用LLaVA-NeXT中同样的模型结构,把能力从图像拓展到视频中,其中对视频帧的处理和针对video数据的SFT值得我们关注一下。
Highlights:
- 视频处理方面,跟Instruct-BLIP有点类似,LLaVA-NeXT-Video将AnyRes技术从图像上转用至视频处理上,从【把一张图片保持较高分辨率切成多个patch】很自然地改成【把一个视频抽多帧同时放入模型中】。同时使用空间池化技术,把单帧tokens数降低一半,从而进一步增加视频抽帧率,也能提升最终的效果。
LLaVA-NeXT-Video对视频的处理流程:抽帧+resize+tokenize+spatial pooling+concat
- 使用linear scaling技术增加抽帧频率:文中指出由于当前模型最多支持4096个token作为输入,当处理长视频时,总共16帧的抽帧就会丢失相当多的信息,为了提高长视频的泛化性,提出了一种linear scaling技术,该方案类似于RoPE(旋转相对位置编码https://arxiv.org/pdf/2104.09864)中的linear scaling方法,其实就类似于线性插值缩放的手段,使用更多的视频帧生成img tokens+线性压缩;总之该技术用到了视频中,使得LLaVA-NeXT-Video能用更高抽帧频率处理视频。
使用linear scaling技术增加抽帧频率
linear scaling技术对效果的提升很大
- 基于视频数据做SFT的消融实验,基于混合视频数据和图像数据的SFT是效果最好的方案,并且不同于我们默认的认知,在batch中混合比batch中独立效果来得更好。这也启示了我们:哪怕对于video-QA任务,加入更多的纯图像数据也是有帮助的,并且混合在一起反而能增加最终泛化性。
对于视频任务的SFT,加入更多的纯图像数据也有帮助,且每个batch中混合抽样效果更好
这个是LLaVA-NeXT-Interleave的消融实验,再次验证加入更多的图像数据,也会提升模型在视频任务上的效果
LLaVA-NeXT-Ablations
《LLaVA-NeXT: What Else Influences Visual Instruction Tuning Beyond Data?》(2024)
https://llava-vl.github.io/blog/2024-05-25-llava-next-ablations/
本文算是一个基于LLaVA-NeXT的消融实验合集,我个人是很爱读这类文章的,因为既能吸取很多的思路又能拓展认知,并且这些结论常常能帮助到我们自己的工作中。之前读过一篇同样做了很多关于MLLM消融实验的文章(https://arxiv.org/abs/2402.07865)也很棒,有机会在之后的文章中跟大家一起分享下。
- LLM相关的消融实验
- 实验证明LLM的scaling对效果提升明显,但根据LLaMA3.1的实验,个人猜测若继续使用更大的LLM,scaling也会边际效应递减;
- 使用越大的LLM需要越小的学习率;
- 视觉编码器的学习率要比LLM学习率小5~10倍;
更大的LLM能提升多模态大模型的效果,视觉解码器的学习率比LLM小5~10倍
实验表示LLM的scaling提升明显
- 视觉表示端的消融实验
- 视觉编码器的model size对最终效果影响不大;
- 更大的分辨率 & 更多的输入img tokens数量 对效果提升明显(这块结论也非常符合我们的认知);
- 同时在LLaVA-NeXT-Ablations中也提出了一种AnyRes技术的改进版,直接不resize直接对原图做crop+tokenize,最后把这些tokens做双线性差值到指定tokens数量(但在下面的消融实验结果图发现,若保持同样的输入img tokens数量,对最终效果的影响并不是很大);
改进版AnyRes技术和原始AnyRes的差别,可以理解为改变了resize的顺序
当固定输入的img tokens数量时,改进版AnyRes带来的提升不大;提升img tokens数量对效果提升明显
- 训练策略和数据处理相关的消融实验
- 在stage-1中,消融实验表明,在同样的数据量下,更高的数据质量也能直接提升最终模型效果;
- 在LLaVA-NeXT-Ablations中新提出了stage-1.5的训练,使用高质量的数据集+放开所有参数训练full model,数据集包括使用训练好了的LLaVA-NeXT为COCO118K, BLIP558K, CC3M重新生成更优质的caption,再辅以一些能从PDF获得文字的文档数据,以及增加一部分GPT-4V生成的中文caption数据;(回想一下BLIP做的数据bootstrapping,同样是做了Re-Caption,这里是否能用类似的方案,只对置信度低的做Re-Caption,或者把原始数据中置信度高的保留下来)
总的来说回归BLIP到LLaVA,对数据的分析和再处理都是十分重要的一环。对于算法工程师来说,在大模型时代可能无法像之前一样十分精细地清洗每一条或者每一批的数据,但是对大规模noisy数据的清洗、过滤、伪标签等方案依然能直接提升效果,我们在提升模型技术的同时,更需要同步地提高对大规模数据的敏感度,如何利用开源or手头上的工具提升数据质量是我们必须掌握的能力。
新增的1.5阶段高质量数据集训练
stage-1.5中高质量数据的内容
stage-1中,提升数据质量也能直接提升效果
使用Re-Caption带来的提升
LLaVA-NeXT-Interleave
《LLaVA-NeXT-Interleave: Tackling Multi-image, Video, and 3Din Large Multimodal Models》(2024)
核心是为了解决LLaVA系列中较为缺失的多图输入、图文交错对话的能力,LLaVA-NeXT-Interleave将多图像、视频、3D、单图像数据全部表示为交错对话的训练格式,在训练中引入了输入prompt包含多个 token的数据,为此构建了一个包含1177.6k个样本的高质量数据集,涵盖4个主要领域(多图像、视频、3D和单幅图像),包含14个任务和41个数据集。
LLaVA-NeXT-Interleave所支持的4个场景(统称为M4)
LLaVA-NeXT-Interleave训练集的分布
在训练方面,用针对LLaVA-NeXT第二阶段指令微调后的模型再进行多图SFT,同时对照了一下仅用第一阶段后进行多图SFT的效果,使用第二阶段后的效果明显要好,这显然符合我们的预期:LLaVA第二阶段的instruct tuning非常重要。
基于LLaVA-NeXT二阶段后多图SFT,效果比一阶段后多图SFT来得好
Highlights:
- LLaVA-NeXT-Interleave针对训练时多图的放置方法做了精细的处理,并且实验了两种放入多图的方案:
- 一次性把所有输入的多张图片img tokens放在prompt最前面,然后在放置图片的地方放入占位符表示图像插入位置;
- 保持LLaVA系列前作的方案,直接把图片们的img tokens放入需要的位置,即inplace地替换占位符;
经过实验发现,混合两种方案,能达到最好的效果。有趣的是,回顾一下LLaVA系列,许多训练策略都是混合策略能达到更好的效果,或许在大模型训练策略上多样化是个更值得考虑的方向。
训练时多图img tokens插入的消融实验,结论为混合策略效果最佳
- LLaVA-NeXT-Interleave采用了LLaVA-NeXT-Video中同样对image tokens进行池化+提高抽帧率的方法,并没有得到预期中的效果提升,这给了我们一点启示:针对视频任务,需要重点分析视频任务的长度,并且需要对抽帧率和输入尺寸的平衡做更充足的实验。
LLaVA-OneVision
《LLaVA-OneVision: Easy Visual Task Transfer》(2024)
LLaVA-OneVision并没有提出更多的技术方案,就像把本篇文章中所有LLaVA-NeXT系列的技术的大合集,并且收集了更丰富、质量更高的数据。
- 模型结构:
- LLM:Qwen-2
- Vision encoder:SigLIP
- projector:2 MLP
LLaVA-OneVision的模型结构
- 视觉特征表达:
- 更大的图像分辨率 & 更多的img tokens能有效提升模型效果
改版的AnyRes技术+针对不同任务的tokenize方案
- 数据
高质量数据(用于1.5阶段):再次强调了获取高质量数据的重要性,其中数据的处理方式和来源跟LLaVA-NeXT-Ablations中基本一致:使用训练好了的LLaVA-NeXT为COCO118K, BLIP558K, CC3M重新生成更优质的caption,再辅以一些能从PDF获得文字的文档数据,以及增加一部分GPT-4V生成的中文caption数据;
二阶段instruction tuning中,区分为了单图像数据和多图像数据,具体先用单图像数据训练,再用多图像数据训练;
LLaVA-OneVision二阶段instruction tuning数据分布
单图像数据集的formatting prompt
多图像数据集的formatting prompt
- 训练策略
- 1阶段图文对齐训练,只用了caption数据,只训练2层MLP的Projector,固定输入图像尺寸并没有使用AnyRes技术,学习率为10e-3,比1.5阶段和2阶段都要大很多;
- 1.5高质量数据训练,训练所有参数,使用了上限尺寸较小的AnyRes,同时输入img tokens长度也变为1阶段的5倍,Projector和LLM学习率为10e-5,视觉编码器学习率小5倍(个人觉得可以更小),所有数据标签均为用MLLM模型生成或策略提取;
- 2阶段Instruction Tuning,训练所有参数,使用了上限尺寸较大的AnyRes,同时输入img tokens长度也变为1阶段的10倍,Projector和LLM学习率为10e-5,视觉编码器学习率小5倍,并且也依次按照单图像--多图像来进行instruction tuning;
LLaVA-OneVision训练过程一览
Reference
https://llava-vl.github.io/blog/