使用LAION-5B的LAION-2B英语子集( https://laion.ai/blog/laion-5b/ )通过OpenCLIP( https://github.com/mlfoundations/open_clip )训练的CLIP ViT L/14模型。
模型训练(“监督训练”)由Ross Wightman在 JUWELS Booster 超级计算机上完成。请参见下面的鸣谢。
与原始模型相同,该模型旨在成为研究社区的研究成果。我们希望该模型能够帮助研究人员更好地理解和探索零样本、任意图像分类。我们还希望它能够用于跨学科研究,以研究这种模型可能带来的潜在影响。
OpenAI的CLIP论文中包含了关于潜在影响的讨论,提供了这种分析的一个示例。此外,LAION-5B博客( https://laion.ai/blog/laion-5b/ )和即将发布的论文还包括与训练数据集特定相关的其他讨论。
零样本图像分类、图像和文本检索等。
图像分类和其他图像任务微调、线性探测图像分类、图像生成引导和条件控制等。
根据OpenAI模型的规定,目前不支持模型的任何部署用例,无论是商业用途还是非商业用途。除非对该模型进行了针对特定、固定类别分类法的领域测试,否则也不推荐在受限制的环境中使用模型进行图像搜索。这是因为我们的安全评估表明,由于CLIP的性能在不同类别分类法下的变异性,对任务特定测试的需求很高,这使得模型在任何用例中的未经测试和无约束部署目前可能会带来潜在的危害。无论模型的性能如何,在任何情况下,属于监视和面部识别领域的某些用例始终超出范围。这是因为目前使用人工智能进行此类任务可能过早,在测试规范和确保公平使用的检查方面存在缺乏。
由于该模型并未针对除英语以外的任何语言进行有目的的训练或评估,因此其使用应仅限于英语语言用例。
请注意,用于这些模型训练的LAION-5B数据集还有其他注意事项,请参见下文。
该模型使用LAION-5B的20亿个英语样本子集进行训练( https://laion.ai/blog/laion-5b/ )。
重要说明:数据集创建的动机是为了使大规模多模态模型训练和处理来自公共可用互联网的待编辑大规模数据集的研究和实验民主化。因此,我们建议将该数据集用于研究目的。请注意,该大规模数据集是未经编辑的。请记住,数据集的未经编辑性质意味着收集到的链接可能会导致对人类观众非常不安和恐怖的内容。因此,请谨慎使用演示链接并自担风险。可以通过根据安全标记筛选样本(使用我们构建的定制化训练的非安全标签分类器)来提取“安全”子集。虽然这样做可以大大降低在查看时可能遇到有害内容的机会,但我们无法完全排除在安全模式下仍然存在有害内容的可能性,因此上述警告在此情况下也适用。我们认为公开向广大研究和其他感兴趣的社区提供数据集将允许对伴随大规模模型训练的好处进行透明的调查,以及当使用仅限于小社区的闭源大规模数据集时可能未报告或未注意到的陷阱和危险。然而,通过提供这个数据集,我们并不建议将其用于创建成品工业产品,因为我们希望通过这个发布推动有关此类大规模模型的一般属性和安全性的基础研究还在进行中。
该模型使用384个A100 GPU进行训练,使用了2亿个样本的“虚拟”时代,其中数据集碎片具有替换抽样。模型进行了160次“虚拟”时代的训练,总共看到了320亿个样本。
最初的68个时代使用float16 AMP进行训练,全局批量大小为79K(每个GPU 208个)。最初一直运行到第75个时代,损失激增,训练失败导致NaN。
同时,Romain Beaumont在稳定性集群上同时训练H/14和g/14模型,遇到了类似的不稳定问题。我们尝试了以下重启方式:
上述方式都没有起作用。大多数方式在与原始方式相同的时代内发生爆炸,唯一例外的是架构修改。
最后,在第69个时代以float32精度重新启动后,所有的不稳定性问题都得到解决,训练继续进行,全局批量大小为86k(每个GPU 224个)。在A100 GPU上,一旦在PyTorch中启用了tf32矩阵乘法,float32对吞吐量几乎没有影响。比float16 AMP慢10%左右。Romain同样更改了精度,但最终使用了bfloat16 AMP来解决问题。
#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 suite 中的代码进行评估。
测试是使用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 上查看。
待办事项-为该模型的指标创建表格。
感谢高斯计算中心(Gauss Centre for Supercomputing e.V.)( http://gauss-centre.eu )通过John von Neumann计算研究所(NIC)在Jülich超级计算中心(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} }
使用以下代码开始使用该模型。
** TODO **-Hugging Face transformers、OpenCLIP和timm入门片段