来聊聊Meta AI团队(何恺明组)提出的一个高效的CLIP加速训练方法——FLIP。看完MAE,很自然的一个想法就是将MAE用到CLIP里的图像编码器上,FLIP实现了这个想法,通过在训练过程中对图像进行随机掩码(masking),显著提升了训练效率。
动机也很简单,CLIP训练成本高,耗费大量时间和资源,高效省时的训练方法则成为研究重点。
简单看下FLIP结果,只需要mask掉部分图像,就可以将CLIP的训练过程加速2~3倍,而且可以实现更好的性能:
01、方法介绍
与CLIP相比,FLIP最关键的改进就是借鉴了MAE(Masked Autoencoders)的思想,在训练过程中对图像进行随机mask。这意味着图像编码器(image encoder)只需要处理未被mask的部分图像块(patches)。具体实现上的差异:
- 图像编码器(Image Encoder): FLIP的图像编码器与原始的ViT(Vision Transformer)架构类似,但在patch embedding后没有采用额外的LayerNorm,并且使用全局平均池化(global average pooling)来提取最终的全局特征,而CLIP则使用class token的特征。
- 文本编码器(Text Encoder): FLIP使用非自回归的Transformer,而CLIP则使用自回归的Transformer(带有因果注意力掩码)。此外,FLIP使用长度为32的WordPiece tokenizer,而CLIP使用长度为77的BytePairEncoding tokenizer。
对图像进行掩码处理,主要有以下几个显著的优势:
- 加速训练: 由于图像编码器只需要处理部分图像块,大大降低了计算量,从而在相同的训练时间内可以处理更多的图像-文本对,提高了训练效率。
- 节省显存: 遮挡部分图像可以显著减少图像编码器的显存占用(例如,遮挡50%的图像,显存消耗就降低50%)。这使得在有限的硬件资源下可以使用更大的batch size进行训练,而对比学习通常需要较大的batch size才能取得更好的效果。
- 可能的正则化效果: 虽然图像掩码会导致部分信息丢失,但这可能反而起到一种正则化的作用,有助于模型更好地泛化,避免过拟合。
02、实验结果
与OpenCLIP对比
与OpenCLIP的对比结果清晰地展示了FLIP的效率提升。在训练相同epochs(32 epochs)的情况下:
- 使用50%掩码的FLIP可以将训练速度提升2倍,同时在ImageNet1K上的zero-shot准确率提高0.9%。
- 使用75%掩码的FLIP可以将训练速度提升2.9倍,准确率提高0.6%。
需要注意的是,如果不进行unmasking tuning(即在训练后期少量使用无掩码图像进行微调),FLIP的性能会有所下降,尤其是75%掩码的情况,其性能甚至略逊于CLIP。这表明训练和测试过程中图像分布的差异(distribution gap)仍然会对性能产生一定影响。
不同模型和数据集上的表现
论文基于ViT-L/16、ViT-B/16、ViT-L/14以及ViT-H/14等不同模型进行了实验,并在ImageNet1K上进行了评估。结果表明,FLIP(50%掩码)在zero-shot性能上优于同样基于LAION-400M数据集复现的CLIP以及开源的OpenCLIP(除了B/16模型),但略逊于OpenAI的CLIP。在linear probe和fine-tune实验中也观察到了类似的趋势。这很可能归因于预训练数据集的差异(WIT-400M vs LAION-400M)。
在其他图像数据集上的对比结果也显示,FLIP明显优于基于LAION-400M复现的CLIP和OpenCLIP,但在部分数据集上略逊于OpenAI的CLIP,这再次印证了预训练数据集的重要性。
论文还进一步在zero-shot图像-文本检索、zero-shot鲁棒性、图像描述(image captioning)以及视觉问答(visual question answering)等任务上进行了对比实验。结果表明,FLIP在这些任务中均表现出良好的性能,仅在zero-shot鲁棒性方面略逊于OpenAI的CLIP(这同样可能是由于训练数据集的差异)。
消融实验
为了深入理解FLIP中各个设计选择的影响,论文进行了一系列消融实验,这些实验基于ViT-L/16模型在LAION-400M数据集上训练6.4个epochs。
- (a) 不同掩码比例(mask ratio): 实验表明,随着掩码比例的增加,batch size增大,FLOPs和训练时长均下降。50%的掩码比例在速度和性能之间取得了最佳平衡,而75%的掩码比例则由于信息丢失过多而导致性能下降。
- (b) Batch size的影响: 实验证实,更大的batch size可以带来更好的性能,这突显了图像掩码带来的额外优势。
- (c) 文本掩码(text masking): 实验表明,对文本进行掩码会导致性能下降。这可能是因为图像信息通常是冗余的,而文本信息密度更高。此外,由于文本编码器的计算量相对较小,因此文本掩码并不是一个有效的优化手段。
- (d) 推理阶段的掩码: 实验对比了在推理阶段使用掩码图像和非掩码图像的性能差异。
- (e) Unmasking tuning的影响: 正如前面提到的,由于训练和测试数据分布的差异,如果没有unmasking tuning,模型性能会受到影响。
- (f) 添加MAE的重建损失: 实验表明,添加MAE的重建损失并不能带来性能提升。
Scaling性能
由于FLIP显著加速了CLIP的训练,论文还进行了大规模的scaling实验,包括:
- 模型Scaling(Model scaling): 使用ViT-H代替ViT-L,将模型参数增加了一倍。
- 数据Scaling(Data scaling): 将预训练数据集从LAION-400M扩展到更大的LAION-2B数据集(固定训练过程中采样的样本总量)。
- 训练计划Scaling(Schedule scaling): 增加训练过程中采样的样本量(从12.8B到25.6B,即训练epochs从32增加到64)。
实验结果表明:增大模型规模可以带来稳定的性能提升。使用更大的训练数据集在后期可以带来额外的性能提升。仅增加采样数据量(在相同的LAION-400M数据集上增加epochs)并不能显著提升性能。
通过组合scaling实验,特别是model+data scaling的组合,可以在各个任务上取得较好的性能。而model+data+schedule的联合scaling在ImageNet1K数据集上取得了最高的zero-shot性能,达到78.1%,与目前OpenCLIP开源的最佳模型(同样基于ViT-H和LAION-2B,采样32B数据量,性能为78.0%)相当。但得益于图像掩码,FLIP的训练速度比后者快2.5倍。
03、总结
FLIP增大模型尺寸继续涨点;FLIP增大数据规模继续涨点;FLIP增大训练时长几乎没什么涨点。
FLIP给出资源受限情况下的视觉语言训练新范式,也给出模型训练中数据规模和模式尺寸的通用Trick。摘要最后一句提到“We hope that our work will foster future research on scaling vision-language learning.”。预计会成vision-language learning的一个通用Trick,是对的MAE一次推广。