【多模态】35、TinyLLaVA | 3.1B 的 LMM 模型就可以实现 7B LMM 模型的效果

2024-06-06 12:36

本文主要是介绍【多模态】35、TinyLLaVA | 3.1B 的 LMM 模型就可以实现 7B LMM 模型的效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 模型结构
      • 2.2 训练 pipeline
    • 三、模型设置
      • 3.1 模型结构
      • 3.2 训练数据
      • 3.3 训练策略
      • 3.4 评测 benchmark
    • 四、效果

论文:TinyLLaVA: A Framework of Small-scale Large Multimodal Models

代码:https://github.com/TinyLLaVA/TinyLLaVA_Factory

贡献:

  • 证明了使用小型 LLM 的情况下,只要模块组合方式和训练数据质量高,也能取得和大型 LLM 相当的效果
  • 最好的 TinyLLaVA-3.1B (TinyLLaVA-share-Sig-Phi) 能够取得和 LLaVA-1.5、QWen-VL 等 7b 大小的模型相当的效果

一、背景

虽然不断扩大模型的容量能够提升模型对很多不同任务的解决能力,但训练庞大的模型需要很多的资源,如 Flamingo 为 80b,PaLM-E 为 562b,所以现在有很多 LLM 的模型也在降低模型参数量,降低到 7B 或 3B,但性能没有下降很多

所以 LMM 也出现了类似的方向,如 OpenFlamingo 和 LLaVA 所做的模型是从 3b 到 15b,这样也能提升模型的效率和可部署性

基于此,本文作者提出了 TinyLLaVA:

  • 一个利用小型 LLM 实现大型 LMM 的模型框架,框架由视觉编码器、小型 LLM 解码器和中间连接器组成
  • 作者探究了不同的 vision encoder、connector、language model、training data、train recipes 组合起来的效果
  • 证明了通过更好的训练组合方式和更高质量的数据,使用较小的 LMM 就能实现较大模型相当的性能
  • 小型 LLM:Phi-2 [33], StableLM-2 [47], and TinyLlama [59]
  • vision encoder: CLIP [44], and SigLIP [58]
  • 最好的 TinyLLaVA-3.1B 能够取得和 LLaVA-1.5、QWen-VL 等 7b 大小的模型相当的效果

小型的 LLM 模型:

  • Phi-2
  • TinyLlama
  • StableLM-2

一些大型的 LMM 模型:

  • Flamingo
  • BLIP
  • LLava
  • InstructBLIP

一些小型的 LMM 模型:

  • TinyGPT-V:使用 Phi
  • LLava-Phi:使用 LLaVA-1.5 的结构,将 LLM 换成了 Phi-2
  • MoE-LLaVA:给 LLaVA 引入了 Mixture-ofExperts [23] ,使用更少的参数量取得了和 LLaVA-1.5 相当的性能

本文作者会详细的分析如何选择模型、训练策略、数据等方面,从而构建一个高水准的小型 LMM

二、方法

TinyLLaVA 的结构是根据 LLaVA 衍生而来的

2.1 模型结构

模型结构如图 2 所示,由下面几个部分组成:

  • small-scale LLM
  • vision encoder
  • connector

在这里插入图片描述

1、small-scale LLM

small-scale LLM 的输入是一系列的向量 { h i } i = 0 N − 1 \{h_i\}_{i=0}^{N-1} {hi}i=0N1,该向量是长度为 N 且维度为 d 的 text embedding,输出是下一个预测结果 { h i } i = 1 N \{h_i\}_{i=1}^{N} {hi}i=1N

一般 LLM 模型会绑定一个 tokenizer,用于将 input sequence { y i } i = 0 N − 1 \{y_i\}_{i=0}^{N-1} {yi}i=0N1 映射到 embedding space

2、Vision encoder

vision encoder 的输入是 image X,输出是一系列 visual patch features

3、Connector

连接器的作用是将 visual patch 特征映射到 text embedding 空间,将图像特征和文本特征连接起来

2.2 训练 pipeline

训练的数据是 image-text pairs ( X , Y ) (X, Y) (X,Y),训练分为预训练和微调两个阶段

