机器之心专栏
张傲,费豪,姚远,吉炜,黎力,刘知远,Chua Tat-Seng
机构:新加坡国立大学,清华大学
最近的多模态(对话)大模型将基于文本的 ChatGPT 的强大能力扩展到了多模态输入,实现强大的多模态语义理解,比如 GPT-4、BLIP-2、Flamingo 等。但对于很多研究者来说,训练一个多模态 GPT 代价非常昂贵。本文来自新加坡国立大学和清华大学的研究者提出了一个名为 VPGTrans 框架,以极低成本训练高性能多模态大模型。
本工作亮点摘要:
1. 极低训练成本:通过我们提出的 VPGTrans 方法,可以快速 (少于 10% 训练时间) 将已有的多模态对话模型的视觉模块迁移到新的语言模型,且达到类似或更优效果。比如,相比于从头训练视觉模块,我们可以将 BLIP-2 FlanT5-XXL 的训练开销从 19000 + 人民币缩减到不到 1000 元:
图 1:基于我们的 VPGTrans 方法的 BLIP-2 训练开销缩减对比
2. 多模态大模型定制:通过我们的 VPGTrans 框架可以根据需求为各种新的大语言模型灵活添加视觉模块。比如我们在 LLaMA-7B 和 Vicuna-7B 基础上制作了 VL-LLaMA 和 VL-Vicuna。
3. 开源多模态对话模型:我们开源了 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 架构
现有的常用的 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 的迁移:
(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 越大。在我们验证实验中,OPT-350M 和 FlanT5-base 使用 VPGTrans 互相迁移几乎和从头训练一样慢。
(3) 开源:我们使用 VPGTrans 得到了两个新的 VL-LLMs: VL-LLaMA 和 VL-Vicuna,并开源在了社区上。其中 VL-Vicuna 实现了高质量的多模态对话。欢迎小伙伴尝试:
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。
(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 可以防止掉点 + 加速收敛
(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 所示,我们的方法共分为两个阶段:
(1) 第一阶段:我们首先使用词向量转化器和原有 projector 进行融合作为新 projector 的初始化。然后用 5 倍学习率训练新 projector 一个 epoch。
(2) 第二阶段:直接正常训练 VPG 和 projector。
三、实验结果
3.1 加速比
表 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 所示,我们进行了 OPT-125M,350M,1.3B,2.7B 之间的跨 LLM 大小的迁移。在实验中,为了公平对比不同模型大小下训练过的 VPG 的视觉感知能力,我们固定住 VPG 的参数仅仅训练 linear projector 层。我们选取了 COCO Caption 上的 SPICE 指标作为视觉感知能力的衡量手段。不难发现,对于每一个给定的
,几乎都符合
越小,最终 SPICE 越高的一个现象。
3.3 大规模实验
前文实验主要是在小规模场景下验证猜想。为了证明我们方法的有效性,我们模拟 BLIP-2 的预训练过程进行了大规模实验:
表 2:真实场景下的大规模实验结果
如表 2 所示,我们的 VPGTrans 在大规模场景下依然有效。通过 OPT-2.7B 到 OPT-6.7B 的迁移,我们仅用 10.8% 的数据和不到 10% 的训练时长达到了相似或更优的效果。尤其是,我们的方法在 BLIP-2 以 FlanT5XXL 为基座 LLM 下实现了 5% 左右的训练成本控制。
四、定制自己的 VL-LLMs
我们的 VPGTrans 可以快速为任意新的 LLMs 添加视觉感知模块,从而得到一个全新的高质量 VL-LLM。在本工作,我们额外训练了一个 VL-LLaMA 和一个 VL-Vicuna。其中 VL-LLaMA 的效果如下:
表3:VL-LLaMA 的效果展示
同时,我们的 VL-Vicuna 可以进行多模态对话。我们和 MiniGPT-4 进行了简单的比较:
五、总结
在这项工作中,我们对 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 方面的实际价值。