1. 概要
CLIP(Contrastive Language-Image Pretraining)は、大規模な画像とテキストのペアのデータセット(4億ペア)を学習した事前学習モデルで、画像とテキストをトランスフォーマーを使って特徴抽出し、異なるモダリティの特徴を同じ特徴空間でペアリングできるため、マルチモーダルの研究でよく用いられる。ここで、入力の画像とテキストのペアが同じクラスに属するかどうかを判別するため、画像とテキストのベクトルの関連性を評価する必要があり、対照損失(Contrastive Loss)が用いられている。同じクラスに属するペアはベクトル間の距離を小さくし、異なるクラスに属する場合は距離を大きくする。
一方で、対照損失(Contrastive Loss)のメモリ使用量は非常に大きく、バッチサイズ65,536に対して16GBのメモリを要する。この研究では、メモリ使用量を削減するための分散メモリ手法を提案している。
2. 新規性
対照損失(Contrastive Loss)とその勾配計算を2つの部分に分解し、1つはGPU内の勾配を計算し、もう1つは他のGPUから集約されるGPU間の勾配を計算することで、GPUのメモリ使用量を О(B^2)からО(B^2/N) と大幅に削減した。
(*Bはバッチサイズ、Nは学習に使用するGPU数を示す)
3. 実現方法
GPU内の勾配を求める際は、該当GPU内の画像とすべてのテキストとの損失(Imaget-to-Text Contrastive Loss)と、該当GPU内のテキストとすべての画像との損失(Text-to-Image Contrastive Loss)だけを求める。GPU間の勾配を求める場合は、すでに求めたGPU内の勾配をAll_Reduce Operationを用いて各GPUの勾配を集約し(Reduce)共有する。
4. 結果
CLIPはバッチサイズが大規模になるため、GPUを用いた効率的な分散コンピューティングは効果が高い。オリジナルのCLIPではViT-B/32を学習するのにNVIDIA社製A100(40GB)GPUを128個を必要としたが、提案手法では同等性能を達成するのに8~64個のGPUで済んでいる。
last updates: July 13 2023