モデル概要
モデル特徴
モデル能力
使用事例
🚀 CLIP-convnext_xxlarge-laion2B-s34B-b82K-augreg-rewindのモデルカード
このモデルは、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のゼロショット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 で確認できます。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。
謝辞
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









