当前位置: 首页 > news >正文

TinyGPT-V:微型视觉语言模型【VLM】

AI技术正在不断融入我们的日常生活。人工智能的一个应用包括多模态化,例如将语言与视觉模型相结合。这些视觉语言模型可以应用于视频字幕、语义搜索等任务。

本周,我将重点介绍一种名为 TinyGPT-V(Arxiv | GitHub)的最新视觉语言模型。这种多模态语言模型之所以有趣,是因为它对于大型语言模型来说非常“小”,并且可以部署在单个 GPU 上,只需 8GB 的​​ GPU 或 CPU 即可进行推理。这对于最大限度地提高人工智能模型的速度、效率和成本非常重要。

我想指出的是,我不是作者,也与模型的作者没有任何关系。然而,作为一名研究人员和从业者,我认为这是人工智能领域一个值得研究的有趣发展,尤其是因为拥有更高效的模型将解锁更多应用。让我们深入研究吧!

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、问题与解决方案

多模态模型(例如视觉语言模型)在人机交互方面取得了创纪录的性能。随着这些模型的不断改进,我们可以看到公司开始在现实场景和应用中应用这些技术。

然而,许多人工智能模型,尤其是多模态模型,需要大量的计算资源来进行模型训练和推理。时间、硬件资源和资金的物理限制是研究人员和从业人员的瓶颈。

此外,这些限制目前阻碍了多模态模型部署在某些应用程序界面中,例如边缘设备。需要研究和开发量化(更小)和高性能模型来应对这些挑战。

TinyGPT-V 是一个 2.8B 参数的视觉语言模型,可以在 24GB GPU 上进行训练,并使用 8GB GPU 或 CPU 进行推理。这很重要,因为其他最先进的“较小”视觉语言模型(例如 LLaVA1.5)仍然相对“较大”(7B 和 13B 参数)。

与其他较大的视觉语言模型进行基准测试时,TinyGPT-V 在多个任务上实现了类似的性能。总之,这项工作有助于通过减少 AI 模型的计算需求同时保持性能来提高其效率。平衡这两个目标将使视觉语言模型能够直接在设备上使用,从而提供更好的用户体验,包括减少延迟和提高鲁棒性。

2、TinyGPT-V相关工作和技术

不太大的基础视觉语言模型 (VLM)

VLM 学习图像/视频与文本之间的关系,可应用于许多常见任务,例如在照片中搜索对象(语义搜索)、在视频中提问和接收答案 (VQA) 以及更多任务。LLaVA1.5 和 MiniGPT-4 是两种多模态大型语言模型,截至 2024 年 1 月,它们都是最先进的,并且比类似的 VL 基础模型相对较小。但是,这些 VLM 仍然需要大量的 GPU 使用和训练时间。例如,作者描述了 LLaVA-v1.5 13B 参数模型的训练资源,该模型使用八个 A100 GPU 和 80GB RAM 进行 25.5 小时的训练。这对希望在野外研究、开发和应用这些模型的个人和机构来说是一个障碍。

TinyGPT-V 是旨在解决此问题的最新 VLM 之一。它为视觉和语言组件使用了两个独立的基础模型:EVA 编码器用作视觉组件,而 Phi-2 用作语言模型。简而言之,EVA 可扩展到 1B 参数视觉变换模型,该模型经过预先训练以重建蒙版图像文本特征。Phi-2 是一个 2.7B 参数语言模型,在精选的合成和网络数据集上进行训练。作者能够合并这两个模型并将它们量化为总参数大小为 2.8B。

下面显示的是 TinyGPT-V 与其他具有各种视觉语言任务的 VLM 相比的性能。值得注意的是,TinyGPT-V 的表现与 BLIP-2 相似,这可能是由于从 BLIP-2 中获取的预训练 Q-Former 模块。此外,与 TinyGPT-V 相比,InstructBLIP 似乎取得了更好的性能,尽管需要注意的是,最小的 InstructBLIP 模型是用 4B 参数训练的。根据应用的不同,这种权衡对从业者来说可能是值得的,并且需要进行额外的分析来解释这种差异。

模型训练使用的数据集包括:

  • GQA:真实世界的视觉推理和组合 QA
  • VSR:具有空间关系的英文文本-图像对
  • IconQA:使用图标图像进行视觉理解和推理
  • VizWiz:从视障人士用智能手机拍摄的照片中得出的视觉查询,并补充了 10 个答案。
  • HM:旨在检测模因中的仇恨内容的多模式集合。

TinyGPT-V 与类似的最先进的“较小”视觉语言模型进行了基准性能对比

请注意,我们应该假设作者将他们的模型表示为“TinyGPT-4”。它的性能与 BLIP-2 相当,后者有 ~3.1B 个参数。InstructBLIP 在不同任务上的表现更好,但值得注意的是,它有 ~4B 个参数。这比 TinyGPT-V 要大得多,后者有 ~2.1B 个参数。

视觉和语言特征的跨模态对齐

