在高级多模型学习的时代,多模态大型语言模型(MLLMs)如GPT-4V已经取得了在语言和视觉元素之间建立桥梁的显著进展。然而,封闭源代码和相当大的计算需求为通用使用和修改带来了明显的挑战。这就是开源MLLMs,如LLaVA和MiniGPT-4的出现之处,在各项任务上取得了突破性的成就。
尽管取得了这些成就,计算效率仍然是一个未解决的问题,像LLaVA-v1.5-13B这样的模型需要大量的资源。为了解决这些问题,作者引入了TinyGPT-V,这是一种具有令人印象深刻性能且具有普通计算能力的全新模型。它之所以脱颖而出,是因为它只需要24G GPU进行训练,并且只需要8G GPU或CPU进行推理。TinyGPT-V基于Phi-2,将有效的语言 Backbone 与来自BLIP-2或CLIP的预训练视觉模块相结合。
TinyGPT-V的2.8B参数可以进行独特的量化过程,适合在8G各种设备上的局部部署和推理任务。本文的工作推动了进一步开发设计成本效益高、高效且性能优良的MLLMs,扩大了它们在各种实际场景中的适用性。此外,本文提出了一种通过小型 Backbone 实现多模态大型语言模型的新范式。
代码和训练权重:https://github.com/DLYuanGod/TinyGPT-V和https://huggingface.co/Tyrannosaurus/TinyGPT-V。
1 Introduction
最近,随着GPT-4V的问世,一种广泛的多模态大型语言模型(MLLM)在视觉语言理解和生成方面展现出了令人印象深刻的能力。然而,尽管GPT-4V尚未开源,因此限制了通用使用和独立修改。
从积极的一面来看,开源MLLM的数量最近有了急剧增长,如LLaVA和MiniGPT-4,它们在某些任务上展现出了突破性的能力,在图像描述(IC)、视觉问答(VQA)和参考表达式理解(REC)等领域超过了GPT-4V,例如,在各种视觉定位和问答任务上,MiniGPT-v2 与其他传统视觉语言模型相比具有优势。
尽管一些开源MLLMs(多模态大型语言模型)在视觉语言理解方面展现出了显著的能力,但在训练和推理阶段仍然消耗了过多的计算资源。例如,LLaVA-v1.5-13B在训练25.5小时的过程中使用了8个A100 GPU,每个GPU具有80GB的内存。由于大型语言模型的性能直接影响了MLLM的能力,例如LLaVA-v1.5-13B利用Vicuna-13b-v1.5,以及MiniGPT-v2利用LaMA2-7B-Chat,在复杂任务(如IC、VQA等)中提高性能需要大量的语言模型参数,因此作者需要一种可以与如LaMA2和Vicuna-v1.5等模型相竞争,但不需要过多GPU计算资源的的大型语言模型。
因此提出了一种名为TinyGPT-V的新模型,该模型仅需要24G的GPU进行训练,而在推理阶段只需要8G的GPU或CPU。该模型利用了一种先进的大型语言模型,即基于Phi-2,它是基于Phi构建的,并据报道在性能上超过了13B语言模型的最佳效果,且其结果与规模达到25倍以上的模型相似或更好。
关于视觉感知,使用了来自BLIP-2或CLIP的相同预训练视觉模块,其中包括了一个ViT作为视觉编码器以及映射模块。TinyGPT-V的训练方法遵循MiniGPT的方法,在整个训练过程中,TinyGPT-V只在视觉编码器与语言模型之间应用映射模块,而冻结所有其他参数。TinyGPT-V在训练过程中的各个阶段,例如LAION,Conceptual Captions,SBU等,使用了与MiniGPT-v2相同的数据集。
在研究中观察到TinyGPT-V具有许多与GPT-4相似的特性,这得益于应用了Phi-2模型。仅拥有2.8B参数的TinyGPT-V,其独特的量化过程使其适合在8G移动设备上的局部部署和推理任务。TinyGPT-V在实现无法匹敌的性能和保持MLLM效率之间的平衡方面迈出了巨大的步伐。通过作者的贡献,作者努力使社区能够构建出更具有成本效益、高效和性能优良的MLLM,以适应广泛的实际应用场景。
2 Related Work
高级语言模型。语言模型的演变经历了许多重要的里程碑,始于早期在自然语言处理(NLP)方面的成功,如GPT2和BERT。这些基础模型为后续开发涵盖数百亿参数的更大语言模型奠定了基础。这种规模的激增导致了诸如GPT-3,Chinchilla,OPT和BLOOM等先进能力的出现。这些大型语言模型(LLMs)在领域内取得了进一步的进步。例如,ChatGPT和InstructGPT利用这些强大的模型来回答各种问题和执行复杂的任务,如编程。开源LLM的引入,如LaMA,进一步推动了这一领域的研究,激发了后续的发展,如Alpaca,Vicuna。这些模型通过使用高质量的指令数据集微调LLMA模型,展示了LLM框架的多样性和适应性。
最显著的近期进展是Phi及其继任者Phi-2。这些模型展示了卓越的性能,与规模是其25倍之大的模型相媲美,甚至超越它们。这表明语言模型领域的格局发生了重大变化,强调效率和有效性,不一定依赖规模。这样的发展标志着NLP领域的新时代的开始,其中更小、更高效模型可以实现与大型对应物相当的结果,开辟了新的应用和研究可能性。
多模态语言模型。近年来,将视觉输入与大型语言模型对齐以实现视觉语言任务的趋势已经引起了广泛关注。像VisualGPT和Frozen这样的开创性工作利用预训练语言模型进行图像描述和视觉问答。这种方法进一步由像Flamingo这样的模型发展,它引入了门控交叉注意力机制来对齐预训练的视觉编码器和解码器,并在大量的图像文本对上进行训练。
BLIP-2引入了一个高效的Q-Former来对齐视觉和语言模式。这些突破性的研究为该领域带来了进一步的创新,导致了像LLaVA和MiniGPT4这样的模型的开发,以及其后续的迭代版本,如LLaVA-v1.5,MiniGPT-v2,ArtGPT-4,指令GPT-4和Instruction Mining。这些模型通过指令调优展示了高级的多模态能力,并展示了令人印象的泛化能力。
尽管这些多模态语言模型在视觉语言任务上具有强大的能力,但通常需要大量的计算资源。相比之下,TinyGPT-V代表了范式转变,利用一种既经济又强大的小型语言模型来实现一个强大、易于部署的模型,适合各种实际视觉语言应用。这种方法强调了朝着更高效且同样称职的多模态语言建模的转变。
3 Method
作者首先提出视觉语言模型TinyGPT-V,然后讨论模型的结构和任务的组织,并最终介绍每个阶段的训练过程。
Model Architecture
在这个子节中提出了TinyGPT-V模型的结构,它由一个线性投影层和一个大型语言模型组成。
视觉编码器 Backbone。在TinyGPT-V的适应中,ViT的EVA被用作视觉基础模型,与MiniGPT-v2一样。视觉基础模型在整个模型训练过程中保持无效。TinyGPT-V训练在第一阶段、第二阶段和第三阶段的图片分辨率分别为224×224,第四阶段的图片分辨率为448×448,作者通过提高图像分辨率来放大位置编码。
线性投影层。线性投影层的功能是将视觉编码器提取的视觉特征嵌入到语言模型中。同时,作者努力让广泛的语言模型理解基于图像的信息。使用来自BLIP-2架构的Q-Former层作为初始线性投影层,这是为了在视觉语言模型中部署预训练的BLIP系统时,尽可能地提取BLIP系统的最大功能。
这种方法大大减少了需要训练阶段的参数数量。作者使用初始化为高斯分布的线性投影层作为第二层。目标是缩小Q-Former输出和语言模型嵌入层之间的维数差距,从而更好地将视觉标记与语言模型的相关隐藏空间对齐。
如图2所示,为了加速TinyGPT-V的训练过程,最初使用来自MiniGPT-4(Vicuna 7B)的预训练线性投影作为基础层。随后,添加一个线性投影层来有效地桥接到Phi-2模型的相应隐藏空间。
大型语言模型 Backbone。使用Phi-2模型作为TinyGPT-V大型语言模型的 Backbone 。Phi-2是一个27亿参数的语言模型,具有出色的推理和语言理解能力,在少于13亿参数的基语言模型中展现出最先进的表现。在复杂基准测试中,Phi-2与大多数规模是其25倍的模型相匹配或超过。完全依赖Phi-2语言标记执行多个视觉语言操作。对于需要创建空间位置的视觉 Anchor 定任务,作者明确要求语言模型生成边界框的文本描述以表示其地理坐标。
TinyGPT-V的规范化与LoRA。在4.3节中,推导出训练小型大规模语言模型进行迁移学习,特别是跨不同模式(如从文本到图像),面临巨大的挑战。调查发现,这些较小的模型在多模态数据计算中特别容易受到NaN或INF值的影响。这通常导致计算损失值为NaN,导致初始批前向传播失败。
此外,这些较小模型中的可训练参数数量有限,可能导致训练过程中梯度消失。为了应对这些问题,如Figure 3(c)所示,将LLaMA-2后规范化与输入规范化机制集成,在每次Multi Head Attention Layer(MHA)之后实施RMS Norm来对后续层的数据进行规范化。还更新了Phi-2模型中所有层规范,以增强训练稳定性,如图下的方程所示。
在这里,是该层的输入,和分别是层输入的均值和方差,是一个防止除以零的小数,和是可训练参数。
在这里,是经过MHA后的输入,是向量中元素的个数,而是一个用于提高数值稳定性的小常数。
此外,Henry等人[15]强调了在低资源学习场景中Query-Key Normalization的重要性。因此,如Figure 3(d)所示,作者将Query-Key Normalization集成到Phi-2模型中,具体方程如下。
其中表示或的维度。
LoRA机制的结构如图3(a)所示,它是一种与图3(c)中冻结的预训练权重并行高效的微调方法,不会增加大型语言模型的推理时间消耗,并且更容易优化。
Multi-task Instruction Template
为了减轻在训练一个统一的多模态模型以处理各种不同的任务(如视觉问答、图像描述、引用表达式理解、生成和目标解析与定位)时可能出现的潜在歧义,在多任务指令模板中使用了特定任务的MiniGPT-v2标记。这些标记源自LLaMA-2的对话模板,包括一个一般输入格式,包括图像特征、任务标识符标记和指令输入。
其中六个任务标识符分别对应特定的任务。对于需要模型识别所引用目标的 spatial location的任务,它使用带有坐标归一化在0到100范围内的边界框的文本格式。总的来说,MiniGPT-v2提供的独特任务特定标记有助于消除任务之间的歧义,允许更精确和准确的任务执行。
Training Stages
在这个子节中,作者将描述TinyGPT-V的三阶段训练过程。
第一阶段预训练的暖身训练。在初始预训练阶段,TinyGPT-V使用大量对齐的图像文本对来学习视觉语言理解。模型将引入的投影层输出的结果视为一个软提示,指导它创建相关文本,并允许大型语言模型接受来自图像模态的输入。预训练过程使用了一个由概念性描述、SBU和LAION组成的数据集组合,涉及20000个训练步骤,涵盖了约500万个图像文本对。
第二阶段预训练。在第一阶段训练之后,大型语言模型变得能够处理图像模态输入。为了确保模型在进入后续训练阶段时具有更一致的表现,重新使用第一阶段的数据集,特别是用于训练LoRA模块。
第三阶段像人类一样的微调。使用来自MiniGPT4或LLaVA的图像文本对来微调这个TinyGPT-V模型,其中包括如下指令:“###人类:看看这张图片,并描述你注意到了什么。###助手:”。作者使用了包括随机选择的提示在内的统一模板,以提高模型生成一致且听起来更自然响应的能力。
第四阶段多任务学习。TinyGPT-V的第四个训练阶段专注于通过调整模型以适应更多的多模态指令数据集,如MiniGPT-v2,来增强其聊天机器人的对话能力。这些数据集包括LLaVA,Flickr30k,一个混合的多任务数据集和Unnatural Instruction。LLaVA数据集用于多模态指令调优,包括详细的描述和复杂的推理示例。Flickr30k数据集用于改进基于图像的图像描述生成和目标解析与定位能力。
此外,还创建了一个混合的多任务数据集,以提高模型在多轮对话中处理多个任务的能力。最后,为了恢复语言生成能力,作者将Unnatural Instruction数据集添加到TinyGPT-V的第三阶段训练中。
4 Experiments
在这个部分,将详细描述训练和评估方法。
Training
实验设置。本研究的实验环境使用了一台配备有大量24GB VRAM的NVIDIA RTX 3090 GPU,并由AMD EPYC 7552 48核处理器处理中央计算,提供15个虚拟CPU。内存分配设置为80GB,以确保处理大型数据集时有足够的容量。软件环境统一使用PyTorch 2.0.0版本,支持CUDA 11.8,便于在GPU上进行优化的张量操作。
训练过程。在作者的实验过程中,精心策划了模型的训练,分为四个不同的阶段,每个阶段都具有特定的学习率策略和损失函数,如图4和图5所示。
第一阶段(跨度17个epoch): 在这个阶段中,每个epoch包含1000次迭代,共17个epoch。作者采用了动态学习率方法。学习率在epoch开始时为1e-5,并在epoch结束时逐渐上升到1e-4。这种模式在所有17个epoch中一直得到应用。训练损失呈现出稳定的下降趋势,从7.152开始,逐步减少到2.620,反映了模型在数据上的学习能力不断提高。这个阶段的目标是使TinyGPT-V中的Phi-2模型以某种方式对图像模态的输入作出反应。在语义空间中,实现文本和图像的对齐。
第二阶段(跨度4个epoch,每个epoch包含5000次迭代): 在这个阶段中,引入了”linear_warmup_cosine_lr”的学习率计划。作者开始了一个warmup阶段,其中学习率线性增加从1e-6(warmup_lr)到1e-4(init_lr),然后通过cosine衰减到最小学习率8e-5。在这个阶段中,损失呈现一致的减少,开始于2.726,结束于2.343。这个阶段的目标是让LoRA模块在多模态数据中发挥作用,进一步减少模型在图像文本对上的损失,并提高模型从数据中学习的能力。
第三阶段: 这个阶段持续了5个epoch,每个epoch包含200次迭代。作者保持了”linear_warmup_cosine_lr”的学习率计划,其中包含一个warmup阶段,200步。学习率开始于1e-6,上升到3e-5(init_lr),然后衰减到1e-5(min_lr)。损失值反映了显著的改进,开始于1.992,减少到1.125。这个阶段的目标是让TinyGPT-V能够接受口头和图像模态的输入,并针对它们产生响应。经过这个阶段的训练,TinyGPT-V已经能够执行大部分图像回答任务。
第四阶段: 该阶段跨越了50个epoch,每个epoch包含1000次迭代。遵循了”linear_warmup_cosine_lr”的学习率计划,其中包含一个1000步的warmup阶段。学习率开始于1e-6,达到1e-5(init_lr),然后经历cosine衰减至最小值8e-5。训练损失值显示了一致的下降趋势,开始于2.720,最终达到1.399。这个阶段的目标是让TinyGPT-V能够同时执行像VQA或VSR任务这样的多种任务,从而增加TinyGPT-V在多模态任务上的泛化性能。
Evaluation datasets.
GQA是一个针对现实世界视觉推理和组合性问题回答的数据集,具有一个强大的问题生成引擎,可以生成2200万个不同的推理问题。VSR包括超过10000个自然文本图像对,涵盖了66种空间关系。IconQA针对icon图像中的视觉理解和推理,包括三个子任务(多图像选择、多文本选择和填空)。
VizWiz是一个超过31000个视觉 Query 的集合,每个 Query 都来自一个使用智能手机进行拍照的视觉障碍者,伴有针对图像的语音化问题,以及每个 Query 的10个答案来源。Hateful Memes dataset (HM) 是由Facebook AI开发的,是一个全面的多模态集合,专门用于检测meme中的仇恨内容,结合了图像和文本元素,包含超过10000个新创建的多模态示例。
视觉问答结果如下表2所示。可以看出,仅有2.8亿参数的TinyGPT-V在多个基准测试中表现出显著的竞争力,几乎与拥有近13亿参数的模型相媲美。
具体而言,在VSR(视觉空间推理)零样本任务中,TinyGPT-V以53.2%的最高分超过了其他竞争对手,这尤其令人印象深刻,因为它的参数大小大约是其他领先模型如BLIP-2,LLaVA和InstructBLIP的4.6倍小。
在GQA基准测试中,尽管TinyGPT-V得分为33.6%,但落后于InstructBLIP的最高得分49.5%。然而,在IconVQ挑战中,TinyGPT-V表现出强大的性能,获得了43.3%的分数,只比InstructBLIP的领先分数44.8%短1.5%。
同样,在VizWiz任务中,TinyGPT-V展示了出色的能力,得分为24.8%,尽管不是最高的,但在参数数量减少的情况下值得注意。在Hateful Memes(HM)数据集的背景下,TinyGPT-V以53.2%的分数与InstructBLIP的最高分数57.5%相匹配,再次强调了其效率和与较大规模模型竞争的能力。
总体而言,TinyGPT-V在这些不同且具有挑战性的基准测试中的表现令人印象深刻,尤其是在考虑其参数效率的情况下。
Ablation Study
如表3所示,完整的TinyGPT-V模型在各阶段都实现了低损失,但移除关键模块会导致严重的训练问题。如果没有LoRA模块,从第三阶段开始会出现梯度消失。省略输入层规范会显著增加损失(到第一阶段的2.839),并导致第四阶段出现梯度消失。
如果没有RMS规范,模型在第一阶段会看到升高的损失(2.747)并面临第二阶段的早期梯度消失。如果没有QK规范,模型会出现立即的梯度消失。这些数据清楚地说明了每个模块在防止梯度消失和维持整个训练过程低损失中的关键作用。
此外,作者还揭示了一个显著的趋势:用于迁移学习的较小大规模语言模型(尤其是在从文本到图像模态的转换中)会使训练过程变得更加困难。作者观察到需要额外的规范化层来稳定训练,特别是在从较大模型(如Vicuna-13B)缩放到较小模型(如Phi-2(2.7B)和Phi-1.5(1.3B))时。
Conclusion
在本研究中提出了TinyGPT-V,一种适用于各种实际视觉语言应用的参数高效的MLLMs。TinyGPT-V创新性地基于紧凑而强大的Phi-2小语言模型框架构建。这种方法使得TinyGPT-V在视觉问答和引用表达式理解等多样化基准测试中表现出卓越的性能,同时保持计算需求的易于管理。
值得注意的是,TinyGPT-V可以在24G GPU上进行训练,并在8G设备上部署,展示了创建成本效益高、高效且强大的MLLMs的显著进步。本文标志着向开发用于实际、真实世界用例的较小、但强大的多模态语言模型的贡献。作者设想,TinyGPT-V将促进对开发用于各种应用的紧凑MLLMs的进一步探索。
参考
[1]. TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones