出发点:最近因为工作的需要,在研究多模态理解模型,看了最近一两年比较火的一些论文,感觉Nvidia的VILA工作可以作为比较好的多模态理解模型训练教程,也在这里介绍给大家。
多模态理解模型:也叫Large Vision-Language Model
VILA: On Pre-training for Visual Language Models VILA: On Pre-training for Visual Language Models
背景
多模态理解模型的基本定义:最近几年,随着LLM的兴起,学术界和工业界提出了一些结合LLM进行多模态理解的方法,其基本形态为:
- • 输入模态:文本、图片、视频等多模态数据。
- • 输出模态:根据多模态输入的文本理解结果。
- • 基本模型结构:输入的文本和LLM的输入文本类似,都是转换为文本token再输入到LLM中。但输入的图片和视频数据需要经过对应的多模态encoder得到embedding信息,然后经过connector将多模态embedding转换为LLM的token输入到LLM中。LLM对输入的文本token、图片和视频token进行理解,然后输出理解的文本结果。
基本的模型结构如下图所示:
VILA中的多模态模型结构:图片经过ViT的encoder得到embedding,然后经过projector获得对应visual token,和textual token一起输入到LLM中进行理解,最终获得文本理解结果。
为什么说VILA是一个比较好的多模态理解训练教程? 从最近两年的多模态理解模型论文中可以看到,虽然很多论文都描述了数据构成、模型结构、训练方法和训练资源,但缺少对各种训练可能性的严谨对比。例如是否需要用多模态数据对LLM进行训练,对LLM训练的方法应该是什么方法,不同方法之间效果的区别如何?对于这些问题,VILA进行了相对全面的对比和阐述。
以下开始基于VILA介绍如何训练一个多模态理解模型。
模型结构选型:
基本的多模态理解模型包括三个部分:
- • Visual Encoder:将输入的图片、视频数据转换为visual embedding。
- • Connector:将Visual Encoder输出的visual embedding转换为visual token,进一步输入到LLM中。
- • LLM:输入textual token和visual token进行理解,输出理解的文本结果。
多模态理解的模型结构选项涉及三个部分的选型。以下分别基本VILA介绍三个部分的选型。
1. Visual Encoder
Visual Encoder的选型一般选择基于开源的visual encoder,主要涉及两个方面:具体的image encoder,以及对应的输入图片分辨率和特征等操作方法。
在VILA以及之前的一系列多模态理解论文中,Visual Encoder大都选择了ViT结构的预训练CLIP模型。
对于输入图片分辨率,VILA进行了进一步的探索和对比。两种可能性:
- • 一般基于ViT的visual encoder采用了224 * 224的图片分辨率,在patch14的设定下,一个224 * 224对应(224/14) * (224/14) = 256个visual tokens。
- • 另一种选择是基于更高分辨率,例如336 * 336,在patch14的情况下,对应 (336/14) * (336/14) = 576个visual tokens。
更高的分辨率可以带来更好的图片细节,帮助模型更好的理解输入图片,但也会带来更长的token序列,进而增加建模难度。
对于更长token序列的问题,VILA提出了拼接相邻的4个token,然后用一个linear layer来fuse这4个token,即拼接+linear layer映射将4个token合并成1个token,因此336 * 336的token个数从576降为了144,比原始的224 * 224的256 tokens还要少。
VILA对比了不同配置的效果:
对于分辨率比较敏感的TextVQA任务上,224224分辨率对应41.6%的准确率,提高分辨率到336336可以直接获得49.8%的准确率,但token个数会增加一倍以上。采用拼接+映射的下采样方法,可以将token个数大幅度降低,同时也在一定程度上保持了准确率效果(45.6%)。
对于分辨率敏感的TextVQA任务,提高图片分辨率可以带来显著的准确率提升;但对于更依赖语义信息的OKVQA和COCO等任务上,提高图片分辨率并不能带来准确率的显著变化。
2. Connector
Connector的选型一般有3种可能:Linear layer、MLP以及Qformer等比较复杂的模型结构。
从最近的多模态理解论文趋势来看,Connector有越来越简单的趋势,即逐渐向着Linear layer和MLP收敛。
在VILA中,对比了Linear layer和transformer的效果,如下图的©和(d)所示:
对比©和(d),Connector(即表中的Projector)采用Linear时的效果略好于采用Transformer。
在VILA中,对于Linear的效果好于Transformer的解释为:采用简单的Linear映射,会迫使LLM在训练过程中更好的理解Visual Encoder的输出。
但跳出来看Connector的选型,这里其实遗留了一些问题:
- • Linear VS. MLP
- • 同样配置下Linear VS. Qformer等不同结果,以及Qformer中不同个数的query效果。
3. LLM
LLM一般采用开源的LLM,但LLM的选型对应着3个问题:
- • 选择哪一种开源的LLM可以获得更好的效果?
- • 当前的多模态理解模型结构,对不同的LLM是否都能获得足够好的效果?
- • 不同大小的LLM对多模态理解模型而言意味着什么?
在VILA中,可能是因为资源的限制,并没有对问题1中的不同LLM进行充分的横向对比。但对于问题2和问题3都做了一定的探索和对比。
基于LLaMA2 7B和Vicuna 7B的多模态理解效果
对于问题2,如上图所示的LLaMA2 7B和Vicuna 7B,通过VILA的多模态训练方法,都可以获得一定的多模态理解效果。
对于问题3,除了更大的LLM可以带来更好的理解能力外,VILA还对比了在text only情况下的LLM能力下降问题。在一般的多模态理解模型中,核心目的是为了获得多模态理解能力,所以一般不会对比在text only情况下的理解能力下降问题,即LLM能力下降问题。在VILA中,发现了采用多模态数据训练LLM时,会直接导致LLM在text only情况下的能力下降(下文会具体介绍,以及保持理解能力的训练方法),但是越小的LLM能力下降越严重,越大的LLM受到的影响越小。如下图所示:
在MMLU等text only的LLM任务上,经过多模态数据训练后:7B VILA比7B LLaMA2 + SFT效果略差,而13B VILA超过了其他13 B的LLM模型。
训练方法
VILA展示了基本的多模态模型训练方法:如下图所示
- • Connector初始化,一般是固定visual encoder和LLM,来训练connector参数。
- • Visual language预训练,采用多模态数据来训练多模态模型参数,和LLM预训练类似。
- • Visual instruction tuning,采用多模态的instruction数据,来finetune多模态模型参数。
涉及两个需要回答的问题:是否需要训练visual encoder和LLM参数,以及LoRA等微调方法是否足够,是否需要全参数的训练?
对于是否需要训练visual encoder,VILA中并没有进行具体的对比。但对于是否需要训练LLM以及LLM的具体训练方法,VILA都进行了严谨的对比,如下面两个图所示:
对比(a)和(b),在SFT阶段训练LLM,比固定LLM可以获得显著的提升。对比(b)和©,在预训练阶段训练LLM,0-shot不会显示出明显提升,但是4-shot情况下会有明显提升。
对比LLM全参数训练和LoRA训练,全参数训练的效果可以获得全面的提升。
因此,预训练和instruction tuning阶段都需要训练LLM参数,而且应该是全参数训练LLM训练,这样才能获得最好的效果。
数据构造
一般的多模态理解论文中只提到了大致的多模态理解数据来源,以及数据量信息。但对于不同多模态理解数据对于最终效果的影响,缺少深入的对比。在VILA中,对比了不同image-text数据对多模态理解效果的影响,也考虑了一定的补偿措施。
图文交替数据示例
image-text pair数据 VS. image text交替数据
COYO为image-text pair数据的多模态理解效果,MMC4为image text交替数据的多模态理解效果,MMC4-pairs为基于image text交替数据构造的image-text pair数据对应的多模态理解效果。VLM acc为多模态理解任务上的准确率,MMLU acc为LLM理解任务上的准确率。
对比上图的LLaMA2和COYO,经过image-text pair训练后,在LLM的MMLU任务上准确率下降明显。但是采用了MMC4的图文交替数据训练,一方面可以获得更好的多模态理解效果(VLM acc),另一方面在MMLU任务上下降的程度降低了很多(17.2% --> 5.3%)。为了区分是因为MMC4本身的数据造成的效果,还是因为图文交替数据造成的,VILA还基于MMC4构造了MMC4-pair数据,即将图文交替数据构造成image-text pair数据(图中的MMC4-pairs),在MMLU任务上还是有一定的下降。
多模态数据+text only数据进行SFT
上半部分为基于多模态数据进行instrucition tuning的效果,下半部分为基于多模态数据和text only数据进行instruction tuning的效果。
为了规避或者缓解多模态数据训练过程中对LLM的text only任务的影响,VILA结合了LLM的instruction finetune方式,在instruction tuning阶段结合了text only的instruciton tuning数据,显著缓解了在只有多模态数据进行instruction tuning时对MMLU任务的影响,同时也提高了在VLM多模态任务上的表现。
训练资源
VILA采用了8 A100 GPUs * 16 nodes = 128 A100 GPUs,7B模型训练总共用了5.1k GPU hours。
如果只有8个A100,那么就需要26.5天,在一定资源的情况也是可行的。
效果评估
从VILA自己展示的效果图中,相对于LLaVA-1.5、Qwen-VL-Chat以及InstructBLIP等较好的多模态理解模型都获得了比较明显的提升。
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。