模型简介
模型特点
模型能力
使用案例
🚀 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英语子集 |









