VPGTrans: 10%的成本定制你自己的类GPT-4多模态大模型

2023-05-16

最近的多模态(对话)大模型将基于文本的ChatGPT的强大能力扩展到了多模态输入,实现强大的多模态语义理解,比如GPT-4、BLIP-2、Flamingo等。但咱们普通玩家训练一个多模态GPT代价非常昂贵。来自于新加坡国立大学和清华大学的研究工作提出一个VPGTrans框架,帮助小伙伴们实现极低成本训练一个高性能多模态大模型。

各个大模型的研究测试传送门

阿里通义千问传送门:
https://tongyi.aliyun.com

百度文心一言传送门:
https://yiyan.baidu.com

ChatGPT传送门(免墙,可直接测试):
https://yeschat.cn

GPT-4传送门(免墙,可直接测试,遇到浏览器警告点高级/继续访问即可):
https://gpt4test.com

论文题目:
VPGTrans:Transfer Visual Prompt Generator across LLMs

论文作者:
张傲,费豪,姚远,吉炜,黎力,刘知远,Chua Tat-Seng

论文单位:
新加坡国立大学,清华大学

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

代码:
https://github.com/VPGTrans/VPGTrans

多模态对话模型Demo:
https://vpgtrans.github.io/

本工作亮点摘要:

1. 极低训练成本:

通过我们提出的VPGTrans方法,可以快速(少于10%训练时间)将已有的多模态对话模型的视觉模块迁移到新的语言模型,且达到类似或更优效果。比如,相比于从头训练视觉模块,我们可以将BLIP-2 FlanT5-XXL的训练开销从19000+人民币缩减到不到1000元:

图 1:基于我们的VPGTrans方法的BLIP-2训练开销缩减对比
▲图 1:基于我们的VPGTrans方法的BLIP-2训练开销缩减对比

2. 多模态大模型定制:

通过我们的VPGTrans框架可以根据需求为各种新的大语言模型灵活添加视觉模块。比如我们在LLaMA-7B和Vicuna-7B基础上制作了VL-LLaMA和VL-Vicuna。

3. 开源多模态对话模型:

我们开源了VL-Vicuna,类GPT4多模态对话模型,可实现高质量的多模态对话:

图 2:VL-Vicuna的交互实例
▲图 2:VL-Vicuna的交互实例

一、动机介绍

1.1 背景

2023年是AI元年,以ChatGPT为代表的大语言模型(LLM)大火。LLM除了在自然语言领域显示出巨大的潜力之外,也开始逐渐辐射到其他相关领域。比如,LLM在多模态理解领域掀起了一股从传统预训练视觉语言模型(VLM)到基于大语言模型的视觉语言模型(VL-LLM)的变革。通过为LLM接入视觉模块,VL-LLM可以继承已有LLM的知识,零样本泛化能力,推理能力和规划能力等。相关模型有BLIP-2[1],Flamingo[2],PALM-E等。

图 3:常用的VL-LLM架构
▲图 3:常用的VL-LLM架构

现有的常用的VL-LLM基本采取图3所示的架构:在一个基座LLM基础上训练一个视觉soft prompt生成模块(Visual Prompt Generator, VPG),以及一个进行维度变换的线性层(Projector)。在参数规模上,LLM一般占主要部分(比如11B),VPG占次要部分(比如1.2B),Projector最小(4M)。在训练过程中,LLM参数一般不会被更新,或者仅仅更新非常少量的参数。可训练参数主要来自于VPG和projector。

1.2 动机

实际上,即便基座LLM的参数冻结不训,但由于LLM的大参数量,训练一个VL-LLM的关键开销依然在于加载基座LLM。因此训练一个VL-LLM依然无法避免极大的计算代价。比如,要得到BLIP-2(基座LLM为FlanT5-XXL)需要付出超过600个小时的A100训练时长。如果租用亚马逊的A100-40G机器,大概需要将近2万元人民币的费用。既然从零训练一个VPG代价如此昂贵,那么我们开始思考能否把一个已有的VPG迁移到新的LLM上来节省开销。

