模型概述
模型特點
模型能力
使用案例
🚀 CLIP ViT-L/14 - LAION-2B模型卡片
本模型是基於Transformer架構的圖像分類模型,使用LAION-2B英語子集訓練,可用於零樣本圖像分類、圖像和文本檢索等任務。
🚀 快速開始
使用以下代碼開始使用該模型:
# TODO - Hugging Face transformers, OpenCLIP, and timm getting started snippets
✨ 主要特性
- 多用途:可用於零樣本圖像分類、圖像和文本檢索、圖像分類微調、線性探針圖像分類、圖像生成引導和調節等。
- 大規模訓練:使用LAION-2B英語子集進行訓練,在384個A100 GPU上進行了大規模訓練。
📦 安裝指南
暫未提供相關安裝步驟。
💻 使用示例
暫未提供相關代碼示例。
📚 詳細文檔
模型詳情
模型描述
這是一個CLIP ViT L/14模型,使用OpenCLIP(https://github.com/mlfoundations/open_clip)在LAION-5B的LAION-2B英語子集(https://laion.ai/blog/laion-5b/)上進行訓練。
模型訓練由Ross Wightman在JUWELS Booster超級計算機上完成。詳情見下文致謝部分。
用途
直接用途
零樣本圖像分類、圖像和文本檢索等。
下游用途
圖像分類和其他圖像任務微調、線性探針圖像分類、圖像生成引導和調節等。
非預期用途
與OpenAI模型一樣,
任何模型的部署用例(無論是否商業用途)目前都超出了預期範圍。非部署用例,如在受限環境中的圖像搜索,除非對模型進行了特定、固定類別的徹底領域測試,否則也不建議使用。這是因為我們的安全評估表明,特別是考慮到CLIP在不同類別分類法下的性能差異,需要進行特定任務的測試。這使得在任何用例中未經測試和不受約束地部署模型目前可能有害。
某些屬於監控和人臉識別領域的用例,無論模型性能如何,始終超出預期範圍。這是因為目前在缺乏確保公平使用的測試規範和檢查的情況下,將人工智能用於此類任務可能還為時過早。
由於該模型僅在英語上進行了訓練和評估,其使用應限於英語用例。
此外,用於訓練這些模型的LAION-5B數據集還有其他注意事項,見下文。
訓練詳情
訓練數據
該模型使用LAION-5B的20億樣本英語子集(https://laion.ai/blog/laion-5b/)進行訓練。
⚠️ 重要提示
創建該數據集的動機是為了推動大規模多模態模型訓練和處理從公開互聯網爬取的未整理大規模數據集的研究和實驗。因此,我們建議將該數據集用於研究目的。請注意,這個大規模數據集是未整理的。要記住,數據集的未整理性質意味著收集的鏈接可能會指向讓人類觀看者極度不適和不安的內容。因此,請謹慎使用演示鏈接,並自行承擔風險。可以通過過濾安全標籤(使用我們構建的自定義訓練的NSFW分類器)提取一個“安全”子集。雖然這大大降低了在查看時遇到潛在有害內容的可能性,但我們不能完全排除在安全模式下仍存在有害內容的可能性,因此該警告同樣適用。我們認為,向廣泛的研究和其他感興趣的社區公開提供該數據集,將有助於透明地研究訓練大規模模型帶來的好處,以及在使用僅限於小社區的封閉大型數據集時可能未報告或未注意到的陷阱和危險。然而,我們不建議使用該數據集創建現成的工業產品,因為關於此類大規模模型的一般屬性和安全性的基礎研究仍在進行中,我們希望通過此次發佈來鼓勵這方面的研究。
訓練過程
該模型在384個A100 GPU上進行訓練,使用2億樣本的“虛擬”輪次,其中數據集分片進行有放回採樣。模型進行了160個虛擬輪次的訓練,總共處理了320億個樣本。
前68個輪次使用float16 AMP進行訓練,全局批次大小為79K(每個GPU 208個)。最初訓練到第75個輪次時,損失突然飆升,訓練因NaN而失敗。
Romain Beaumont同時在Stability集群上訓練H/14和g/14模型,也遇到了類似的不穩定性問題。我們共同嘗試了以下重啟方法:
- 不同的數據集洗牌種子
- 不同的學習率
- 梯度裁剪
- 架構修改
- 如https://github.com/mlfoundations/open_clip/pull/153 所述的規範修改(最終使用穩定規範,文本轉換器使用嵌入後規範),感謝Phil Wang
- 類似Normformer的額外注意力塊規範(https://arxiv.org/abs/2110.09456)
- 類似Swin-V2的縮放餘弦注意力(https://arxiv.org/abs/2111.09883)
以上方法均未成功。除了架構修改外,大多數方法在與原始訓練相同的輪次內就失敗了。
- Normformer修改顯著改變了網絡結構,使得恢復訓練後無法快速收斂到之前的性能,因此放棄了該方法,但從一開始嘗試可能值得。
- 縮放餘弦注意力最初看起來很有希望,持續到第90個輪次,但損失突然增加並似乎“卡住”了。
最終,在第69個輪次以float32
精度重啟訓練解決了所有不穩定性問題,並繼續以全局批次大小86k(每個GPU 224個)進行訓練。在A100 GPU上,一旦在PyTorch中啟用tf32
矩陣乘法,float32
對吞吐量的影響極小,比float16 AMP
慢約10%。Romain同樣更改了精度,但最終使用bfloat16 AMP
解決了問題。
Slum腳本
#SBATCH --nodes=96
#SBATCH --gres=gpu:4
#SBATCH --ntasks-per-node=4
#SBATCH --cpus-per-task=6
#SBATCH --wait-all-nodes=1
#SBATCH --job-name=open_clip_laion2b
# load low-level libraries
ml purge
source /conda/bin/activate pytorch-112
export NCCL_ASYNC_ERROR_HANDLING=1
export CUDA_VISIBLE_DEVICES=0,1,2,3
export MASTER_PORT=12802
### get the first node name as master address - customized for vgg slurm
### e.g. master(gnodee[2-5],gnoded1) == gnodee2
echo "NODELIST="${SLURM_NODELIST}
master_addr=$(scontrol show hostnames "$SLURM_JOB_NODELIST" | head -n 1)
export MASTER_ADDR=$master_addr"i"
echo "MASTER_ADDR="$MASTER_ADDR
cd /home/me/open_clip
export PYTHONPATH="$PYTHONPATH:$PWD/src"
srun --cpu_bind=none,v --accel-bind=gn python -u src/training/main.py \
--save-frequency 1 \
--zeroshot-frequency 1 \
--train-data="/data/laion2B-en/{00000..23295}.tar" \
--train-num-samples=200000000 \
--warmup 10000 \
--lr "1e-3" \
--batch-size=224 \
--epochs=160 \
--workers=6 \
--model ViT-L-14 \
--name "L14-laion2B" \
--report-to "tensorboard" \
--seed 0 \
--precision 'fp32' \
--ddp-static-graph \
--local-loss \
--dataset-resampled \
--gather-with-grad \
--grad-checkpointing
評估
使用LAION CLIP Benchmark套件中的代碼進行評估。
測試數據、因素和指標
測試數據
使用VTAB+(VTAB(https://arxiv.org/abs/1910.04867)與額外魯棒性數據集的組合)進行分類測試,使用COCO和Flickr進行檢索測試。
待辦事項 - 更多詳細信息
結果
該模型在ImageNet-1k上實現了75.3的零樣本top-1準確率。
已經在更廣泛的數據集上進行了初步的基準測試,目前可在https://github.com/LAION-AI/CLIP_benchmark/blob/main/benchmark/results.ipynb 查看。
待辦事項 - 為該模型的指標創建表格。
致謝
感謝高斯超級計算中心(http://gauss-centre.eu)通過約翰·馮·諾伊曼計算研究所(NIC)在於利希超級計算中心(JSC)的GCS超級計算機JUWELS Booster上提供計算時間,資助了這部分工作。
引用
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},
url={https://openreview.net/forum?id=M3Y74vmsMcY}
}
OpenAI CLIP論文
@inproceedings{Radford2021LearningTV,
title={Learning Transferable Visual Models From Natural Language Supervision},
author={Alec Radford and Jong Wook Kim and Chris Hallacy and A. Ramesh and Gabriel Goh and Sandhini Agarwal and Girish Sastry and Amanda Askell and Pamela Mishkin and Jack Clark and Gretchen Krueger and Ilya Sutskever},
booktitle={ICML},
year={2021}
}
OpenCLIP軟件
@software{ilharco_gabriel_2021_5143773,
author = {Ilharco, Gabriel and
Wortsman, Mitchell and
Wightman, Ross and
Gordon, Cade and
Carlini, Nicholas and
Taori, Rohan and
Dave, Achal and
Shankar, Vaishaal and
Namkoong, Hongseok and
Miller, John and
Hajishirzi, Hannaneh and
Farhadi, Ali and
Schmidt, Ludwig},
title = {OpenCLIP},
month = jul,
year = 2021,
note = {If you use this software, please cite it as below.},
publisher = {Zenodo},
version = {0.1},
doi = {10.5281/zenodo.5143773},
url = {https://doi.org/10.5281/zenodo.5143773}
}
信息表格
屬性 | 詳情 |
---|---|
模型類型 | CLIP ViT L/14 |
訓練數據 | LAION-5B的LAION-2B英語子集 |









