TinyLLaVA: A Framework of Small-scale Large Multimodal Models

news2024/9/25 0:37:11

发表时间:22 Feb 2024

论文链接:https://arxiv.org/pdf/2402.14289

作者单位:SKLCCSE, Institute of Artificial Intelligence, Beihang University, Beijing, China

Motivation当前的大语言模型的参数量太大了,作者想通过实验验证是否需要这么多的参数(于是做了巨多的消融实验),想尝试能不能让参数量小一点,还能达到相当的性能。证明了使用小型 LLM 的情况下,只要模块组合方式和训练数据质量高,也能取得和大型 LLM 相当的效果。

解决方法

虽然不断扩大模型的容量能够提升模型对很多不同任务的解决能力,但训练庞大的模型需要很多的资源,如 Flamingo 为 80b,PaLM-E 为 562b,所以现在有很多 LLM 的模型也在降低模型参数量,降低到 7B 或 3B,但性能没有下降很多。所以 LMM 也出现了类似的方向,如 OpenFlamingo 和 LLaVA 所做的模型是从 3b 到 15b,这样也能提升模型的效率和可部署性。基于此,本文作者提出了 TinyLLaVA,主要贡献如下:

  • 一个利用小型 LLM 实现大型 LMM 的模型框架,框架由视觉编码器、小规模 LLM 解码器和中间连接器以及training pipelines组成的框架。

  • 作者探究了不同的 vision encoder、connector、language model、training data、training recipes(配方) 组合起来的效果。

  • 证明了通过更好的训练组合方式和更高质量的数据,使用较小的 LMM 就能实现较大模型相当的性能。

结构:

因此,我们提出了 TinyLLAVA,在我们的框架中,我们训练了一系列小规模 LMM。我们最好的模型 TinyLLAVA-3.1B 比现有的 7B 模型(如 LlaVA-1.5 和 Qwen-VL)实现了更好的整体性能。

实现方式基于这个框架,我们研究了不同视觉编码器、连接模块、语言模型、训练数据和training recipes的影响。我们的经验实验表明,通过更好的训练食谱(training recipes)和质量,较小的 LMM 可以实现与更大对应物相当的性能,为研究领域设置新的基线。

两个training recipes之间的主要区别。在base recipe中,我们保持视觉编码器和小规模LLM的参数冻结,并仅更新连接器。在share recipe中,我们冻结视觉编码器的前 12 层并更新模型的其余部分。此外,我们从base recipe的connector初始化连接器(把base的connector的参数直接复制过来)。

训练 pipeline:

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

  1. 预训练来实现特征对齐:本阶段的目标是为了在 embedding 空间更好的对齐 vision 和 text information.

  2. 有监督微调,使用图像-文本对(X, Y)进行多轮对话的原始形式。

实验过程

  1. 小型 LLM: TinyLlama (1.1B), StableLM-2-1.6B(1.6B), Phi-2(2.7B) .

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

  1. Vision encoder: 通过对比发现 SigLIP 和小型 LLM 的结合能够生成比 CLIP 更好的效果. 结论:1. 使用SigLIP的模型变体相比于使用CLIP 的模型变体,在模型性能上有显著提升,这在TextVQA和LLaVA-W 基准测试中尤为明显。 2. SigLIP 变体具有更高的输入分辨率(384 vs. 336)和更多的视觉令牌(729 vs. 576),与CLIP相比。这些因素可能使 SigLIP 包含了更多有利于进行细粒度图像理解的视觉信息。

  2. Connector: 作者继承了 LLaVA-v1.5 中使用 MLP+GELU 的思想,同样与resampler进行了对比。使用重采样器作为连接器,与MLP相比,在类似的参数设置下性能下降。 结论:MLP 效果更好。

总结:经过上述对比,作者最终使用了如下搭配:

  1. 较大的 LLM

  2. Vision encoder:SigLIP(有更大的输入分辨率和更多的 visual token)

  3. Connector: MLP

结论

  • 在LLM上,基本满足越大的LLM可以取得更好的性能,即Phi-2 (2.7 B)>StableLM-2 (1.6B) > TinyLlama (1.1B)。

  • 在visual backbone上,SLIP好于CLIP,但是SLIP采用的是384分辨率,而CLIP是334分辨率,所以SLIP更好的效果可能主要是来自于更大的分辨率

  • 在projector上,目前的MLP已经足以做模态对齐。

  • 在训练数据上,使用更高质量的数据如ShareGPT4v,效果略好于LLaVA-1.5数据集。

  • 在训练方式上,预训练时微调visual encoder会取得更好的效果。

我们的研究结果表明,LMM 的设计空间在很大程度上尚未得到充分探索。我们希望我们的发现可以作为未来研究在数据缩放、训练设置和模型选择方面的基线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flask学习-day1

介绍 django是大而全,flask是轻量级的框架 django提供非常多组件:orm/session/cookie/admin/form/modelform/路由/视图/模板/中间件/分页/auth/contentype/缓存/信号/多数据库连接 flask本身没有太多的功能:路由/试视图/模板/session/中间件…

【C++ 面试 - 基础题】每日 3 题(八)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

24/8/9算法笔记 决策树VS线性回归

from sklearn.tree import DecisionTreeRegressorfrom sklearn.linear_model import LinearRegressionfrom sklearn import datasetsfrom sklearn.model_selection import train_test_split import numpy as np X,y datasets.load_diabetes(return_X_yTrue)#糖尿病数据 X_tra…

03、MySQL-DQL(数据查询语言)

目录 1、编写顺序 2、基本查询 3、条件查询 4、聚合函数 5、分组查询 6、排序查询 7、分页查询 8、执行顺序 1、编写顺序 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数2、基本查…

