摘要
在开发新的视觉语言LLM(VL-LLM)时,通过从头开始进行大量的图像-文本对预训练可能非常耗时,因此,将现有LLM与相对轻量级的视觉提示生成器(VPG)连接起来成为一种可行的范式。但是,进一步调整VL-LLM的VPG部分仍然具有必不可少的计算成本,即需要数千个GPU小时和数百万个训练数据。一种替代解决方案是将VPG从任意现有VL-LLM迁移到目标VL-LLM。
在这项工作中,我们首次研究了VPG在各LLM间的可迁移性,并探索一种解决方案,以降低VPG迁移的成本。我们首先研究了不同LLM尺寸(例如,从小LLM到大LLM)和不同LLM结构的VPG迁移,通过该研究,我们总结出最大化迁移效率的关键因素。根据我们的观察,我们设计了一个名为VPGTrans的两阶段迁移框架,这是一种很简单却非常有效的方法。通过广泛的实验,我们证明了VPGTrans有助于显着加快迁移学习过程而不会损害性能。值得注意的是,与将VPG连接到的
O
P
T
6.7
B
OPT_{6.7B}
OPT6.7B并从头训练相比,从BLIP-2
O
P
T
2.7
B
OPT_{2.7B}
OPT2.7B到BLIP-2
O
P
T
6.7
B
OPT_{6.7B}
OPT6.7B的VPG迁移是有效的,并具有10倍的加速且仅需10.7%的训练数据。此外,我们还提供并讨论了该实验背后一系列有趣的发现和潜在的理由。最后,我们通过自定义两个新的VL-LLM,包括VL-LLaMA和VLVicuna,展示了VPGTrans方法的实践价值。借助我们的VPGTrans,可以以较低的成本构建一种新的高性能VL-LLM。
1.介绍
Background。近年来,大型语言模型(LLM)在类人人工智能方面有了很大的增长。通过扩大模型大小(例如,从11B到175B),LLMS具有理解人类语言的惊人能力。通过与视觉等其他模态相链接,基于文本的LLM会进一步增强,从而得到vision-language LLMs(VL-LLM),例如 ,BLIP-2,Flamingo,GPT-4等多模态对话系统,以及用于实体AI系统的PaLM-E。为了构建VL-LLM,在LLM的底部添加了基于输入图像/视频产生软提示的视觉提示生成器(VPG)模块(参见图1),以弥补视觉和语言方式之间的差距。当前,这种架构经常被许多流行的VL-LLM采用。例如,BLIP-2对CLIP-ViT与Q-Former组合进行预训练,来作为VPG;PaLM-E探索了几种不同结构的VPG,例如 ViT或OSRT。为了获得最终的VL-LLM,需要对VPG进行微调。理想情况下,无需使用目标数据来更新整个架构,可以完全冻住LLM参数,只有相对轻量级的VPG模块进行(完全或部分)更新。
Motivation。但是,构建一个VL-LLM不可避免需要消耗较大计算成本。因为即使LLM被冻住,微调轻量级VPG和投影层仍然需要额外巨大的计算资源来覆盖占主开销的LLM加载。例如,在超过1亿个图像文本对数据上,对
B
L
I
P
2
−
F
l
a
n
T
5
X
X
L
BLIP2-FlanT5_{XXL}
BLIP2−FlanT5XXL的VPG和投影层微调仍然需要超过600 A100-GPU小时,其中LLM占GPU显存消耗的70%。因此,每当使用任何新出现的LLM开发新的VL-LLM时,训练VPG和投影层仍然是昂贵的。一种方式是将预训练的VPG(这是可训练的部分的主体)从现有的VL-LLM转移到新的LLM,而不是从头进行训练,这为缓解计算成本问题提供了有希望的解决方案。直觉上,所有VL-LLM字面意思上都可以共享并利用相同的VPG结构,这使得VPG迁移在理论上变得可行。因此,在这项工作中,我们研究了VPG跨LLM进行迁移的潜力。
Proposal。具体而言,本文研究了VPG在不同LLM的可迁移性:1)不同大小(相同类型),即在不同大小的LLM间迁移;2)跨不同类型的LLM迁移,如图1所示。
- [Transfer across LLM size]。与LLM相关研究的典型实践是在较小的模型上(例如 O P T 2.7 B OPT_{2.7B} OPT2.7B)验证训练策略和超参数,然后迁移到较大的模型(例如 O P T 6.7 B OPT_{6.7B} OPT6.7B)。因此,值得探讨的是是否可以将在较小LLM上训练的VPG迁移到较大的LLM上,从而减少计算成本和数据,并保持可比的性能。
- [Transfer across LLM type]。使用在某个类型LLM上微调好的VPG,该VPG是否也可以进一步迁移到其他具有不同结构的LLM上(例如,decoder v.s. encoder-decoder)。如果可以实现转移,如何提高效率?
我们对这两个问题进行了一系列探索性分析(参见第3.1节),并确定了决定迁移效率的关键因素。根据我们的观察,我们设计了一个两阶段的转移学习框架(参见第3.2节),即VPGTrans,其中包括投影层的warm-up和直接微调。对于第1阶段,我们发现投影层的warm-up可以有效地减少将预训练的VPG微调到新LLM的训练步骤,并避免由于需要适应新的LLM而导致潜在性能下降。为了实现有效的warm-up,通过在两个LLM的词嵌入转换器的帮助下初始化投影层,然后以非常大的学习率进行训练。对于2阶段,VPG和投影层都进行正常的微调。尽管它很简单,但VPGTrans还是能够显着加快VPG迁移过程而不会损害性能。
Results and Findings。通过对上述两种情况的广泛实验(参见第4节和第5节),我们获得了以下主要观察结果:
- VPGTrans有助于在同类型的LLM通过small-to-large的迁移达到10倍加速,同时达到可比甚至更好的性能,另外还可以减少训练所需数据,并进行更稳定的训练。
- VPGTrans也可以在不同类型的模型间达到5倍加速。
- 值得注意的是,我们的VPGTrans有助于实现 B L I P − 2 V i T − G O P T 2.7 B → 6.7 B BLIP-2~ViT-G~OPT_{2.7B→6.7B} BLIP−2 ViT−G OPT2.7B→6.7B的迁移,而GPU小时的少于原来的10%,同时训练数据少于原始模型训练所需的10.7%。
- 此外,我们的框架甚至可以在大多数数据集上胜过原始的 B L I P − 2 O P T 6.7 B BLIP-2~OPT_{6.7B} BLIP−2 OPT6.7B,在VQA(v2)上有2.9的提升,在OKVQA上有3.4的提升。
我们的调查进一步揭示了一些有趣的发现,我们为此提供了可能的解释:
- 当在不同模型大小间迁移时:1)从较小的LLM迁移到较大的LLM并不会损害最终性能;2)VPG从较小的LLM(例如A)转移到较大的LLM(例如B)大致遵循“A越小越好”的这一违反直觉的原则。
- 此外,当在不同模型类型间迁移时,有效的VPG迁移只能在大LLM之间实现,而小的LLM不适合使用我们的VPGTrans。
Contributions。在这项研究中,我们首次表明可以实现LLM间的高效VPG迁移,这表明可以以较低的成本构建一个新的VL-LLM,如图2所示。本文的主要贡献如下:
- Effective approach。我们研究了VPG迁移效率的关键因素,并提出了两阶段迁移框架VPGTrans。同时,该方法有助于实现LLM间高效的VPG迁移,同时使用较少的训练数据并改进了任务。
- Intriguing findings。通过探索跨LLM间的VPG迁移,我们揭示了一些有趣和关键的发现,并阐明了可能的解释,这些解释将启发这一方向的进一步研究。
- Open source。我们展示了如何使用我们的VPGTrans自定义新的类GPT-4的VL-LLM(参见第6节),并开源了两个多模态模型:VL-LLaMA和VL-Vicuna。所有代码和模型均在https://github.com/VPGTrans/VPGTrans上打开。
2.Preliminary
本节将首先就现有的VL-LLM进行简要介绍,然后详细介绍这些VL-LLM的探索性分析设置。
2.1 VL-LLM
Architecture。如图1所示,当前的VL-LLM大多采用了常见结构,包括视觉提示生成器(VPG),投影层和LLM。通常,VPG以图像/视频作为输入,并将视觉输入编码为固定的软提示。然后,采用线性投影层将软提示的维度与LLM的单词嵌入维度保持一致。最后,LLM将根据从软提示传递的输入特征生成句子。我们在表1中列出了最近的一些代表性VL-LLM。
Training Paradigm。给定一个VL-LLM,通常会完全或部分训练VPG和线性投影层。例如,PaLM-E在预训练阶段更新VPG的所有参数,而BLIP-2和Flamingo冻结了ViT并调整其Q-Former和Resampler。作为整个结构的主要部分,LLM在训练期间基本都是被冻结。Flamingo是一个例外,它在其LLM中增加了一小部分可训练的门控交叉注意力层(Flamingo-80B只有10B参数)。但是,后来的工作表明,将所有LLM冻结也可以实现出色的zero-shot性能,但计算成本大大降低。例如,与Flamingo-80B相比,
B
L
I
P
−
2
F
l
a
n
T
5
X
X
L
BLIP-2 FlanT5_{XXL}
BLIP−2FlanT5XXL (11B) 在VQAv2上可以实现更好的zero-shot性能。因此,在本文中,我们主要关注LLM参数固定的VPG迁移。
Notations。形式上,给定要迁移的源VL-LLM,我们将LLM和VPG表示为
L
L
M
s
r
c
LLM_{src}
LLMsrc和
V
P
G
s
r
c
VPG_{src}
VPGsrc,并将目标侧对应部分表示为
L
L
M
t
g
t
LLM_{tgt}
LLMtgt和
P
t
g
t
P_{tgt}
Ptgt。
2.2 Experiment Settings
Architecture。在表1中介绍的所有VL-LLM中,目前只有BLIP-2是开源的。因此,我们采用BLIP-2的结构和训练方式。在我们的探索实验中,我们考虑使用由CLIP-ViT large和Q-Forme组成的VPG,其中Q-Former采用了类似BLIP-2论文中的方式进行预训练。
Training Data。对于所有探索实验,我们采用了人类标注的COCO字幕数据集和网络图像文本对SBU数据集的组合,从而得到140万个图像文本对。
Transfer Direction。对于同一类型的LLM,使用模型尺寸从小到大的迁移,我们研究:1)对于OPT系列,包括125M,350M,1.3B和2.7B,以及2)FlanT5系列,base、large和XL。对于不同类型间LLM的迁移,我们考虑了相近带线啊哦的OPT和FlanT5之间的迁移。
Evaluation。为了评估VL-LLM的性能,我们选择五个基准数据集:
- COCO caption。该任务要求模型生成描述输入图像的文本标题。请注意,对COCO的评估不是标准的zero-shot设置,因为我们的预训练语料库中还包括了该训练集。
- NoCaps。与主要集中于有限的常规视觉概念的COCO caption不同,NoCaps旨在测试模型生成更多种视觉概念字幕的能力。
- VQAv2。VQAv2评估基于给定图像中的视觉事实生成开放式答案的能力。由于VQAv2验证集包含大量图像,因此我们从中获取了20,000个问题,以进行快速评估。
- GQA。GQA需要基于视觉图像输入进行多跳推理。为了生成正确的答案,模型需要具有较强的场景级理解。与VQAv2类似,GQA也是一个开放式质量检查数据集。
- OKVQA。与VQAv2和GQA不同,OKVQA不仅需要在视觉内容中提取信息,还需要将其与必要的知识相关联。
我们对所有caption任务评估了CIDEr,为所有VQA任务评估了准确率。
Implementation Details。我们遵循和BLIP-2相同的实现细节,如https://github.com/salesforce/lavis。具体来说,我们对OPT采用FP16和对FlanT5采用BFloat16进行训练。对于学习率,我们首先对线性层进行warm-up,学习率从
1
e
−
6
1e-6
1e−6到
1
e
−
4
1e-4
1e−4,然后使用cosine学习率,同时最小学习率设置为
l
r
=
1
e
−
5
lr=1e-5
lr=1e−5,以进行10个epoch训练。由于数据量有限,我们略微降低了batch-size,这对最终性能有益。具体而言,我们将OPT和FlanT5的batch-size分别设置为1728和1152。通过梯度积累来实现目标batch大小。
3.Maximizing the Transfer Efficiency with a Two-stage Transfer Strategy
在本节中,我们首先确定最大化迁移效率的关键因素,然后我们驱动该解决方案以实现更好地转移。
3.1 Exploratory Analysis: Identifying Key Factors for VPG Transfer
通过选定在OPT模型之间进行small-to-large的迁移实验,我们可以获得以下关键观察结果。请注意,在后面的部分中进行了更多的系统比较(参见第4节)。
- Inheriting the trained VPG can accelerate training。为了证明这一点,我们在 O P T 350 M OPT_{350M} OPT350M上比较了从头开始训练VPG,以及继承来自 O P T 125 M OPT_{125M} OPT125M VPG的收敛率。模式如图3所示。总的来说,我们发现继承在 O P T 125 M OPT_{125M} OPT125M上训练的VPG加速了收敛,特别是对于caption任务。但是,对于需要细度视觉感知的数据集(例如VQAv2和GQA),从较小的模型中继承VPG可能会阻碍性能。我们认为使用随机初始化的线性投影层调整VPG将损害VPG现有的细粒度视觉感知能力。可能的原因是,VPG通常是具有强大视觉感知能力的预训练模型,因此使用传递到随机投影层的梯度进行更新会在初始步骤中误导VPG。幸运的是,可以通过在VPG和投影层的联合微调之前warm-up线性投影层(参见3.1)来解决此问题。请注意,此假设也可能适用于从头开始训练,但本文我们主要关注VPG迁移。
- Warming up the linear projector can prevent performance drop and expedite VPG training。为了验证这一点,我们首先在前3个epoch对线性投影层进行warm-up训练,在此期间,VPG和LLM的参数都被固定。随后,我们共同训练VPG和投影层,并在图4中绘制了性能曲线(该图中不包括warm-up过程)。结果表明,可以避免在图3中观察到的性能下降。此外,我们观察到,warn-up训练导致VPG和投影层联合训练所需的训练步数更少。 但是,我们必须强调,warm-up是成本高昂的方式。对于大型LLM,例如6.7B,BLIP-2 VPG的可训练参数将占总参数的10%。在这种情况下,培训VPG+投影层与仅训练投影层之间的成本没有显着差异。我们将在后面的讨论中详细说明如何加速线性投影层热身(参见3.1)。
- Merely tuning the projector can not achieve the best performance。在讨论如何加速warm-up之前,我们要澄清,仅调整投影层不足以实现最佳性能。值得注意的是,如图3所示,在“only linear”方法(绿色曲线)和“train from scratch”方法(橙色曲线)之间可以观察到显着的性能差距。因此,如果目标是使用精心收集的对话数据构建多模态对话机器人,则仅训练线性投影层不足以与所提供的数据保持对齐。
- Initializing LLMtgt’s projector with the help of the word converter can accelerate the linear projector warm-up。实际上,在
L
L
M
s
r
c
LLM_{src}
LLMsrc上训练VPG和投影层已经学会了如何将视觉内容映射到
L
L
M
s
r
c
LLM_{src}
LLMsrc的可理解的软提示。如果我们可以将
L
L
M
s
r
c
LLM_{src}
LLMsrc的软提示转换为
L
L
M
t
g
t
LLM_{tgt}
LLMtgt的软提示,我们可以直接将转换器与在
O
P
T
s
r
c
OPT_{src}
OPTsrc上训练的投影层合并。一个自然的想法是利用这两种模型的词嵌入作为软提示的代理。其背后的直觉是,软提示以与普通句子相同的格式工作,即与单词嵌入拼接作为输入。如图5所示,我们观察到了一个共同的模式,其中软提示中的最后一个token最接近EOS,而中间token代表图像内容。这种现象表明软提示和单词嵌入之间的相似性。
为了验证我们的假设,我们在一个充满挑战的情况下进行实验,在这种情况下,我们将VPG从 O P T 125 M OPT_{125M} OPT125M迁移到 O P T 1.3 B OPT_{1.3B} OPT1.3B。通过使用余弦相似度训练一个线性词嵌入转换器(参见§3.2(b)),我们可以通过合并 O P T 125 M OPT_{125M} OPT125M和转换器来初始化 O P T 1.3 B OPT_{1.3B} OPT1.3B的投影层。我们观察到,初始化可以加速线性投影层的warm-up过程,如表2所示。具有词嵌入转换器初始化的模型收敛的速度比没有初始化的模型更快,并且第二个epoch的w/ Init方法的表现,几乎与第三个epoch的w/o init方法相同。 - Word embedding converter can not replace a trained linear projector。尽管软提示与词嵌入有一些相似之处,但它们并不相同。例如,软提示的范数通常约为平均词嵌入范数的10倍。重要的是要注意,合并的线性投影层无法替代warm-up训练,因为仅使用线性投影层初始化会产生随机性能。我们认为,更好地了解提示如何工作将进一步有助于VPG的迁移学习。
- Linear projector warm-up enables fast convergence with an extremely large learning rate。为了确定最有效的迁移方案,我们使用不同的学习率进行训练投影层。令人惊讶的是,我们发现线性投影层可以以极大的学习率实现快速收敛,而如此庞大的学习率将导致VPG训练的崩溃。具体而言,当我们将学习率设置为原始值的5倍,COCO caption的CIDEr得分只在1个epoch训练中就能达到133.1,这与表2中使用原始学习率在3个epoch训练后获得的结果相似。此外,线性投影层对学习率变化的鲁棒性也很强。尽管将学习率进一步提高到10倍不会产生任何额外的加速度,但线性投影层可以在训练期间不出现崩溃,且收敛。
3.2 A Two-stage VPG Transfer Framework
通过连接上述第3.1节中所讨论的所有观点,我们现在设计了两阶段VPGTrans框架以进行更高效的VPG迁移。如图6所示,VPGTrans的1阶段执行投影层warm-up,2阶段进行直接微调。我们的结果表明,我们的方法很简单,但可以显着加快迁移学习过程而不会损害性能。后面的部分给出了一些更详细的结果(参见第4和5节)。
3.2.1 Stage-1: Projector Warm-up
- Inherit VPG。我们首先使用在 L L M s r c LLM_{src} LLMsrc上训练的VPG初始化 L L M t g t LLM_{tgt} LLMtgt的VPG。
- Projector Initialization。然后,我们使用
L
L
M
s
r
c
LLM_{src}
LLMsrc投影层和线性单词转换器的投影仪的合并初始化
L
L
M
t
g
t
LLM_{tgt}
LLMtgt的投影层。正式地,我们将
L
L
M
s
r
c
LLM_{src}
LLMsrc的线性投影层定义为
f
s
(
x
)
=
W
s
x
+
b
s
f_s(x)=W_sx+b_s
fs(x)=Wsx+bs,
L
L
M
t
g
t
LLM_{tgt}
LLMtgt的线性投影层定义为
f
t
(
x
)
=
W
t
x
+
b
t
f_t(x)=W_tx+b_t
ft(x)=Wtx+bt,将单词转换器定义为
g
w
(
x
)
=
W
w
x
+
b
w
g_w(x)=W_wx+b_w
gw(x)=Wwx+bw。
该单词转换器是一个线性层,其只用caption文本数据进行训练,可将 L L M s r c LLM_{src} LLMsrc词嵌入映射到 L L M t g t LLM_{tgt} LLMtgt的词嵌入空间。我们试验基于余弦相似度或欧式距离的优化损失,并且观察到两种损失之间没有显着差异。因此,我们只是在实验中使用余弦相似度。如果 L L M s r c LLM_{src} LLMsrc和 L L M t g t LLM_{tgt} LLMtgt使用不同的tokenization方法,则根据重叠的字符进行优化。正式地,对于每个给定的token k k k,我们将其 L L M s r c LLM_{src} LLMsrc和 L L M t g t LLM_{tgt} LLMtgt的单词嵌入表示为 x s x_s xs和 x t x_t xt。然后,我们最小化如下损失:
l = 1 − s i m ( g w ( x s ) , x t ) . (1) l=1-sim(g_w(x_s),x_t).\tag{1} l=1−sim(gw(xs),xt).(1)
一旦获得了转换器 g w g_w gw,我们就可以轻松地将其与 L L M s r c LLM_{src} LLMsrc的投影层合并为:
f t ( x ) = f s ( g w ( x ) ) = W s ( W w x + b w ) + b s , (2) f_t(x)=f_s(g_w(x))=W_s(W_wx+b_w)+b_s,\tag{2} ft(x)=fs(gw(x))=Ws(Wwx+bw)+bs,(2) - Warm-up Training。然后,我们仅在此阶段固定住VPG和LLM来训练投影层。具体来说,我们以学习率的5倍训练投影层的1个epoch。
3.2.2 Stage-2: Direct Fine-tuning
- Direct Fine-tuning。在最后一步中,我们以正常的学习率对VPG和投影层进行联合训练。