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题回文对
题目: 题解: #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 表: ------------------- | Column Name | Type | ------------------- | num | int | ------------------- 该表可能包含重复项(换句话说,在SQL中,该表没有主键)。…...

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

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

网络协议(概念版)
通讯:首先要得知对方的IP地址。 最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收。 如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理;如果目标MAC地址不是自己,…...

Pulsar官方文档学习笔记——消息机制
pulsar 基于3.x最新官方文档学习记录 概念与架构 典型的推送订阅模式。生产者发送消息,消费者订阅topic消费信息并回应ACK。订阅创建后,Pulsar会保留所有消息。仅消息被所有订阅 成功消费了才会丢弃(可以配置消息保留机制保留一定量&#…...

PyTorch--残差网络(ResNet)在CIFAR-10数据集进行图像分类
完整代码 import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms# Device configuration device torch.device(cuda if torch.cuda.is_available() else cpu)# Hyper-parameters num_epochs 80 batch_size 100 learning_rate…...

ETAS工具链自动化实战指南<一>
----自动化不仅是一种技术,更是一种思维方式,它将帮助我们在快节奏的工作环境中保持领先! 目录 往期推荐 场景一:SWC 之间 port自动连接 命令示例 参数说明 场景二:SWC与ECU 自动映射 命令示例 参数说明 场景三&…...

疫情期间我面试了13家企业软件测试岗位,一些面试题整理
项目的测试流程 拿到需求文档后,写测试用例 审核测试用例 等待开发包 部署测试环境 冒烟测试(网页架构图) 页面初始化测试(查看数据库中的数据内容和页面展示的内容是否一致,并且是否按照某些顺序排列)…...

PINCE——Linux 原生游戏内存修改器,一款替代 Cheat Engine 的强大游戏修改器,Linux 游戏玩家必备神器!
PINCE——Linux 原生游戏内存修改器,一款替代 Cheat Engine 的强大游戏修改器,Linux 游戏玩家必备神器! PINCE 是 GNU Project Debugger(GDB) 的前端/反向工程工具,常用作程序调试器,主要用于游戏领域,修改…...

为IntelliJ IDEA安装插件
安装插件 插件是开发工具的扩展程序,通常由第三方提供,当安装了插件后,原开发工作的菜单、按钮等开发环境可能会发生变化,例如出现了新的菜单项,或出现了新的按钮,甚至一些全新的编码方式,通常…...

ES6 Promise
ES6 Promise 对象 一、概述 是异步编程的一种解决方案。 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 Promise 状态 状态的特点 Promise 异步操作有三种状态:pending(进行中)、fulfilled(…...

html+css 实现hover 凹陷按钮
前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、原理解析💡1.这是一个,hover时凹陷的效果。每个按钮是一个button…...

什么是负载均衡?负载均衡器如何运作?
往期文章 负载均衡器:LVS、Nginx、HAproxy如何选择? 目录 往期文章什么是负载均衡?为什么需要负载均衡?负载均衡工作原理?静态负载均衡算法动态负载均衡算法 参考 什么是负载均衡? 负载均衡是一种网络技术…...