Cesium初探-相机

在 Cesium 中,相机(Camera)是一个非常重要的概念,它代表了用户观察 3D 场景的视角。相机不仅决定了用户看到的内容,还定义了观察的角度、距离和方向。理解 Cesium 中的相机是如何工作的对于创建有效的 3D 地图和地球应…

关于Redis的面试题(一)

一、为什么要使用Redis 内存数据库,速度很快工作单线程worker,串行化,原子操作,IO线程是多线程的。避免上下文切换使用 IO模型,天生支撑高并发kv模型,v具有类型结构具有本地方法,计算数据移动二…

政府经济学(练习题)

政府经济学(练习题) 一、单项选择题 政府经济活动的主体是( )。 A.各级政府 B.各级人大 C.各级政协 D.各级党委政府经济的依据主要是( )。 A.私人财产所有权 B.社会公共权力 C.道德劝说 D.法律制度1776年亚…

通过指令深入了解Linux 3

🌈个人主页:Yui_ 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.Linux下的基本指令1.1 more指令(有更好的平替)1.2 less指令1.3 head指令1.4 tail指令1.5 date指令…

二、Matlab图像处理基础

文章目录 一、Matlab图像处理工具箱二、图像文件的读取2.1 文件信息的读取2.2 图像文件的读取2.3 图像文件的保存2.4 图像文件的显示2.5 像素信息的显示 本章知识点总结 一、Matlab图像处理工具箱 在帮助文档可以搜索到图像处理工具箱的介绍 二、图像文件的读取 2.1 文件信息…

论文笔记:OneBit: Towards Extremely Low-bit Large Language Models

202402 arxiv 1 背景 模型量化主要通过把模型的线性层【nn.Linear】(Embedding 层和 Lm_head 层除外)转化为低精度表示实现空间压缩 此前工作的基础是利用 Round-To-Nearest(RTN)方法把高精度浮点数近似映射到附近的整数网格然而…

Sqlserver 创建只读权限用户

Sqlserver 创建只读权限用户 1、右键登录名->新建登录名 2、在常规选项卡中配置登录名、密码、数据库 3、服务器角色选项卡中配置只读角色 4、配置用户映射 5、安全对象选项卡和状态选项卡默认即可

Hadoop集群安装配置,spark集群安装配置

前提:准备3台linux服务器,并保证其网络可进行相互通信 假设三台机器IP分别为: 192.168.88.101 192.168.88.102 192.168.88.103一.配置三台服务器之间SSH免密登录,关闭防火墙,时间同步 三台服务器均执行以下1,2,3,4,5,6,8命令 1…

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出03:文件模式:二进制文件

系列文章目录 17.4.5 文件模式 程序清单17.18 append.cpp 程序清单17.19 binary.cpp 文章目录 系列文章目录17.4.5 文件模式程序清单17.18 append.cpp程序清单17.19 binary.cpp17.4.5 文件模式1.追加文件来看一个在文件尾追加数据的程序。程序清单17.18 append.cpp2.二进制文…

05_ Electron 自定义菜单、主进程与渲染进程通信

Electron 自定义菜单、主进程与渲染进程通信 一、定义顶部菜单二、Electron 自定义右键菜单1、使用 electron/remote 模块实现 三、 Electron 主进程和渲染进程通信场景1:渲染进程给主进程发送异步消息场景2:渲染进程给主进程发送异步消息,主…

Vue3使用ECharts的自定义堆叠条形图(纵向)

先上效果图 展示区域 <div id"main" style"height: 300px; width: 100%"></div> 配置信息 每个种类的data数组是number数组&#xff0c;这里我使用的变量是从接口返回的数据&#xff0c;为了方便理解&#xff0c;年度考核的绿色种类&#x…

AT32F421驱动BLDC 配合上位机控制与调参

AT32F421驱动BLDC 配合上位机控制与调参 &#x1f527;AT32 电机控制与调参上位机软件&#xff1a;ArteryMotorMonitor&#xff1a;https://www.arterytek.com/cn/support/motor_control.jsp?index0&#x1f33f;测试电机参数&#xff1a;2204-12N14P&#xff0c;无感BLDC&…

Summer School science communication project--Laptop Selection Suggestion

目录 Introduction Audiance Usage CPU What is a central processing unit (CPU) Notable makers of CPUs GPU Graphics Card: GPU The classifications of graphics cards The brands of graphics cards Dedicated Graphics Cards GeForce MX Series: GeForc…

渠道刷量怎么办?Xinstall来帮你一键识破!

在App推广的道路上&#xff0c;数据是我们最得力的助手&#xff0c;也是我们最头疼的难题。每日下载量、安装量、注册量……这些看似简单的数字&#xff0c;背后却隐藏着无数的故事。哪个渠道在默默发力&#xff1f;哪个渠道又在浑水摸鱼&#xff1f;这一切&#xff0c;都需要我…

【生信入门linux篇】如何安装一个linux虚拟机用于学习

一.虚拟机 虚拟机&#xff08;Virtual Machine&#xff0c;简称VM&#xff09;是一种软件实现的计算机系统&#xff0c;它能够在物理计算机上模拟出多个独立的计算机环境。每个虚拟机都可以运行自己的操作系统和应用程序&#xff0c;就像在独立的物理计算机上一样。虚拟机技术…

(十)Dockerfile详解及使用教程

一、Dockerfile是什么 1、简介 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本 官网地址&#xff1a;https://docs.docker.com/engine/reference/builder/ 构建步骤 编写Dockerfile文件docker build命令构建镜像docke…