图 4:VPG迁移: 跨LLM大小迁移和跨LLM类型迁移
▲图 4:VPG迁移: 跨LLM大小迁移和跨LLM类型迁移

如图4所示,我们主要探索了两种类型的VPG的迁移:

(1)跨LLM大小迁移 (TaS): 比如从OPT-2.7B到OPT-6.7B。

(2)跨LLM类型迁移 (TaT): 比如从OPT到FlanT5

其中TaS的意义在于:在LLM相关科研中,我们通常需要在小LLM上调参,再扩展到大LLM。有了TaS,我们可以在调参之后,把小LLM上已经训好的VPG直接迁移到大LLM上。TaT的意义在于:不同功能种类的LLM层出不穷,比如今天有了LLaMA,明天又有了Alpaca和Vicuna。TaT可以让我们利用已有的VPG快速为新语言模型添加视觉感知能力。

1.3 贡献

(1) 提出高效的方法: 我们首先通过一系列的探究实验,探究了影响VPG迁移效率的关键因素。根据探索实验发现,我们提出了一个两阶段的高效迁移框架VPGTrans。该框架可以大幅度缩减训练VL-LLM所需的计算开销和需要的训练数据。比如,相比于从头训练,我们通过BLIP-2 OPT-2.7B到6.7B的VPG迁移,可以仅用大约10%的数据和计算时间就达成各个数据集相似或更好的效果(图1)。训练花销从17901人民币到1673元。

(2) 得到有趣的发现: 我们同时提供了TaS和TaT场景下一些有趣的发现,并尝试给出解释: a) TaS场景下,使用VPGTrans从小到大迁移不会影响最终模型效果。b) TaS场景下,越小的语言模型上训练的VPG,迁移到大模型时效率越高,最终效果越好。c) TaT场景下,越小的模型之间迁移的gap越大。在我们验证实验中,OPT350M和FlanT5-base使用VPGTrans互相迁移几乎和从头训练一样慢。

(3) 实现社区回馈: 我们使用VPGTrans得到了两个新的VL-LLMs: VL-LLaMA和VL-Vicuna,并开源在了社区上。其中VL-Vicuna实现了类GPT4的高质量的多模态对话。欢迎小伙伴尝试:https://vpgtrans.github.io/.

二、高效率的VPG迁移方案: VPGTrans

首先我们进行一系列的探索验证实验,分析如何最大化对于VPG的迁移效率。接着我们基于这些重要观察提出一个解决方案。

2.1 探究实验

我们选取BLIP-2架构作为我们的基础模型,预训练语料采用COCO和SBU,总共1.4M图文对。下游任务采用COCO Caption, NoCaps, VQAv2, GQA和OK-VQA的zero-shot设定进行评测(对caption任务并非严格zero-shot)。下面是我们的关键发现:

(1)直接继承一个训练好的VPG可以加速收敛,但效果有限:我们发现,直接迁移一个LLM上训练好的VPG到大LLM可以加速模型收敛,但加速效果有限,且收敛后模型效果相比于从头训练VPG会掉点(图5的VQAv2、GQA蓝线最高点均低于橘线)。我们猜测,这个掉点是由于随机初始化的projector会在训练起始阶段损伤VPG中已有的视觉感知能力。

图 5:VPG inherit (蓝线): 直接继承训练好的VPG。train from scratch (橘线):从头训练VPG。only linear (绿线):只训练linear projector不训练VPG。
▲图 5:VPG inherit (蓝线): 直接继承训练好的VPG。train from scratch (橘线):从头训练VPG。only linear (绿线):只训练linear projector不训练VPG。

(2)先warm-up训练projector可以防止掉点,且进一步加速收敛:于是,我们固定住VPG和LLM,先warm-up训练projector 3个epoch,再解冻VPG进行下一步训练。我们发现,这样不仅仅可以避免掉点情况,还能够进一步加速VPG收敛(图6)。但值得强调的是,由于训练的主要开销在LLM(参数巨多),仅仅训练projector的开销不会比同时训练VPG和projector的开销小太多。所以,我们开始探究加速projector warm-up的关键技术。

图6:先warm-up训练projector可以防止掉点+加速收敛
▲图6:先warm-up训练projector可以防止掉点+加速收敛

