视觉-语言预训练模型已经在各种下游任务上取得了令人印象深刻的性能。然而,它们庞大的模型尺寸限制了在计算资源有限的平台上的应用。我们发现,直接使用较小的预训练模型并在CLIP模型上应用基于大小的剪枝会导致灵活性降低和性能下降。近期针对VLP压缩的工作要么采用单模态压缩指标导致性能有限,要么涉及成本高昂的可学习掩码的搜索过程。
在本文中,首先提出了模块化剪枝误差(MoPE)指标,通过在跨模态任务上的性能下降准确评估CLIP模块的重要性。使用MoPE指标,我们引入了一个统一的剪枝框架,适用于预训练和特定任务微调压缩阶段。对于预训练,MoPE-CLIP有效地利用了教师模型的知识,显著降低了预训练成本同时保持了强大的零样本能力。对于微调,从宽度到深度的连续剪枝产生了高度竞争性的特定任务模型。在两个阶段的广泛实验表明了MoPE指标的有效性,并且MoPE-CLIP优于之前的VLP压缩方法。
1 Introduction
视觉-语言预训练(VLP)模型已经展示了强大的多模态表示学习能力。然而,它们令人印象深刻的性能是以大量参数为代价的,这限制了它们在资源受限设备上的使用。因此,探索适用于实际应用的紧凑型VLP模型至关重要。我们为不同的平台确定了两种压缩设置。
首先,许多边缘服务器缺乏处理整个预训练模型的计算能力。我们定义了“预训练阶段压缩”来解决这一问题,这涉及到压缩零样本VLP模型,并在数百万图像-文本对上进行预训练,以创建紧凑的通用模型。
其次,像手机这样的客户端通常需要针对各种场景的多个特定任务模型。为了满足这一需求,我们引入了“微调阶段压缩”。例如,CLIP在跨模态检索任务上表现出色,包括图像到文本检索(TR)和文本到图像检索(IR)。鉴于视觉或文本表示的可预计算和可离线存储的特性,我们的目标是压缩TR任务的视觉编码器以及IR任务的文本编码器。
为了降低推理成本,我们考虑使用较小规模的预训练模型,如文献[42]中各种尺寸基于ViT的CLIP模型。然而,单独对每个模型进行预训练在计算上成本很高,且有限的结构多样性可能无法满足各种部署需求。因此,我们深入研究更灵活的解决方案,利用剪枝技术压缩VLP模型。尽管如此,如图1所示,在CLIP上幅度剪枝的次优性能提出了一个挑战,即需要确定一个更具竞争力的剪枝策略。
近期VLP剪枝方法可以大致分为两类。最简单的方式是应用单模态Transformer剪枝方法。然而,尽管在单模态变压器上,幅度和损失感知等指标的效率很高,但我们的实验发现,当直接将这些方法应用于多模态CLIP模型时,性能并不令人满意。EfficientVLM在预训练阶段使用了“每隔一个”剪枝策略,但这种通常用于BERT模型的方法在我们的实验中并没有达到最佳效果。这些发现强调了现有指标在评估模块对多模态任务影响方面的不足。另一方面,基于掩模的剪枝被用于识别关键模块。UPop引入了逐步搜索过程,这不适合预训练阶段。TinyCLIP建议对小模型进行权重继承的蒸馏,涉及一个耗时的多阶段蒸馏过程。
此外,TinyCLIP在LAION400M数据集上进行预训练,对于在有限数据上进行微调阶段压缩的有效性仍存在不确定性。总之,传统的剪枝指标在VLP剪枝方面需要改进,且基于掩模的剪枝在预训练阶段的效率不够高。因此,对于我们确定的这两个阶段压缩的统一解决方案尚未被探索。
为了应对这些挑战,我们引入了MoPE-CLIP,这是一种有效的无掩膜结构剪枝方法,适用于预训练和微调阶段的压缩。我们首先提出了模块级剪枝误差(MoPE)指标,该指标通过测量如果剪枝该模块,在多模态任务中的性能下降来量化一个模块的重要性。MoPE精确地评估了头部、FFN神经元在_width方向_以及Transformer层在_depth方向_的剪枝敏感性。
基于MoPE指标提出了一个统一的无掩膜剪枝框架。在预训练阶段,使用在MSCOCO验证集上的零样本检索来计算MoPE,并同时剪枝宽度和深度组件。在微调阶段,通过在下游任务上的性能下降来计算MoPE。为了实现更高的剪枝比例,我们在进行深度剪枝之前优先进行宽度剪枝。此外,从原始模型的对齐特征空间及文本/视觉编码器中提取了跨模态和单模态的知识,以增强剪枝模型的容量。
广泛的评估表明,MoPE-CLIP在MSCOCO检索任务上,与相同参数量的TinyCLIP 相比,TR@1和IR@1分别高出5.3%和4.0%,同时在11个零样本分类任务上超过了MCD 和ALIP,分别高出18.6%和17.0%。我们工作的贡献是:
引入了MoPE指标,以精确评估CLIP模块在跨模态任务中的重要性。利用MoPE,我们提出了一种结合了先进蒸馏损失的结构化剪枝框架,为预训练和微调压缩提供了一个统一的解决方案。MoPE-CLIP模型在广泛的实验中,在训练速度和准确性方面展现了当前最先进(SOTA)的性能,超过了不同领域中现有的基准。
2 Preliminary Study of Downsizing CLIP
在追求缩小如CLIP这样的视觉-语言模型的目标时,我们会考虑各种替代方案。在架构上,可以选择用较小模型中的对应部分替换编码器,如图1(b)中CLIP-ViT-B/32所示,或者,可以直接将编码器修剪到所需的任何尺寸。从实际角度来看,缩小模型可以在部署到下游任务之前进行预训练的过程中执行,也可以在客户端进行微调时进行。本节将初步探讨这些替代方案,为我们提出的修剪策略奠定基础。
替换为较小的模型证明是不令人满意的。我们用来自CLIP-ViT-B/32的一个较小的视觉编码器替换了CLIP原来的视觉编码器
,从而得到了缩小版的模型
我们冻结了语言编码器,以方便像图像到文本检索(TR)这样的应用,其中语言编码器产生的文本特征经常未经修改就被存储。修改后的视觉编码器与冻结的语言编码器之间存在不一致,这需要进一步训练。
具体来说,我们在下游数据集MSCOCO上对线性层和视觉编码器进行微调,并采用跨模态对比损失函数
,这是在图像和文本特征之间计算的InfoNCE损失。不幸的是,如图1(1)所示,
与原始CLIP相比,性能大幅下降。这种下降可能归因于将来自不同视觉-语言模型的两个不相关的编码器对齐的艰巨挑战。这一观察结果,加上在选择目标大小方面的灵活性不足,阻止了我们进一步探索这种在预训练阶段的缩小策略。因此,我们将关注点转向了剪枝的替代选择。
需要对成功的剪枝进行进一步的研究。具体来说,我们实施了广泛采用但直接的剪枝策略
,该方法选择性地剪除低于特定幅度阈值的注意力头和FFN神经元。调整这个阈值会导致剪枝模型的大小不同。我们使用了与
相同的目标函数来替代训练剪枝模型
尽管预期的目标是大小灵活,但
确保只有在至少保留了的参数时,才能提供相对令人满意的表现,如图1(1)(2)所示。迫切需要一种有效的剪枝策略,既能满足灵活性又能具备泛化能力,从而形成我们提出方法的基础。
预训练和微调修剪都值得考虑。
一个值得探讨的有趣问题是,在部署前进行预训练的视觉-语言模型是否优于在微调时修剪到相同大小的一个模型。
和
分别代表了使用我们提出的修剪框架的两个版本,我们将在下一部分详细介绍。从图1(1)中,我们可以得出结论,考虑到相同的目标大小,探索预训练修剪和微调修剪是值得的。首先,它们的应用场景如前所述是不同的。其次,在预训练期间进行修剪,当有更多并行数据可用于保留跨模态相关性时,证明更为有效;而在微调期间进行修剪虽然性能没有显著下降,但具有高效率的优势。
3 Method
我们在第3.1节引入了MoPE度量标准,以准确衡量跨模态任务中模块的影响力。在第3.2节和第3.3节,我们提出了我们的修剪框架和知识蒸馏损失,共同提升了两阶段压缩性能。
Module-wise Pruning Error
我们提出了一种新的度量标准,称为“模块化剪枝误差”(MoPE),用以评估CLIP模型中不同模块的重要性,例如多头注意力(MHA)头、前馈(FFN)神经元以及整个Transformer层。对于头和神经元,宽度剪枝中一些常用的度量标准,如幅度,无法准确捕捉它们对多模态任务的影响,导致次优的结果。对于Transformer层,现有研究主要采用针对BERT的深度剪枝的每隔一层策略。
我们在第4.3节的实验表明,这种简单策略应用于CLIP模型时是不够的。我们推测,每隔一层策略无法衡量剪枝对另一个编码器的影响,从而导致性能下降。这些结果表明,在选择适合剪枝VLP模型的合适度量标准方面提出了新的挑战。
为了克服这些问题,我们提出的MoPE指标有效地评估了模块相对于多模态下游任务的重要性,为宽度和深度剪枝提供了一个一致且更准确的衡量标准。特别是,我们将不同的头、神经元组和层视为不同的模块。从图2(d)中,模块
的重要性是通过移除模块
的CLIP模型
与完整CLIP
模型的性能下降来实证衡量的,如下所示:
其中
是零样本评估函数,即检索任务中的召回平均值。一个模块
如果具有更高的
值,表明这个模块对剪枝更加敏感,并且在跨模态任务中发挥更为关键的作用。因此,在剪枝过程中,保留这类模块成为优先考虑的事项。通过利用
,我们可以轻松创建代价表
。这些代价表为不同的头(
)、神经元组(
)和层(
)生成。它们作为选择最优架构的参考,使得我们能够在减少整体模型大小的同时保留关键模块。
Unified Pruning Framework Based on MoPE
近期关于视觉语言模型(VLM)的压缩工作主要集中在预训练阶段[57]或微调阶段[49]。然而,针对这两个阶段的综合解决方案尚未得到充分研究。利用我们的MoPE度量标准,我们引入了一个统一的剪枝框架,旨在解决这一挑战。
微调阶段。主要挑战在于提高特定任务剪枝模型的性能。为了实现高压缩比,在宽度和深度方向上探索了三种不同的剪枝策略。实证分析表明,先宽度后深度的剪枝范式最为有效,具体讨论见第4.3节。具体来说,CLIP的一个编码器有L层,每层由一个MHA块和一个FFN块组成。
首先,我们在宽度方向上压缩微调后的CLIP模型,如图2(a)所示。对于具有
个头的MHA块,我们独立地剪除
个头以及它们的Query、Key和Value输出矩阵。这个过程计算了MoPE指标,随后建立了头部的成本表
。对于FFN块,包括一个上投影
和一个下投影层
,其中
是隐藏维度,
是中间神经元的数量。由于枚举所有
个神经元是耗时的工作,我们将它们分为N组并测量每组的MoPE来得到
。然后剪除不重要的头部和神经元组,并且我们使用知识蒸馏将固定教师模型的知识转移到最终的MoPE-CLIPw上。其次,在深度方向上压缩MoPE-CLIPw。我们计算了MoPE-CLIPw的个Transformer层的MoPE并创建了
。在
的辅助下,我们精确评估层的优先级并剪除较不重要的层。最终通过从固定教师模型中蒸馏得到MoPE-CLIP。
预训练阶段。
我们在预训练阶段同时压缩大型模型的视觉和文本编码器,以生成更通用的小型模型。除了模型容量之外,训练成本是另一个至关重要的挑战。宽度优先然后深度策略涉及一个两阶段的重新训练过程,这会导致成本高昂。此外,在每个重新训练过程中获得的知识会随着预训练期间引入更多的图像-文本对而扩展。
因此,我们将宽度和深度剪枝合并到单一阶段,如图2(c)所示。特别是,我们并行计算零样本CLIP的视觉和文本编码器中的头、神经元组和层的MoPE指标。创建成本表后,剪枝过程在几秒钟内直接完成。然后我们在一个小型图像-文本预训练数据集(例如,CC3M数据集)上对剪枝模型进行预训练,并获得最终的MoPE-CLIP。我们在第4.2节的实验表明,我们的MoPE-CLIP在很大程度上优于几个高效的预训练模型,这表明大型模型的剪枝为预训练提供了更好的初始化。
剪枝效率。
计算每个模块的MoPE指标需要几秒钟,而且所有模块的计算都可以并行化。因此,建立成本表的总时间远小于完整的微调或预训练过程。随后,可以直接以不同的比例进行剪枝,以获得一系列紧凑型模型。
Distillation to MoPE-CLIP
与先前应用于ViT或BERT的蒸馏方法相比,我们设计了一种先进的蒸馏损失,有效地将跨模态和单模态知识从大型CLIP(教师模型)传递到如图2(b)所示的修剪过的MoPE-CLIP(学生模型)。
跨模态知识。CLIP模型计算了用于检索和分类任务的跨模态相似性矩阵。教师模型展现出更为紧密对齐的文本和视觉嵌入空间,这使它们的相似性矩阵中包含了更多有价值的知识。为了增强剪枝模型的跨模态能力,我们最小化了学生相似性矩阵
与教师相似性矩阵
之间的软交叉熵损失(SCE),即:
单模态知识。
教师模型拥有更强大和优秀的视觉或文本编码器。因此,将嵌入在这些较大编码器中的知识转移到学生模型上变得至关重要。遵循[19],我们使用均方误差(MSE)损失,以确保学生模型特征
尽可能与教师模型特征
相似:
此外,我们还执行中间层的蒸馏,以转移隐藏状态知识(即每个Transformer层的输出)
,从教师模型到学生模型。深度剪枝的学生模型将模仿教师模型中保留的中间层。隐藏损失为
学习目标。
结合跨模态知识和单模态知识,我们进一步引入了对比损失(
)。因此,最终的训练目标为:
默认情况下,不调整并设置
,以确保这些损失的平衡幅度。分别在使用相似参数的情况下,MoPE-CLIP 表现最佳,并且超过了CLIP-ViT-B/32 2.2% TR@1 和 SE-CLIP 13.6% TR@1。在2倍压缩比的MoPE-CLIP 也优于SE-CLIP 和 CLIP-ViT-B/32。
这些结果表明,与预训练的小模型和替换编码器模型相比,MoPE-CLIP 和 MoPE-CLIP 在保持灵活性的同时,提供了更好的小型CLIP模型。此外,我们观察到知识蒸馏过程实际上提高了图1中CLIP-ViT-B/32 和 SE-CLIP 的TR@1。这证明了教师知识的有效性,但是 ViT-L14 和 ViT-B32 之间的架构差异限制了最终性能。
与其他剪枝方法的比较。
我们将MoPE-CLIP与最先进的VLP压缩方法UPop进行了比较。我们还将在CLIP架构上扩展单模态剪枝方法,包括动态剪枝方法DynaBERT和基于幅度的剪枝。值得注意的是,除了UPop的结果来自原始论文外,蒸馏被应用于DynaCLIP和MagnCLIP。
如表3所示,在相同深度和宽度下,MoPE-CLIP显著优于其他DynaCLIP和MagnCLIP,尤其是在TR@1上。与UPop相比,MoPE-CLIP具有1.53亿视觉编码器,称为整个模型有2.34亿参数,在所有指标上大幅超过具有4.74亿参数的UPop-CLIP。
此外,表4显示,即使在4倍压缩比下,我们的MoPE-CLIP在文本到图像检索任务上仍然保持高性能,与教师模型相比,IR@1仅下降了0.8%。在附录C.1中报告了更多剪枝比下的性能,并将UPop与KD进行了比较。在附录C.3中,我们分析了MoPE-CLIP与DynaCLIP之间保留头部的差异,这进一步证明了MoPE指标的准确评估。
Pre-training Stage Compression
实验设置
在预训练阶段,我们压缩零样本CLIP-ViT-L/14(ZS-14)模型以获得紧凑的通用模型。随后,我们在小规模预训练数据集CC3M上预训练我们的MoPE-CLIP和各种基线。为了进一步评估MoPE-CLIP模型的能力,我们使用更大的数据集,包括CC12M和YFCC15M,来扩大训练规模。此外,我们在OpenCLIP ViT-B/16上评估剪枝方法,并在附录C.5中报告结果。
实现细节
:我们同时修剪了ZS-L14的视觉和文本编码器。对于视觉编码器,采用了宽度和深度修剪,并将编码器压缩到86M个参数,这与CLIP-ViT-B/32相似。对于文本编码器,在两个修剪比例下沿宽度方向压缩它,产生了
和
还把视觉和文本编码器都修剪到半宽,产生了MoPE-CLIP large。该模块的重要性在MSCOCO验证数据集上进行评估,召回平均值作为MoPE的指标。