モデル概要
モデル特徴
モデル能力
使用事例
🚀 CLIP-convnext_xxlarge-laion2B-s34B-b82K-augregのモデルカード
このモデルは、LAION-2Bデータセットを使用してOpenCLIPでトレーニングされたCLIP ConvNeXt-XXLargeモデルです。ゼロショット画像分類や画像・テキスト検索などのタスクに利用できます。
🚀 クイックスタート
このモデルは研究コミュニティ向けの研究成果として提供されています。ゼロショット、任意の画像分類をよりよく理解し、探索するためのツールとして期待されています。
✨ 主な機能
- ゼロショット画像分類
- 画像とテキストの検索
- 画像分類やその他の画像タスクの微調整
- 線形プローブ画像分類
- 画像生成のガイダンスと条件付け
📦 インストール
このREADMEには具体的なインストール手順が記載されていません。
💻 使用例
このREADMEには具体的なコード例が記載されていません。
📚 ドキュメント
モデル詳細
モデル説明
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 = ランダムリサイズクロップ (クロップパーセンテージ), RE = ランダム消去 (確率), SD = 確率的深さ (確率) -- 画像タワーのみ
主要なトレーニングは約2ヶ月間にわたって行われました。主要な実行のグローバルバッチサイズは81920でした。トレーニングの最後の約10%は、元の終了時よりも高い学習率と拡張を使用して、グローバルバッチサイズ95744で再実行されました。この2つは「スープ」として平均化されました。詳細はトレーニング詳細を参照してください。
目標:
- 最大の畳み込みCLIP画像タワーのサイズを、下流の使用のために改善された画像サイズスケーリングでViT-gからViT-Gの性能範囲に押し上げる。
最初の成果:
- 事前学習された最大のConvNeXtモデル (画像の場合、256x256で847Mパラメータ、198 GMAC、125 MActs)
- 事前の画像タワーの事前学習がない非ViT画像タワーCLIPモデルで、ImageNetのトップ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 | Mパラメータ | 画像GMACs | 画像MActs | 画像Mパラメータ | テキストGMACs | テキストMActs | テキストMパラメータ |
---|---|---|---|---|---|---|---|---|---|---|---|
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に減らすと改善しましたが、損失 / zs曲線が期待通りに追跡されませんでした。PyTorchのナイトリービルドに切り替えた後、最近のH/14、g/14、およびG/14モデルと同様に、bfloat16 + AMPを使用してトレーニングすることが可能になり、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台の8GPU (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台の8GPU (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のトップ1ゼロショット精度を達成しています。
リワインドを伴う最後の10%の拡大図:
初期のベンチマークは、より広範なデータセットで実行されており、https://github.com/LAION-AI/CLIP_benchmark/blob/main/benchmark/results.ipynb で確認できます。
謝辞
stability.ai とGaussセンターfor Supercomputing e.V. (http://gauss-centre.eu) に感謝します。彼らは、Jülich Supercomputing Centre (JSC) のGCSスーパーコンピュータ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},
year={2022}
}
📄 ライセンス
このモデルはMITライセンスの下で提供されています。