(3)词向量转化器初始化可以加速projector warm-up:首先,VPG是通过把图像转化为LLM可以理解的soft prompt来产生效果的。而soft prompt的使用方式和词向量其实是非常相似的,都是直接输入语言模型来提示模型产生对应内容。所以,我们使用词向量来作为soft prompt的一个代理,训练了一个到的词向量转化器(一个线性层)。然后,我们将词向量转化器和上的projector融合作为projector的初始化。通过这个初始化,我们可以将projector的warm-up训练由3个epoch减为2个epoch。

(4)projector可以在超大学习率下快速收敛:我们进一步实验发现,projector由于其参数量较少,可以使用5倍的正常学习率进行训练而不崩溃。通过5倍学习率的训练,projector warm-up可以进一步被缩短到1个epoch。

(5)一个附加发现: 虽然projector warm-up很重要,但仅训练projector是不够的。尤其在caption任务上面,仅仅训练projector的效果要比同时训练VPG的效果差一截 (图5绿线在COCO Caption和NoCaps均远低于蓝线)。这也就意味着,仅仅训练projector会导致欠拟合,也就是无法充分对齐到训练数据。

2.2 我们所提出的方法

图 7:VPGTrans框架: (1) 一阶段:projector的warm-up (2) 二阶段: 整体微调
▲图 7:VPGTrans框架: (1) 一阶段:projector的warm-up (2) 二阶段: 整体微调

如图7所示,我们的方法共分为两个阶段: (1)第一阶段: 我们首先使用词向量转化器和原有projector进行融合作为新projector的初始化,然后用5倍学习率训练新projector一个epoch。 (2) 第二阶段:直接正常训练VPG和projector。

三、实验结果

3.1 加速比

表1:我们的VPGTrans的相比于从头训练在各个数据集的加速比
▲表1:我们的VPGTrans的相比于从头训练在各个数据集的加速比

如表1所示,我们测试了不同迁移类型下,VPGTrans在不同数据集上的加速比。VPGTrans在某指定数据集A上的加速比是通过从头训练达到A上最佳效果a的轮数除以VPGTrans在A上效果超过a的最小训练轮数得到。比如,从头在OPT-2.7B上训练VPG,在COCO caption达到最佳效果需要10个epoch,但从OPT-125M迁移VPG到OPT-2.7B,仅需1个epoch就能达到该最佳效果。则加速比为10/1=10倍。我们可以看到,无论是在TaS还是在TaT场景下,我们的VPGTrans都可以实现稳定的加速。

3.2 有趣的发现

我们选取了一个比较有趣的发现进行了说明,其他更多更有意思的发现请参照我们的论文。

TaS场景下,越小的语言模型上训练的VPG,迁移起来效率越高,最后模型效果越好。参考表1,我们可以发现OPT-1.3B到OPT-2.7B的加速比要远小于OPT-125M、OPT-350M到OPT-2.7b的加速比。我们尝试提供了一个解释:一般越大的语言模型,由于其文本空间的维度更高,会更容易损害VPG(VPG一般都是类似于CLIP的预训练模型)本身的视觉感知能力。我们通过类似于linear probing的方式进行了验证:

图 8:仅训练linear projector层的跨LLM大小迁移 (模拟linear probing)
▲图 8:仅训练linear projector层的跨LLM大小迁移 (模拟linear probing)

如图8所示,我们进行了OPT-125M,350M,1.3B,2.7B之间的跨LLM大小的迁移。在实验中,为了公平对比不同模型大小下训练过的VPG的视觉感知能力,我们固定住VPG的参数仅仅训练linear projector层。我们选取了COCO Caption上的SPICE指标作为视觉感知能力的衡量手段。不难发现,对于每一个给定的,几乎都符合越小,最终SPICE越高的一个现象。

3.3 大规模实验

前文实验主要是在小规模场景下验证猜想。为了证明我们的方法的有效性,我们模拟BLIP-2的预训练过程进行了大规模实验:

表2:真实场景下的大规模实验结果
▲表2:真实场景下的大规模实验结果