text sequence Y 是由一系列多轮对话组成,即 Y = Y q 1 , Y a 1 , . . . , Y q T , Y a T Y={Y_q^1, Y_a^1, ... , Y_q^T, Y_a^T} Y=Yq1,Ya1,...,YqT,YaT

  • 其中 T 是总共的轮数
  • Y q T Y_q^T YqT 是人类指令
  • Y a T Y_a^T YaT 是机器响应

1、预训练来实现特征对齐

本阶段的目标是为了在 embedding 空间更好的对齐 vision 和 text information

训练使用的是 image-caption 形式的数据,即 ( X , Y a ) (X, Y_a) (X,Ya),X 是图像,Y 是 caption 描述

给定目标响应 Y a = { y i } i = 1 N a Y_a=\{y_i\}_{i=1}^{N_a} Ya={yi}i=1Na,其中 N a N_a Na 是 length,作者通过下面的方式来计算生成 Y a Y_a Ya 的概率:

在这里插入图片描述

目标函数就变成了最大化上述概率的 log 似然:

在这里插入图片描述

注意:作者在预训练的时候也会让 LLM 和 vision encoder 的部分参数参与训练,因为考虑到使用小型的 LLM 如果只训练 connector 的话可能训练不好

2、有监督微调

使用图像-文本对(X, Y)进行多轮对话的原始形式。

A 表示属于 assistant responses 的所有 token 集合, A = { y ∣ y ∈ Y a t , f o r a n y t = 1, ..., T } A = \{y | y ∈ Y_a^t, for\ any\ \text{t = 1, ..., T}\} A={yyYat,for any t = 1, ..., T} Y a t Y_a^t Yat 表示在多轮对话中第 t 轮中助手的响应。A 是一个集合,包含了所有属于助手响应的标记,即从每一轮对话中提取出的助手生成的所有标记。

假设有一个多轮对话,共有三轮(T = 3),每一轮对话中助手的响应分别如下:

  • 第一轮(t=1):助手响应 “Hello, how can I help you?” 对应的标记集合可能是 {“Hello”, “,”, “how”, “can”, “I”, “help”, “you”, “?”}
  • 第二轮(t=2):助手响应 “Sure, I can do that.” 对应的标记集合可能是 {“Sure”, “,”, “I”, “can”, “do”, “that”, “.”}
  • 第三轮(t=3):助手响应 “Please wait a moment.” 对应的标记集合可能是 {“Please”, “wait”, “a”, “moment”, “.”}

那么,集合 A 将包含所有这些标记,即:
A = {“Hello”, “,”, “how”, “can”, “I”, “help”, “you”, “?”,
“Sure”, “,”, “I”, “can”, “do”, “that”, “.”,
“Please”, “wait”, “a”, “moment”}

在公式 (3) 中,这些标记用于计算对数似然函数,以优化模型参数,从而提高助手生成响应的准确性和相关性。

训练的目标函数:最大化 assistant responses 的对数似然性来逐步进行训练,作为监督微调期间的训练目标。

在这里插入图片描述

  • N 是文本序列 Y 的长度,也就是一个句子中 token 的总数。
  • y i ∈ A y_i \in A yiA 时, I ( y i ∈ A ) = 1 \mathbb{I}(y_i \in A)=1 I(yiA)=1 ,否则为0。这里 I ( y i ∈ A ) \mathbb{I}(y_i \in A) I(yiA) 是一个指示函数,用来判断当前标记 y_i 是否属于助手响应。如果是,则该项为1,否则为0。

在监督微调阶段,也允许 LLM 和视觉编码器部分参数微调。

三、模型设置

3.1 模型结构

1、小型 LLM

表 1 中展示了 LLM 的选择,作者选择了 3 个相对小型的模型,且这几个模型基本涵盖了不同小型模型的范围:

  • TinyLlama (1.1B) [59]
  • StableLM-2-1.6B(1.6B) [47]
  • Phi-2(2.7B) [33]

在这里插入图片描述

结论:

  • Phi-2 对不同的 benchmark 表现都比较好,可能是由于其参数量更大
  • Phi-2 variants 在 SQA-I 上超过了其他 variants,可能是由于其使用了 text-book 数据进行了训练
  • TinyLLaVA 在 POPE 上的表现比较好
  • 证明:大的 language 模型在 base setting 时的表现更好

在这里插入图片描述

2、Vision encoder

通过对比发现 SigLIP 和小型 LLM 的结合能够生成比 CLIP 更好的效果

