モデル概要
モデル特徴
モデル能力
使用事例
🚀 CLIP-convnext_xxlarge-laion2B-s34B-b82K-augreg-soup
OpenCLIPを使用してLAION-2Bで学習されたCLIP ConvNeXt-XXLargeモデルシリーズ。ゼロショット画像分類などのタスクに使用できます。
🚀 クイックスタート
このモデルは、ゼロショット画像分類や画像・テキスト検索などのタスクに使用できます。詳細な使用方法については、以下のセクションを参照してください。
✨ 主な機能
- ゼロショット画像分類
- 画像とテキストの検索
- 画像分類やその他の画像タスクの微調整
- 線形プローブ画像分類
- 画像生成のガイドと条件付け
📚 ドキュメント
🔍 モデルの詳細
モデルの説明
OpenCLIPを使用して、LAION-5BのサブセットであるLAION-2B(英語)で学習された一連のCLIP ConvNeXt-XXLarge(カスタムのtimm
ConvNeXtサイズ)モデルです。
モデル | データセット | 解像度 | AugReg | ImageNetゼロショットTop-1 (%) |
---|---|---|---|---|
convnext_xxlarge.laion2b_s34b_b82k-augreg | LAION-2B | 256x256 | RRC (0.33, 1.0), RE (0.35), SD (0.1) | 79.1 |
convnext_xxlarge.laion2b_s34b_b82k-augreg-rewind | LAION-2B | 256x256 | RRC (0.3, 1.0), RE (0.4), SD (0.1) | 79.3 |
convnext_xxlarge.laion2b_s34b_b82k-augreg-soup | LAION-2B | 256x256 | N/A | 79.4 |
RRC = Random Resize Crop (crop pcts), RE = Random Erasing (prob), SD = Stochastic Depth (prob) -- 画像タワーのみ
主要な学習は約2か月間にわたって行われました。主要な学習のグローバルバッチサイズは81920でした。学習の最後の約10%は、より高いグローバルバッチサイズ95744で、元の終了時よりも高い学習率と拡張を使用して再学習されました。これら2つのモデルは「soup」として平均化されました。詳細は学習の詳細を参照してください。
目標:
- 最大の畳み込みCLIP画像タワーのサイズを、下流の使用のために改善された画像サイズスケーリングでViT-gからViT-Gのパフォーマンス範囲に押し上げる。
初めての成果:
- 最も大きな公開されたConvNeXtモデルの事前学習(画像の場合、256x256で847Mパラメータ、198 GMAC、125 MActs)
- 非ViT画像タワーのCLIPモデル(以前の画像タワーの事前学習なし)が、ImageNetのゼロショットTop-1で79%を超える精度を達成。
これらのモデルは以下を利用しています:
- 画像タワーとしてtimmのConvNeXt-XXLargeモデル (
convnext_xxlarge
) - 画像タワーの最後に標準的な射影層
- ViT-H-14およびViT-g-14モデルと同じサイズ(1024、ヘッド16、深さ24)のテキストタワー
これらのモデルは256x256の画像解像度で学習されています。画像とテキストを組み合わせたCLIPモデルのサイズは、1.2Bパラメータ、222 GMAC、146 MActsです。256x256では、ConvNext-XXLargeは、FLOPSとパラメータ数でViT-H-14 CLIP構成よりも少し上に位置し、活性化カウントは低くなっています。能力的にはg-14とG-14の間に位置しています。
モデル | 画像サイズ | 埋め込み次元 | GMACs | MActs | パラメータ数 | 画像GMACs | 画像MActs | 画像パラメータ数 | テキストGMACs | テキストMActs | テキストパラメータ数 |
---|---|---|---|---|---|---|---|---|---|---|---|
ViT-H-16 | 224 | 1024 | 150.96 | 122.01 | 986.26 | 127.4 | 100.81 | 632.23 | 23.57 | 21.2 | 354.03 |
ViT-H-14 | 224 | 1024 | 190.97 | 160.61 | 986.11 | 167.4 | 139.41 | 632.08 | 23.57 | 21.2 | 354.03 |
ViT-L-14-336 | 336 | 768 | 197.76 | 278.19 | 427.94 | 191.1 | 270.24 | 304.29 | 6.66 | 7.95 | 123.65 |
convnext_xxlarge | 256 | 1024 | 221.66 | 145.66 | 1200.58 | 198.09 | 124.45 | 846.54 | 23.57 | 21.2 | 354.03 |
RN50x64 | 448 | 1024 | 276.8 | 249.73 | 623.26 | 265.02 | 239.13 | 420.38 | 11.78 | 10.6 | 202.88 |
ViT-g-14 | 224 | 1024 | 290.74 | 213.84 | 1366.68 | 267.18 | 192.64 | 1012.65 | 23.57 | 21.2 | 354.03 |
convnext_xxlarge_320 | 320 | 1024 | 333.08 | 215.66 | 1200.58 | 309.52 | 194.46 | 846.54 | 23.57 | 21.2 | 354.03 |
ViT-H-14-336 | 336 | 1024 | 414.53 | 428.74 | 986.52 | 390.97 | 407.54 | 632.49 | 23.57 | 21.2 | 354.03 |
ViT-bigG-14 | 224 | 1280 | 532.92 | 310.71 | 2539.57 | 483.96 | 275.37 | 1844.91 | 48.96 | 35.34 | 694.66 |
モデルの学習は、Ross Wightmanによってstability.aiクラスターとJUWELS Boosterスーパーコンピュータの両方で行われました。詳細は以下の謝辞を参照してください。
📋 使用方法
元のOpenAI CLIPモデルカードに従い、このモデルは研究コミュニティ向けの研究成果として意図されています。このモデルが、研究者がゼロショット、任意の画像分類をよりよく理解し、探索するのに役立つことを期待しています。また、このようなモデルの潜在的な影響に関する学際的な研究にも使用できることを期待しています。
OpenAIのCLIP論文には、このような分析の例として、潜在的な下流の影響に関する議論が含まれています。さらに、LAION-5Bブログ (https://laion.ai/blog/laion-5b/) と今後の論文には、特に学習データセットに関連する追加の議論が含まれています。
直接的な使用
ゼロショット画像分類、画像とテキストの検索など。
下流の使用
画像分類やその他の画像タスクの微調整、線形プローブ画像分類、画像生成のガイドと条件付けなど。
範囲外の使用
OpenAIのモデルと同様に、
モデルのすべての展開された使用ケース(商用か否かに関わらず)は、現在のところ範囲外です。制限された環境での画像検索などの非展開の使用ケースも、特定の固定されたクラス分類体系でモデルの十分なドメイン内テストが行われない限り、推奨されません。これは、私たちの安全性評価が、特にCLIPの性能が異なるクラス分類体系で変動することを考慮すると、タスク固有のテストの必要性が高いことを示しているためです。これにより、未テストで制限のないモデルの展開は、現在のところどの使用ケースでも潜在的に有害です。
監視や顔認識の分野に該当する特定の使用ケースは、パフォーマンスに関係なく、常に範囲外です。これは、このようなタスクに人工知能を使用することは、公平な使用を保証するためのテスト基準やチェックが不足しているため、現在は時期尚早であると考えられるためです。
このモデルは英語以外の言語で目的的に学習または評価されていないため、その使用は英語の使用ケースに限定する必要があります。
上記の注意に加えて、これらのモデルの学習に使用されたLAION-5Bデータセットには、追加の考慮事項があります。詳細は以下を参照してください。
📈 学習の詳細
学習データ
このモデルはLAION-2Bで学習されました。LAION-2Bは、LAION-5Bの20億サンプルの英語サブセットです。
重要な注意: このデータセットの作成の動機は、大規模なマルチモーダルモデルの学習と、公開されたインターネットからクロールされた未整理の大規模データセットの扱いに関する研究と実験を民主化することです。したがって、このデータセットは研究目的で使用することを推奨します。この大規模データセットは未整理であることに注意してください。データセットの未整理な性質により、収集されたリンクは人間の閲覧者にとって非常に不快で不快なコンテンツにつながる可能性があります。したがって、デモリンクを使用する場合は注意して、自己責任で使用してください。独自に学習したNSFW分類器を使用して安全タグに基づいてサンプルをフィルタリングすることで、「安全な」サブセットを抽出することが可能です。これにより、閲覧時に潜在的に有害なコンテンツに遭遇する可能性は大幅に減少しますが、安全モードでも有害なコンテンツが存在する可能性を完全に排除することはできないため、警告は依然として有効です。私たちは、このデータセットを幅広い研究や他の関心のあるコミュニティに公開することで、大規模モデルの学習に伴う利点と、小さなコミュニティに制限された閉じた大規模データセットで作業する場合に報告されないまま、または見過ごされる可能性のある落とし穴や危険性について、透明性の高い調査が可能になると考えています。ただし、このデータセットを公開しているが、このリリースで奨励したい大規模モデルの一般的な特性と安全性に関する基礎研究がまだ進行中であるため、すぐに使える産業用製品の作成には使用しないことを推奨します。
学習手順
主要な学習は、グローバルバッチサイズ81920で、135.6Mサンプルのチェックポイント間隔256で行われ、学習中に合計約34Bサンプルが見られました。
このモデルの学習中に、モデルの数値安定性とクラスターの安定性およびパフォーマンスの両方に関して多くの困難がありました。float16 AMPとデフォルトのadam beta2で学習を試みた最初の試みでは、損失の急上昇と最終的なNaNの爆発が発生しました。beta2
を0.97に減らすと改善しましたが、損失 / ゼロショット曲線が予想通りに追跡されませんでした。PyTorchのナイトリービルドに切り替えた後、bfloat16 + AMPを使用して学習することが可能になり(最近のH/14、g/14、およびG/14モデルと同様)、beta2を0.98に戻してメトリクスが改善しました。
チェックポイント間隔 | クラスター | GPU数 | ノード数 | GPU | ローカルバッチサイズ | サンプル/秒 | GPUあたりのサンプル/秒 | 精度 | adam beta2 |
---|---|---|---|---|---|---|---|---|---|
1 - 2 | Stability | 1024 | 128 | A100 40GB | 80 | 37-40k | 36-39 | amp + fp16 | 0.97 |
3 - 32 | Stability | 512 | 64 | A100 80GB | 160 | 27-32k | 52-62 | amp + fp16 | 0.97 |
33 - 75 | Booster | 1024 | 256 | A100 40GB | 80 | 48k | 47 | amp + fp16 | 0.97 |
76 - 165 | Booster | 1024 | 256 | A100 40GB | 80 | 51k | 50 | amp + bf16 | 0.98 |
166 - 232 | Stability | 320 | 40 | A100 80GB | 256 | 18-19k | 56-59 | amp + bf16 | 0.98 |
233 - 249 | Booster | 1024 | 256 | A100 40GB | 80 | 51k | 50 | amp + bf16 | 0.98 |
250 - 256 | Stability | 1024 | 128 | A100 40GB | 80 | 27-31k | 26-30 | amp + bf16 | 0.98 |
JUWELS Boosterは、ノードあたり4つのA100 GPUと、ノードあたり4つのHDR-200 IBアダプター(GPUあたり200Gbit/秒)を備えています。Stabilityのセットアップでは、ノードあたり8つのA100 GPUと、ノードあたり400Gbit/秒のEFAネットワーキング(GPUあたり50 GBit/秒)を使用しています。さまざまな構成で、学習効率(GPUあたりのスループット)に大きな変動が見られました。両方のクラスターでの1024 GPU構成は、特にクラッシュしやすい(または「良い」GPUのセットで実行するのが非常に困難)でした。
128の8-GPU(40GB A100)構成のslurm srunコマンドラインは以下の通りです:
srun --cpu_bind=v --accel-bind=gn python -m training.main \
--save-frequency 1 \
--name "xxlarge-2b-81920-bf16" \
--resume "latest" \
--logs "/runs" \
--log-every-n-steps 50 \
--train-data="pipe:aws s3 cp s3://laion5b/laion2B-data/{000000..231349}.tar -" \
--train-num-samples 135646078 \
--dataset-type webdataset \
--warmup 10000 \
--batch-size=80 \
--epochs=256 \
--dataset-resampled \
--aug-cfg use_timm=True scale='(0.33, 1.0)' re_prob=0.35 \
--precision amp_bfloat16 \
--grad-clip-norm 5.0 \
--lr 1e-3 \
--workers=6 \
--beta2 0.98 \
--model "convnext_xxlarge" \
--seed 0 \
--ddp-static-graph \
--local-loss \
--gather-with-grad \
--grad-checkpointing \
--report-to "tensorboard"
最後の10%の再学習では、より高いグローバルバッチサイズ95744と、より高い学習率とわずかに強化された拡張を使用しました。
チェックポイント間隔 | クラスター | GPU数 | ノード数 | GPU | ローカルバッチサイズ | サンプル/秒 | GPUあたりのサンプル/秒 | 精度 | adam beta2 |
---|---|---|---|---|---|---|---|---|---|
231 - 256 | stability | 1088 | 136 | A100 40GB | 88 | 32-35k | 29-32 | amp + bf16 | 0.98 |
136の8-GPU(40GB A100)ノードのslurm srunコマンドラインは以下の通りです:
srun --cpu_bind=v --accel-bind=gn python -m training.main \
--save-frequency 1 \
--name "xxlarge-2b-81920-r-bf16" \
--resume "latest" \
--logs "/runs" \
--log-every-n-steps 50 \
--train-data="pipe:aws s3 cp s3://laion5b/laion2B-data/{000000..231349}.tar -" \
--train-num-samples 135646078 \
--dataset-type webdataset \
--warmup 10000 \
--batch-size=88 \
--epochs=256 \
--dataset-resampled \
--aug-cfg use_timm=True scale='(0.3, 1.0)' re_prob=0.4 \
--precision amp_bfloat16 \
--grad-clip-norm 5.0 \
--lr 2e-3 \
--workers=6 \
--beta2 0.98 \
--model "convnext_xxlarge" \
--seed 0 \
--ddp-static-graph \
--local-loss \
--gather-with-grad \
--grad-checkpointing \
--report-to "tensorboard"
🧪 評価
評価はLAION CLIPベンチマークスイートのコードを使用して行われました。
テストデータ、要因、メトリクス
テストデータ
テストは、分類にはVTAB+(VTAB (https://arxiv.org/abs/1910.04867) と追加のロバストデータセットの組み合わせ)、検索にはCOCOとFlickrを使用して行われました。
結果
これらのモデルは、ImageNet-1kで79.1から79.4のTop-1ゼロショット精度を達成しています。
最後の10%の再学習部分を拡大したもの:
初期のベンチマークは、より広範なデータセットで実行され、https://github.com/LAION-AI/CLIP_benchmark/blob/main/benchmark/results.ipynb で確認できます。
🙏 謝辞
stability.ai とGauss Centre for Supercomputing e.V. (http://gauss-centre.eu) に感謝します。彼らは、Jülich Supercomputing Centre (JSC) のGCS Supercomputer JUWELS Booster上のJohn von Neumann Institute for Computing (NIC) を通じてコンピューティング時間を提供することで、この部分の作業に資金を提供しています。
📖 引用
BibTeX:
LAION-5B
@inproceedings{schuhmann2022laionb,
title={{LAION}-5B: An open large-scale dataset for training next generation image-text models},
author={Christoph Schuhmann and
Romain Beaumont and
Richard Vencu and
Cade W Gordon and
Ross Wightman and
Mehdi Cherti and
Theo Coombes and
Aarush Katta and
Clayton Mullis and
Mitchell Wortsman and
Patrick Schramowski and
Srivatsa R Kundurthy and
Katherine Crowson and
Ludwig Schmidt and
Robert Kaczmarczyk and
Jenia Jitsev},
booktitle={Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track},