VLM 训练由几个目标函数组成,用于优化 a) 扩展 VLM 的效用,b) 提高​​ VLM 的总体性能,以及 c) 降低灾难性遗忘的风险。除了不同的目标函数外,还有几种模型架构或方法来学习和合并视觉和语言特征的联合表示。我们将讨论训练 TinyGPT-V 的相关层,它们在下面以块的形式显示。

TinyGPT-V 训练方案

第 1 阶段是热身预训练阶段。第二阶段是训练 LoRA 模块的预训练阶段。第三训练阶段旨在对模型进行指令调整。最后,第四训练阶段旨在针对各种多模态任务对模型进行微调。

BLIP-2 论文中描述的 Q-Former 用于从对齐的图像文本数据中学习联合表示。 Q-Former 方法针对三个目标进行了优化,以学习视觉语言表示:

  • 图像-文本匹配:学习图像和文本表示之间的细粒度对齐
  • 图像-文本对比学习:对齐图像和文本表示以最大化获得的相互信息
  • 基于图像的文本生成:训练模型以在给定输入图像的情况下生成文本

在 Q-former 层之后,他们采用了 MiniGPT-4(Vicuna 7B)中预先训练的线性投影层来加速学习。然后,他们应用线性投影层将这些特征嵌入到 Phi-2 语言模型中。

规范化

从不同模态训练较小的大规模语言模型面临着重大挑战。在训练过程中,他们发现模型输出容易受到 NaN 或 INF 值的影响。这在很大程度上归因于消失梯度问题,因为模型的可训练参数数量有限。为了解决这些问题,他们在 Phi-2 模型中应用了几种规范化程序,以确保数据具有足够的代表性以进行模型训练。

在整个 Phi-2 模型中应用了三种规范化技术,与原始实现相比略有调整。他们更新了在每个隐藏层中应用的 LayerNorm 机制,包括一个小数以实现数值稳定性。此外,他们在每个多头注意力层之后实施了 RMSNorm 作为后规范化程序。最后,他们加入了查询键规范化程序,他们认为这在低资源学习场景中很重要。

上图应用低秩自适应 (LoRA) 对 TinyGPT-V 进行微调。面板 c) 展示了如何在 TinyGPT-V 中实现 LoRA。面板 d) 展示了上一节中描述的查询键规范化方法。

3、结束语

TinyGPT-V 为提高多模态大型语言模型效率的一系列研究做出了贡献。在多个领域(例如 PEFT、量化方法和模型架构)的创新对于在不牺牲太多性能的情况下尽可能缩小模型至关重要。正如在预印本中所观察到的那样,TinyGPT-V 实现了与其他较小的 VLM 类似的性能。它与 BLIP-2 性能相匹配(最小模型有 31 亿个参数),虽然它在类似基准上的表现不如 InstructBLIP,但它的尺寸仍然较小(TinyGPT-V 有 28 亿个参数,而 InstructBLIP 有 40 亿个参数)。

对于未来的方向,肯定有一些方面可以探索以提高 TinyGPT 的性能。例如,可以应用其他 PEFT 方法进行微调。从预印本来看,尚不清楚这些模型架构决策是否纯粹基于经验性能,或者是否是为了方便实施。这应该进一步研究。

最后,在撰写本文时,预训练模型和针对指令学习进行微调的模型已经可用,而多任务模型目前是 GitHub 上的测试版本。随着开发人员和用户使用该模型,进一步的改进可以深入了解 TinyGPT-V 的其他优势和劣势。但总的来说,我认为这是一项有用的研究,有助于设计更高效的 VLM。


原文链接:TinyGPT-V:微型VLM - BimAnt

相关文章:

TinyGPT-V:微型视觉语言模型【VLM】

AI技术正在不断融入我们的日常生活。人工智能的一个应用包括多模态化,例如将语言与视觉模型相结合。这些视觉语言模型可以应用于视频字幕、语义搜索等任务。 本周,我将重点介绍一种名为 TinyGPT-V(Arxiv | GitHub)的最新视觉语言…...

pytorch自动微分

一、torch.autograd.backward(tensors, grad_tensorsNone, retain_graphNone, create_graphFalse)功能:自动求取梯度 grad_tensors:多梯度权重 # 自动求取梯度 # import torch # w torch.tensor([1.],requires_gradTrue) # x torch.tensor([2.],requir…...

TCP协议为什么是三次握手和四次挥手

1.一次握手&&二次握手 一次握手就能成功的话,也就代表着不需要进行确认,那么万一有恶意的服务器一直发送SYN,而服务器需要维护大量的连接,维护连接又需要成本,那么就很容易引发SYN洪水,导致服务器…...

利用ChatGPT提升学术论文撰写效率:从文献搜集到综述撰写的全面指南

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。 本文旨在介绍如何利用AI辅助工具,…...

智能、高效、安全,企业桌面软件管理系统,赋能企业数字化转型!提升工作效率不是梦!

为了在激烈的市场竞争中脱颖而出,实现可持续发展,数字化转型已成为企业不可或缺的战略选择!而在这一过程中,一款智能、高效、安全的企业桌面软件管理系统,如安企神,正逐步成为企业数字化转型的重要驱动力。…...

第N7周:调用Gensim库训练Word2Vec模型