如表2所示,我们的VPGTrans在大规模场景下依然有效。通过OPT-2.7B到OPT-6.7B的迁移,我们仅用10.8%的数据和不到10%的训练时长达到了相似或更优的效果。尤其是,我们的方法在BLIP-2 以FlanT5XXL为基座LLM下实现了4%的训练成本控制。

四、定制您的VL-LLMs

我们的VPGTrans可以快速为任意新的LLMs添加视觉感知模块,从而得到一个全新的高质量VL-LLM。在本工作,我们额外训练了一个VL-LLaMA和一个VL-Vicuna。其中VL-LLaMA的效果如下:

表3:VL-LLaMA的效果展示
▲表3:VL-LLaMA的效果展示

同时,我们的VL-Vicuna可以进行类GPT4的多模态对话。我们和MiniGPT-4进行了简单的比较:

alt alt

五、总结

在这项工作中,我们对 VPG 在 LLM 之间的可迁移性问题进行了全面调查。我们首先探讨了最大化迁移效率的关键因素。基于关键观察,我们提出了一种新颖的两阶段迁移框架,即 VPGTrans。它可以在显著降低训练成本的同时,实现相当或更好的性能。通过 VPGTrans,我们实现了从 BLIP-2 OPT 2.7B 到 BLIP-2 OPT 6.7B 的 VPG 迁移。相较于从零开始连接 VPG 到 OPT 6.7B,VPGTrans仅需10.7%训练数据和不到10%的训练时长。此外,我们展示并讨论了一系列有趣发现及其背后的可能原因。最后,我们通过训练VL-LLaMA和LL-Vicuna,展示了我们的 VPGTrans 在定制新的 VL-LLM 方面的实际价值。

