VCD: 視覚的対照デコーディングによる大規模視覚言語モデルにおける物体幻覚の軽減
Sicong Leng、Hang Zhang、Guanzheng Chen、Xin Li、Shijian Lu、Chunyan Miao、Lidong Bing
VideoLLaMA 2: ビデオ LLM における時空間モデリングとオーディオの理解を促進する
Zesen Cheng、Sicong Leng、Hang Zhang、Yifei Xin、Xin Li、Guanzheng Chen、Yongxin Zhu、Wenqi Zhang、Ziyang Luo、Deli Zhao、Lidong Bing
マルチモーダリティの呪い: 言語、視覚、聴覚にわたる大規模なマルチモーダル モデルの幻覚の評価
Sicong Leng、Yun Xing、Zesen Cheng、Yang Zhou、Hang Zhang、Xin Li、Deli Zhao、Shijian Lu、Chunyan Miao、Lidong Bing
[2024.10.18] Inf-CLIPのトレーニングコードと評価コードを公開しました。
基本的な依存関係:
Python >= 3.8
ピトーチ >= 2.0.0
CUDA バージョン >= 11.8
[リモート] Inf-CL をインストールします。
# リモートインストールpip install inf_cl -i https://pypi.org/simple
[ローカル] Inf-CL をインストールします。
pip install -e 。
必要なパッケージをインストールします。
git clone https://github.com/DAMO-NLP-SG/Inf-CLIPcd Inf-CLIP pip install -r 要件.txt
inf_cl
、Inf-CL 損失の triton 実装です。
リング-CL (inf_cl/ring.py#L238)
Inf-CL (inf_cl/ring.py#L251)
inf_clip
Inf-CL 損失およびその他のトレーニング機能を備えた CLIP トレーニング コードベースです。
勾配の累積 (inf_clip/train/train.py#L180)
グラデーション キャッシュ (inf_clip/train/train.py#L292)
対照学習に Inf-CL 損失を採用する方法に関する簡単な例。このようなコマンドを使用して次のことを試みます。
torchrun --nproc_per_node 2 tests/example.py
import torchimport torch.nn.function as Fimport torch.distributed as distimport numpy as npfrom inf_cl import cal_inf_lossdef create_cl_tensors(rank, world_size):# Parametersdtype = torch.float32num_heads = 3 # アテンション数 headsseq_length_q = 32768 # シーケンス長seq_length_k = 32768 d_model = 256 #各ヘッドの寸法 (16、32、64、または 128 である必要があります)# 入力をランダムに初期化しますq = torch.rand((seq_length_q // world_size, num_heads * d_model), dtype=dtype, device=f"cuda:{rank}" )k = torch.rand((seq_length_k // world_size, num_heads * d_model), dtype=dtype, device=f"cuda:{rank}")l = torch.ones([], dtype=dtype, device=f" cuda:{rank}") * np.log(1 / 0.07)q = F.normalize(q, p=2, dim=-1).requires_grad_() # Queryk = F.normalize(k, p=2, dim=-1).requires_grad_() # Keyl = l.requires_grad_() # ロジットスケールリターン q, k, lif __name__ == "__main__":# 分散環境が初期化されていると仮定しますdist.init_process_group("nccl")rank = dist.get_rank()world_size = dist.get_world_size()torch.cuda.set_device(rank)# 画像-テキスト対照学習による例では、q はグローバル画像特徴、# k はテキスト特徴、l はロジット スケールです。 q, k, l = create_cl_tensors(rank, world_size)# ラベルはデフォルトでは対角要素です。 # ラベル = torch.arange(q.shape[0])loss = cal_inf_loss(q, k,scale=l.exp())print(loss)
* は「データ オフロード」戦略を採用していることを示します。
より大きなデータスケールでのトレーニングには、より大きなバッチサイズが必要です。
コードベース上でのさらなる開発を促進するために、Inf-CLIP を使用してカスタマイズされた CLIP をトレーニングし、トレーニングされたモデルを主流のクリップ ベンチマークで評価する方法に関するクイックスタート ガイドを提供します。
トレーニング データの構造:
インフクリップ §── データセット │ §── cc3m/ # https://github.com/rom1504/img2dataset/blob/main/dataset_examples/cc3m.md| | §── 0000.tar| | §── 0001.tar| | §── ...| | ━─ 0301.tar │ §── cc12m/ # https://github.com/rom1504/img2dataset/blob/main/dataset_examples/cc12m.md| | §── 0000.tar| | §── 0001.tar| | §── ...| | ━── 1044.tar │ §── laion400m/ # https://github.com/rom1504/img2dataset/blob/main/dataset_examples/laion400m.md| | §── 00000.tar| | §── 00001.tar| | §── ...| | └── 41407.tar
指示:
bash スクリプト/cc3m/lit_vit-b-32_bs16k.sh bash スクリプト/cc12m/lit_vit-b-32_bs32k.sh bash スクリプト/laion400m/lit_vit-b-32_bs256k.sh
評価データ構造:
インフクリップ §── データセット │ §── imagenet-1k/ # imagenet の val_images.tar.gz をダウンロード| | └── val/| | | §── n01440764| | | §── n01443537| | | §── ...| | | ━── n15075141 │ §── Clip-benchmark/ # bash datasets/benchmarks_download.sh| | §── wds_mscoco_captions| | §── wds_flickr8k| | §── wds_flickr30k| | §── wds_imagenet1k| | §── wds_imagenetv2| | §── wds_imagenet_sketch| | §── wds_imagenet-a| | §── wds_imagenet-r| | §── wds_imagenet-o| | └── wds_objectnet
指示:
# imagenetevaluationbash scripts/imagenet_eval.sh# 全体的なevaluationbash scripts/benchmarks_eval.sh
Inf-CLIP があなたの研究や応用に役立つと思われる場合は、この BibTeX を使用して引用してください。
@article{damovl2024infcl, title={メモリの壁の突破: コントラスト損失のためのほぼ無限のバッチ サイズ スケーリング}, author={Zesen Cheng、Hang Zhang、Kehan Li、Sicong Leng、Zhiqiang Hu、Fei Wu、Deli Zhao、Xin Li、 Lidong Bing}、ジャーナル={arXiv プレプリント arXiv:2410.17243}、年={2024}、url={https://arxiv.org/abs/2410.12787}}
Inf-CLIP のコードベースはOpenCLIPから採用されています。また、Inf-CL の元になった次のプロジェクトにも感謝しています。
OpenAI CLIP 、 img2dataset 、 CLIP-Benchmark 。
Flashアテンション、リングアテンション、リングフラッシュアテンション。
このプロジェクトは、LICENSE ファイルに記載されている Apache 2.0 ライセンスに基づいてリリースされています。このサービスは、非営利使用のみを目的としたリサーチ プレビューであり、CLIP のモデル ライセンス、OpenAI によって生成されたデータの利用規約、および Laion が適用されます。違反の可能性を発見した場合は、当社までご連絡ください。