本文为365天深度学习训练营 中的学习记录博客原作者:K同学啊 任务: ●1. 阅读NLP基础知识里Word2vec详解一文,了解并学习Word2vec相关知识 ●2. 创建一个.txt文件存放自定义词汇,防止其被切分 数据集:选择《人民的名义…...

基于Crontab调度,实现Linux下的定时任务执行。

文章目录 引言I 预备知识Crontab的基本组成Crontab的配置文件格式Crontab的配置文件Crontab不可引用环境变量杀死进程命令II Crontab实践案例Crontab工具的使用重启tomcat服务每分钟都打印当前时间到一个文件中30s执行一次III 常见问题并发冗余执行任务&& 和|| 和 ;的区…...

Centos系统中创建定时器完成定时任务

Centos系统中创建定时器完成定时任务 时间不一定能证明很多东西,但是一定能看透很多东西,坚信自己的选择,不动摇,使劲跑,明天会更好。 在 CentOS 上,可以使用 systemd 定时器来创建一个每十秒执行一次的任务…...

WLAN基础知识(1)

WLAN: 无线局域网,无线技术:Wi-Fi、红外、蓝牙等 WLAN设备: 胖AP: 适用于家庭等小型网络,可独立配置,如:家用Wi-Fi路由器 瘦AP: 适用于大中型企业,需要配合AC…...

网络安全实训第三天(文件上传、SQL注入漏洞)

1 文件上传漏洞 准备一句话文件wjr.php.png,进入到更换头像的界面,使用BP拦截选择文件的请求 拦截到请求后将wjr.php.png修改为wjr.php,进行转发 由上图可以查看到上传目录为网站目录下的upload/avator,查看是否上传成功 使用时间戳在线工具…...

Nginx 学习之 配置支持 IPV6 地址

目录 搭建并测试1. 下载 NG 安装包2. 安装编译工具及库文件3. 上传并解压安装包4. 编译5. 安装6. 修改配置7. 启动 NG8. 查看 IP 地址9. 测试 IP 地址9.1. 测试 IPV4 地址9.2. 测试 IPV6 地址 IPV6 测试失败原因1. curl: [globbing] error: bad range specification after pos …...

springboot+伊犁地区游客小助手-小程序—计算机毕业设计源码无偿分享需要私信20888

摘 要 提起伊犁,很多人常说,不去新疆,你就不知道中国有多美,不去伊犁,你就不知道新疆有多美。在这里你可以看到中国最美的景色。如果可可托海海是一个野性和粗犷的战士,那么那拉提一定是一个温柔和玉般的绅…...

提升工作效率的五大神器

在这个信息爆炸、节奏加速的时代,高效工作已经成为了职场人士追求的目标。如何在短时间内完成更多的工作任务,同时保持高质量的输出?答案在于合理利用工具。以下是五个能够显著提升工作效率的软件推荐,它们各自在任务管理、团队协…...

想投资现货黄金?在TMGM开户需要多少钱?

最近,越来越多的人开始关注黄金投资,希望通过黄金来对冲风险、保值增值。而选择一家可靠的交易平台是进行黄金投资的第一步。TMGM作为全球知名的外汇交易商,也为投资者提供了黄金交易服务。那么,在TMGM开户投资黄金,需…...

“零拷贝”

1、python利用0拷贝提高效率 在Python中,“零拷贝”(Zero-Copy)通常是指一种数据处理技术,它允许数据从一个地方传输到另一个地方而不需要创建额外的数据副本。这可以显著减少内存带宽的使用并提高性能,尤其是在处理大…...

[ABC367C] Enumerate Sequences 题解

[ABC367C] Enumerate Sequences 搜索。 考虑使用 DFS 深搜,对于第 i i i 个数,从 1 1 1 到 r i r_i ri​ 枚举,将 a i a_i ai​ 设为当前枚举的数,并进行下一层递归。 对所有的数填完后,判断当前和是否为 k k …...

C语言 | Leetcode C语言题解之第336题回文对

题目&#xff1a; 题解&#xff1a; #define SIZE 9470 #define N 168000 #define P 13331typedef unsigned long long ULL; ULL p[301];//p[i]存储P^ivoid init()//初始化p进制次幂数组 {int i;p[0]1;for(i1;i<300;i){p[i]p[i-1]*P;} }int** palindromePairs(char**words,…...

【SQL】仅出现一次的最大数据

目录 题目 分析 代码 题目 MyNumbers 表&#xff1a; ------------------- | Column Name | Type | ------------------- | num | int | ------------------- 该表可能包含重复项&#xff08;换句话说&#xff0c;在SQL中&#xff0c;该表没有主键&#xff09;。…...

MySQL 数据类型详解及SQL语言分类-DDL篇

在数据库开发中&#xff0c;选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型&#xff0c;包括数值类型、字符串类型和日期类型&#xff0c;并解释SQL语言的四大分类&#xff1a;DDL、DML、DQL和DCL。 1.MySQL 数据类型 SQL语言是不区分大…...

Leet Code 128-最长连续序列【Java】【哈希法】

给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a;4 …...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...