效果:

在这里插入图片描述

结论:

  • 使用SigLIP [58]的模型变体相比于使用CLIP [44]的模型变体,在模型性能上有显著提升,这在TextVQA [45]和LLaVA-W [38]基准测试中尤为明显
  • SigLIP 变体具有更高的输入分辨率(384 vs. 336)和更多的视觉令牌(729 vs. 576),与CLIP相比。这些因素可能使SigLIP包含了更多有利于进行细粒度图像理解的视觉信息。

3、Connector

作者继承了 LLaVA-v1.5 中使用 MLP+GELU 的思想,同样了使用了 resampler 进行了两者效果的对比

效果对比:

在这里插入图片描述

结论:

  • MLP 效果更好

总结:

  • 经过上述对比,作者最终使用了如下搭配
  • 较大的 LLM
  • SigLIP(有更大的输入分辨率和更多的 visual token)
  • MLP

3.2 训练数据

在这里插入图片描述

作者选择了两个不同的训练数据,分别来自 LLaVA-1.5 [37] 和 ShareGPT4V [7],来验证不同数据质量对 LMM 的影响

  • LLaVA-1.5-PT: 包含 558k 的描述文字
  • LLaVA-1.5-SFT 包含总计 665k 的视觉指令调优对话,这些对话是学术导向的视觉问答(VQA)[17, 22, 28, 45] 样本、来自 LLaVA-Instruct [38] 和 ShareGPT [20] 的指令调优数据的组合。
  • ShareGPT4V-PT [7] 包含由 Share-Captioner [7] 生成的 1246k 描述文字
  • ShareGPT4V-SFT 数据集与 LLaVA-1.5-SFT [37] 类似,不同之处在于 LLaVA-1.5-SFT 中的 23K 详细描述数据被随机抽取自 100K ShareGPT4V 数据中的详细描述替换。

效果对比:

在这里插入图片描述

结论:使用 ShareGPT4V [7]

  • 当在更大规模和更多样化的ShareGPT4V [7]数据集上进行预训练时,使用TinyLlama [59]作为小规模LLM的模型变体在评估性能上相比于LLaVA-1.5数据集[37]有整体提升。然而,在POPE [55]中观察到明显的性能下降
  • 使用 ShareGPT4V [7] 时 StableLM-2和Phi-2的模型变体表现出全面的性能提升。
  • 可能是由于TinyLlama [59]的参数不足,导致其无法充分适应大量数据,从而导致部分知识退化和更多幻觉生成。

这里是常见数据集的描述:

Here, we provide a brief overview of the key aspects each benchmark focuses on when assessing model capabilities.
• VQAv2 [17] contains image-question-answer tuples with images collected from the COCO dataset [36]. The test set of
VQAv2 evaluates models’ capabilities in terms of visual recognition, visual grounding, spatial reasoning as well as language
understanding.
• GQA [22] collected its data according to the scene graph structure provided by the Visual Genome [28] dataset. The test
set of GQA extensively evaluates models’ capabilities in terms of visual and compositional reasoning.
• TextVQA [45] is an image question answering dataset that contains images with texts. The test set of TextVQA requires
models to not only recognize textual information in the given images but also to reason over them.
• ScienceQA-IMG [40] is a subset of the ScienceQA [40] benchmark that contains images. The benchmark contains
scientific questions and answers collected from lectures and textbooks. During the evaluation, the model is prompted with
questions, choices, and relevant contexts, and is asked to predict the correct answers. This benchmark mainly evaluates models’
capabilities in reasoning with respect to scientific knowledge.
• POPE [55] benchmark is designed to evaluate the hallucination issues in LMMs. Its test samples incorporate positive
and negative objects (non-existent objects), which require the model to not only recognize positive samples accurately but
also correctly identify negative samples (measuring hallucination). It effectively assesses the model’s ability to handle
hallucinations.
• MM-Vet [56] is a comprehensive benchmark that evaluates LMMs on complicated multimodal tasks. MM-Vet uses
GPT-4 [1] to evaluate the outputs generated by LMMs. Its test set evaluates LMMs on six dimensions: visual recognition,
spatial reason- ing, common knowledge deduction, language generation, visual math reasoning, and OCR recognition.
• LLaVA-W benchmark includes 24 images and 60 questions, which are collected to evaluate LMMs’ capabilities in
challenging tasks and generalizability in novel domains [38].
• MME is a LMM evaluation benchmark that measures both perception and cognition abilities on a total of 14 subtasks [16].
This benchmark is automatically evaluated by GPT-4 [1].
• MMBench is a LMM evaluation benchmark that comprehensively assess models’ capabilities across 20 dimensions [39].
This benchmark is automatically evaluated by ChatGPT [42].