本文由 mdnice 多平台发布

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VPGTrans: 10%的成本定制你自己的类GPT-4多模态大模型 的相关文章

  • minikube 及安装

    和 kind 一样 xff0c minikube是一个在PC机上本地部署单节点Kubernetes集群的工具 xff0c 可以作为K8S的学习 xff0c 测试环境 在linux上安装minikube xff1a span class to
  • linux系统进程间通信方式(三):管道

    进程间通信方式之管道 管道通常指无名管道 xff08 PIPE xff09 或有名管道 xff08 FIFO xff09 xff0c 但实际上套接字也都是管道 接口 PIPE和FIFO的相关接口如下表格 功能创建无名管道 xff1a PIP
  • Python3 注释

    前言 确保对模块 函数 方法和行内注释使用正确的风格 xff08 文末送读者福利 xff09 Python 中的注释有单行注释和多行注释 Python 中单行注释以 开头 xff0c 例如 xff1a 这是一个注释 print Hello
  • 2023!七大最佳Python书籍,入门到精通推荐!

    前言 什么是Python xff1f Python是一种高级编程语言 xff0c 用于使用正确的工具和库文件进行Web开发 xff0c 桌面应用程序 xff0c 人工智能 xff0c OS xff0c 原型 xff0c GUI应用 xff0
  • 树莓派3B+UbuntuMate18.04安装ROS

    最近一直在配置树莓派的各种环境 xff0c 今天了解到可以搭载ROS然后控制摄像头 xff0c 激光雷达等 xff0c 就开始了疯狂踩坑 xff0c 记录问题及解决办法如下 配置 xff1a 树莓派3B 43 xff0c UbuntuMAT
  • 电脑技巧:Win10无线投屏功能介绍

    Win10操作系统可以将电脑中的内容投屏到其他显示设备 xff0c 比如将电脑屏幕投屏到电视上 xff0c 这是通过Miracast技术来实现的 其实Win10电脑自身也可以作为被投屏的那一方 xff01 比如可以将手机屏幕投屏到电脑屏幕上
  • 收集一些程序员励志经典名言

    1 作为一个真正的程序员 xff0c 首先应该尊重编程 xff0c 热爱你所写下的程序 xff0c 他是你的伙伴 xff0c 而不是工具 2 程序员可以让步 xff0c 却不可以退缩 xff0c 可以羞涩 xff0c 却不可以软弱 xff0
  • SVN连接不上,提示:Error running context: The server unexpectedly closed the connection.

    结果 xff0c 询问一起其他伙伴 xff0c 人家都能正常使用 最终找到的问题是 xff1a 把TortoiseSVN gt Settings gt Network gt Enable Proxy Server 这个勾选项取消勾选 就可以
  • 组装机怎么重装系统?组装机U盘装系统方法

    很多用户都会给自己的电脑进行重装 xff0c 这样就能使用上自己购买的硬件配置 组装好的电脑第一步要做的就是装系统 xff0c 下面小编就给大家整理了新电脑用U盘装系统的方法 xff0c 希望可以帮到大家 U盘重装系统Win10下载 系统之
  • 电脑老系统怎么换新系统?

    现在还有好多用户家里装的是旧电脑 xff0c 使用的系统也都是很久之前的系统了 xff0c 就有用户想给电脑换新系统 xff0c 但是不知道具体怎么操作 针对这个问题 xff0c 小编为大家带来详细的重装教程 xff0c 有需要的用户可以看
  • 介绍snipaste截图快捷键

    snipaste是非常受人欢迎的一款截图软件 xff0c 体积小巧 xff0c 功能强大 为了方便使用 xff0c 很多用户都会设置一些快捷键 xff0c 那么snipaste怎么设置快捷键呢 xff1f 下面就来看看具体的设置步骤 设置方
  • 教教大家vmware虚拟机安装win11的方法

    vmware是大家经常使用的虚拟机软件 xff0c 在其上面可以安装多种操作系统不管是windows系统 linux系统还是mac系统 那么win11系统也能安装吗 xff1f 当然是可以的 vmware安装Win11教程 1 首先我们需要
  • freertos的可视化追踪和运行时间统计功能

    简介 很多时候 xff0c 我们想要知道rtos任务目前的运行情况 xff0c 比如任务的状态 优先级 cpu的占用率等等 xff0c 或者我们想要知道当前正系统在运行的是哪一个任务 xff0c 又或者我们想要知道某一个任务运行了多长时间
  • 麻将算法(上)

    一 麻将规则 xff08 云南昭通麻将 xff09 1 牌 1 万 筒 和 条 三房牌 xff0c 各36张 xff0c 共108张牌 xff1b 2 只能 碰 杠 胡 xff0c 不能吃牌 3 4人进行游戏 xff1b 4 游戏开始时 x
  • DIR dirp对目录的操作

    xfeff xfeff DIR函数以及dirp函数 DIR opendir const char pathname 即打开文件目录 xff0c 返回的就是指向DIR结构体的指针 返回该指针以后 xff0c 就可以被以下函数来使用了 xff0
  • SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:10000

    在尝试python socket编程的时候 xff0c 首先将编写好的客户端和服务器端都部署在本地进行 xff0c 并且使用同一台宿主机 客户端使用127 0 0 1 xff0c 服务器端使用0 0 0 0或者直接 刚开始我端口是随意选择的
  • NVIDIA Jetson Xavier NX——入手安装

    Google search sd card formatter for formatting SD card Google search balenaetcher for flashing JetPack SDK Google search
  • positional encoding位置编码详解:绝对位置与相对位置编码对比

    本文转载自公众号 夕小瑶的卖萌屋 xff0c 专业带逛互联网算法圈的神操作 我是传送门 关注后 xff0c 回复以下口令 xff1a 回复 789 xff1a 领取深度学习全栈手册 xff08 含NLP CV海量综述 必刷论文解读 xff0
  • Pytorch与Tensorflow,哪个更适合你?

    本文转载自公众号 夕小瑶的卖萌屋 xff0c 专业带逛互联网算法圈的神操作 我是传送门 关注后 xff0c 回复以下口令 xff1a 回复 789 xff1a 领取深度学习全栈手册 xff08 含NLP CV海量综述 必刷论文解读 xff0
  • 抖音算法推荐机制详解(科普向)

    本文转载自公众号 夕小瑶的卖萌屋 xff0c 专业带逛互联网算法圈的神操作 我是传送门 关注后 xff0c 回复以下口令 xff1a 回复 789 xff1a 领取深度学习全栈手册 xff08 含NLP CV海量综述 必刷论文解读 xff0

随机推荐