模態編碼器 | FLIP:通過圖像掩碼加速CLIP訓練
來聊聊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一次推廣。