3.3 训练策略

作者探究了两个不同的训练策略,即 llava-1.5 和 shareGPT4V,对比如图 3

在这里插入图片描述

  • 左侧方法来源于 LLaVA-v1.5,命名为 base,作为 base 策略

    • 在 pretrain 阶段中,只更新 connector 的参数, LLM 和 vision encoder 都冻结,训练 1 epoch,学习率为 1e-3,batch size 为 256
    • 在 SFT 阶段中,冻结 vision encoder,更新其他两个模块,训练 1 epoch,学习率为 2e-5,batch size 为 128
  • 右侧方法来源于 ShareGPT4V[7],命名为 share

    • 在 pretrain 阶段中,作者使用 base 的 pretrain 阶段训练的 connector 来初始化这里的 connector,冻结 vision encoder 的前 12 层,更新其他层的参数,学习率为 2e-5,batch size 为 256
    • 在 SFT 阶段中,和 base 的一样

效果对比:

在这里插入图片描述

结论:

  • 当模型在更大规模和更多样化的ShareGPT4V数据集[7]上进行预训练时,使用 share 可以显著提升所有变体的性能。也就是当使用小规模LLM时,微调视觉编码器可以提升性能,这与[27]中的结果相反,该结果指出在使用标准LLM时微调视觉编码器会显著降低性能。作者推测,是否微调视觉编码器能够提升性能取决于所伴随的LLM的规模和训练数据的规模,
  • 故此使用 share 的模式微调 vision encoder 效果更好

总结:tinyllava 需要使用 share 方式,其他两种更大的模型使用 share 时会引入幻觉

  • 使用 share 策略时,StableLM-2 和 Phi-2 在其他 benchmark 上有性能提升,但在 pope 上性能下降了很多(说明有更多的幻觉),share 和 base 的差别就在于 pretrain 阶段 share 训练的参数更多,所以这肯定是导致这一现象的根本原因,

  • 所以作者认为,使用较小 LLM 的模型变体在预训练阶段可能需要更多可训练参数来很好地适应更大的数据集。因此,拥有更多可训练参数使得使用 TinyLlama 的模型变体能够在ShareGPT4V上取得更好的结果。然而,在预训练期间使用更多可训练参数对于较大的模型来说可能并不完全有利。例如,虽然使用StableLM-2和Phi-2的模型变体总体上表现出性能提升,但也引入了处理幻觉方面的更差表现。

  • 结论1:在更大规模和更多样化的数据上训练模型变体使它们能够实现整体更好的性能。

  • 结论2:使用较小LLM的模型变体可能需要更多可训练参数来减少幻觉

  • 结论3:对于较大LLM的变体,使用更多可训练参数反而会导致更多幻觉。

3.4 评测 benchmark

  • four image questionanswering benchmarks: VQA-v2 [17], GQA [22], ScienceQA-IMG [40], TextVQA [45],
  • five comprehensive benchmark: POPE [55], MM-Vet [56], LLaVAW (LLaVA-Bench-in-the-Wild) [38], MME [16] , MMBench [39].

四、效果

模型命名规则:TinyLLaVA-{recipe name}-{vision encoder}-{languagemodel}.

例如:TinyLLaVA-base-C-TL 就是使用 base recipe, CLIP,TinyLlama

在这里插入图片描述

TinyLLaVA 的所有变体:

在这里插入图片描述

和其他模型的对比:

作者提出的最好的模型是 TinyLLaVA-3.1B (TinyLLaVA-share-Sig-Phi),和 7B 大小的 LLaVA-1.5 和 Qwen-VL 都取得了相当的效果

在这里插入图片描述

TinyLLaVA-3.1B 的一些可视化:

在这里插入图片描述

在这里插入图片描述

这篇关于【多模态】35、TinyLLaVA | 3.1B 的 LMM 模型就可以实现 7B LMM 模型的效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036125

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验