[Бумага] [Цитаты] [Clip Colab] [Coca Colab]
Добро пожаловать в реализацию с открытым исходным кодом Clip Openai (контрастное предварительное обучение языка).
Используя эту кодовую базу, мы обучили несколько моделей по различным источникам данных и вычислите бюджеты, от небольших экспериментов до более крупных прогонов, включая модели, обученные наборам данных, как Laion-400M, Laion-2B и DataComp-1B. Многие из наших моделей и их масштабирующие свойства подробно изучаются в законах о воспроизводимых масштабах в бумаге для контрастного изучения языка. Некоторые из лучших моделей, которые мы обучали, и их точность ImageEnet-1K показана ниже, наряду с моделью Vit-L, обученной OpenAI и другими современными альтернативами с открытым исходным кодом (все это можно загрузить с помощью OpenClip). Мы предоставляем более подробную информацию о нашей полной коллекции предварительных моделей здесь и с нулевым выстрелом для 38 наборов данных здесь.
| Модель | Данные обучения | Разрешение | # из образцов вид | ImageNet Zero-Shot Acc. |
|---|---|---|---|---|
| Убедительная база | Лаон-2b | 256px | 13b | 71,5% |
| Убедительный большой | Лаон-2b | 320px | 29b | 76,9% |
| Urvnext-xxlarge | Лаон-2b | 256px | 34b | 79,5% |
| Vit-B/32 | DATACOMP-1B | 256px | 34b | 72,8% |
| Vit-B/16 | DATACOMP-1B | 224px | 13b | 73,5% |
| Vit-L/14 | Лаон-2b | 224px | 32B | 75,3% |
| Vit-H/14 | Лаон-2b | 224px | 32B | 78,0% |
| Vit-L/14 | DATACOMP-1B | 224px | 13b | 79,2% |
| Vit-g/14 | Лаон-2b | 224px | 34b | 80,1% |
| Vit-l/14 (оригинальный клип) | Остроумие | 224px | 13b | 75,5% |
| Vit-so400m/14 (siglip) | Вибли | 224px | 45b | 82,0% |
| Vit-so400m-14-siglip-384 (Siglip) | Вибли | 384px | 45b | 83,1% |
| Vit-H/14-Quickgelu (DFN) | DFN-5B | 224px | 39b | 83,4% |
| Vit-H-14-378-Quickgelu (DFN) | DFN-5B | 378px | 44b | 84,4% |
Модельные карты с дополнительными модельными деталями можно найти в концентраторе обнимающего лица под тегом библиотеки OpenClip: https://huggingface.co/models?library=open_clip.
Если вы нашли этот репозиторий полезным, пожалуйста, рассмотрите возможность ссылаться. Мы приветствуем, чтобы кто -нибудь отправил проблему или отправил электронное письмо, если у вас есть какие -либо другие запросы или предложения.
Обратите внимание, что части src/open_clip/ моделирование и код токенизатора являются адаптацией официального репозитория OpenAI.
| Кредит изображения: https://github.com/openai/clip |
pip install open_clip_torch
import torch
from PIL import Image
import open_clip
model , _ , preprocess = open_clip . create_model_and_transforms ( 'ViT-B-32' , pretrained = 'laion2b_s34b_b79k' )
model . eval () # model in train mode by default, impacts some models with BatchNorm or stochastic depth active
tokenizer = open_clip . get_tokenizer ( 'ViT-B-32' )
image = preprocess ( Image . open ( "docs/CLIP.png" )). unsqueeze ( 0 )
text = tokenizer ([ "a diagram" , "a dog" , "a cat" ])
with torch . no_grad (), torch . cuda . amp . autocast ():
image_features = model . encode_image ( image )
text_features = model . encode_text ( text )
image_features /= image_features . norm ( dim = - 1 , keepdim = True )
text_features /= text_features . norm ( dim = - 1 , keepdim = True )
text_probs = ( 100.0 * image_features @ text_features . T ). softmax ( dim = - 1 )
print ( "Label probs:" , text_probs ) # prints: [[1., 0., 0.]]Смотрите также это [clip colab].
Чтобы эффективно вычислить миллиарды внедрения, вы можете использовать Clip-Retrieveal, который обладает поддержкой OpenClip.
Мы предлагаем простой модель интерфейса для создания как предварительно обученных, так и неподготовленных моделей. Чтобы увидеть, какие предварительные модели доступны, используйте следующий фрагмент кода. Более подробная информация о наших предварительных моделях доступна здесь.
> >> import open_clip
> >> open_clip . list_pretrained ()Вы можете узнать больше о моделях, которые мы поддерживаем (например, количество параметров, провалов) в этой таблице.
ПРИМЕЧАНИЕ. Многие существующие контрольные точки используют активацию QuickGelu из оригинальных моделей OpenAI. Эта активация на самом деле менее эффективна, чем нативное Torch.nn.gelu в недавних версиях Pytorch. Модель по умолчанию в настоящее время nn.gelu, поэтому следует использовать определения моделей с постфиксом -quickgelu для предварительных весов OpenClip. Все веса Openai, предварительно подготовленные, всегда будут по умолчанию в QuickGelu. Можно также использовать определения модели не -quickgelu с предварительно проведенными весами, используя Quickgelu, но будет падение точности, для тонкой настройки, которая, вероятно, исчезнет для более длинных пробежек. Будущие обученные модели будут использовать nn.gelu.
Модели могут быть загружены с помощью open_clip.create_model_and_transforms , как показано в примере ниже. Имя модели и соответствующие pretrained ключи совместимы с выходами open_clip.list_pretrained() .
pretrained аргумент также принимает локальные пути, например, /path/to/my/b32.pt . Вы также можете загрузить контрольные точки с Huggingface таким образом. Для этого загрузите файл open_clip_pytorch_model.bin (например, https://huggingface.co/laion/clip-vit-l-14-datacomp.xl-s13b-b90k/tree/main) и pretrained=/path/to/open_clip_pytorch_model.bin
# pretrained also accepts local paths
model , _ , preprocess = open_clip . create_model_and_transforms ( 'ViT-B-32' , pretrained = 'laion2b_s34b_b79k' ) Этот репозиторий сосредоточен на тренировочных моделях клипов. Чтобы точно настроить обученную модель с нулевым выстрелом на задаче классификации нижней части, такой как ImageNet, см. В нашем другом репозитории: мудрый. Репозиторий мудрый FIT содержит код для нашей статьи о надежной тонкой настройке моделей с нулевым выстрелом, в которых мы вводим метод для тонкой настройки моделей с нулевым выстрелом, сохраняя при этом надежность при смене распределения.
Чтобы загрузить наборы данных как webdataset, мы рекомендуем img2dataset.
См. Пример CC3M IMG2Dataset.
В дополнение к определению учебных данных с помощью файлов CSV, как упомянуто выше, наша кодовая база также поддерживает WebDataset, который рекомендуется для наборов данных о более широком масштабе. Ожидаемый формат представляет собой серию файлов .tar . Каждый из этих файлов .tar должен содержать два файла для каждого примера обучения, один для изображения и один для соответствующего текста. Оба файла должны иметь одинаковое имя, но разные расширения. Например, shard_001.tar может содержать такие файлы, как abc.jpg и abc.txt . Вы можете узнать больше о webdataset по адресу https://github.com/webdataset/webdataset. Мы используем .tar -файлы с по 1000 точек данных, которые мы создаем с помощью брезента.
Вы можете скачать набор данных YFCC от Multimedia Commons. Подобно OpenAI, мы использовали подмножество YFCC для достижения вышеупомянутых чисел точности. Индексы изображений в этом подмножестве находятся в репозитории клипа Openai.
Мы советуем вам сначала создать виртуальную среду с:
python3 -m venv .env
source .env/bin/activate
pip install -U pip
Затем вы можете установить OpenClip для обучения с pip install 'open_clip_torch[training]' .
Если вы хотите внести изменения, чтобы внести код, вы можете клонировать OpenClip, затем запустите make install в папке OpenClip (после создания VirtualENV)
Установите Pip Pytorch в соответствии с https://pytorch.org/get-started/locally/
Вы можете запустить make install-training для установки обучающих DEPS
Тест можно запустить с помощью make install-test а затем make test
python -m pytest -x -s -v tests -k "training" для проведения конкретного теста
Запуск регрессионных тестов против конкретной ревизии или тега GIT:
Генерировать данные тестирования
python tests/util_test.py --model RN50 RN101 --save_model_list models.txt --git_revision 9d31b2ec4df6d8228f370ff20c8267ec6ba39383 Предупреждение : это вызовет GIT и изменит ваше рабочее дерево, но сбросит его в текущее состояние после того, как данные будут сгенерированы!
Не изменяйте свое рабочее дерево, когда тестовые данные генерируются таким образом.
Запустить регрессионные тесты
OPEN_CLIP_TEST_REG_MODELS=models.txt python -m pytest -x -s -v -m regression_testpython -m open_clip_train.main
--save-frequency 1
--zeroshot-frequency 1
--report-to tensorboard
--train-data= " /path/to/train_data.csv "
--val-data= " /path/to/validation_data.csv "
--csv-img-key filepath
--csv-caption-key title
--imagenet-val=/path/to/imagenet/root/val/
--warmup 10000
--batch-size=128
--lr=1e-3
--wd=0.1
--epochs=30
--workers=8
--model RN50 Примечание. imagenet-val -это путь к набору валидации ImageNet для оценки с нулевым выстрелом, а не обучающего набора! Вы можете удалить этот аргумент, если вы не хотите проводить оценку с нулевым выстрелом на ImageNet на протяжении всего обучения. Обратите внимание, что папка val должна содержать подпапки. Если это не так, используйте этот скрипт.
Этот код провел боевой тестирование до 1024 A100 и предлагает различные решения для распределенного обучения. Мы включаем нативную поддержку для кластеров Slurm.
По мере увеличения количества устройств, используемых для тренировок, так и сложность пространства матрицы логита. Используя наивную схему All-Gater, сложность пространства будет O(n^2) . Вместо этого сложность может стать эффективной линейной, если используются флаги --gather-with-grad и --local-loss . Это изменение приводит к численным результатам один на один в качестве наивного метода.
Для более крупных наборов данных (например, LAION2B) мы рекомендуем установить --train-num-samples до более низкого значения, чем полная эпоха, например, --train-num-samples 135646078 до 1/16 эпохи в сочетании с --dataset-resampled для выбывания с заменой. Это позволяет чаще оценивать контрольно -пропускные пункты.
Недавнее исследование показало, что можно отступить от половины до трех четвертей визуальных токенов, что приводит к скорости тренировок до 2-3 раза без потери точности.
Вы можете установить это на конфигурации визуального трансформатора с помощью ключа patch_dropout .
В газете они также созданы без выпадения патча в конце. Вы можете сделать это с аргументом командной строки --force-patch-dropout 0.
OpenClip поддерживает использование нескольких источников данных, разделяя различные пути данных с :: . Например, для обучения на CC12M и на Laion можно использовать --train-data "/data/cc12m/cc12m-train-{0000..2175}.tar::/data/LAION-400M/{00000..41455}.tar" . Использование --dataset-resampled рекомендуется для этих случаев.
По умолчанию в ожидании количество раз, когда модель будет видеть выборку из каждого источника, пропорциональна размеру источника. Например, при обучении на одном источнике данных размером 400 м и один с размером 10 м, образцы из первого источника будут замечены в ожидании.
Мы также поддерживаем различный взвешивание источников данных, используя флаг-флаг --train-data-upsampling-factors . Например, использование --train-data-upsampling-factors=1::1 в приведенном выше сценарии эквивалентно не использовать флаг, а --train-data-upsampling-factors=1::2 эквивалентно увеличению второго источника данных. Если вы хотите выбирать из источников данных с той же частотой, коэффициенты повышения дискретизации должны быть обратно пропорциональны размерам источников данных. Например, если набор данных A имеет 1000 образцов, а набор данных B имеет 100 образцов, вы можете использовать --train-data-upsampling-factors=0.001::0.01 (или аналогично, --train-data-upsampling-factors=1::10 ).
Мы используем torchrun для запуска распределенных заданий. Следующее запускает работу на узле из 4 графических процессоров:
cd open_clip/src
torchrun --nproc_per_node 4 -m open_clip_train.main
--train-data ' /data/cc12m/cc12m-train-{0000..2175}.tar '
--train-num-samples 10968539
--dataset-type webdataset
--batch-size 320
--precision amp
--workers 4
--imagenet-val /data/imagenet/validation/Тот же сценарий выше работает, пока пользователи включают информацию о количестве узлов и узла хоста.
cd open_clip/src
torchrun --nproc_per_node=4
--rdzv_endpoint= $HOSTE_NODE_ADDR
-m open_clip_train.main
--train-data ' /data/cc12m/cc12m-train-{0000..2175}.tar '
--train-num-samples 10968539
--dataset-type webdataset
--batch-size 320
--precision amp
--workers 4
--imagenet-val /data/imagenet/validation/Это, вероятно, самое простое решение для использования. Следующий сценарий использовался для обучения наших самых больших моделей:
#! /bin/bash -x
# SBATCH --nodes=32
# SBATCH --gres=gpu:4
# SBATCH --ntasks-per-node=4
# SBATCH --cpus-per-task=6
# SBATCH --wait-all-nodes=1
# SBATCH --job-name=open_clip
# SBATCH --account=ACCOUNT_NAME
# SBATCH --partition PARTITION_NAME
eval " $( /path/to/conda/bin/conda shell.bash hook ) " # init conda
conda activate open_clip
export CUDA_VISIBLE_DEVICES=0,1,2,3
export MASTER_PORT=12802
master_addr= $( scontrol show hostnames " $SLURM_JOB_NODELIST " | head -n 1 )
export MASTER_ADDR= $master_addr
cd /shared/open_clip
export PYTHONPATH= " $PYTHONPATH : $PWD /src "
srun --cpu_bind=v --accel-bind=gn python -u src/open_clip_train/main.py
--save-frequency 1
--report-to tensorboard
--train-data= " /data/LAION-400M/{00000..41455}.tar "
--warmup 2000
--batch-size=256
--epochs=32
--workers=8
--model ViT-B-32
--name " ViT-B-32-Vanilla "
--seed 0
--local-loss
--gather-with-gradpython -m open_clip_train.main
--train-data= " /path/to/train_data.csv "
--val-data= " /path/to/validation_data.csv "
--resume /path/to/checkpoints/epoch_K.pt Обучение моделей COCA включена путем указания конфигурации COCA с использованием параметра --model учебного сценария. В настоящее время доступными конфигурации являются "coca_base", "coca_vit-b-32" и "coca_roberta-vit-b-32" (который использует Роберту в качестве текстового кодера). Конфигурации Coca отличаются от конфигураций клипов, потому что они имеют дополнительный компонент "multimodal_cfg", который определяет параметры для мультимодального текстового декодера. Вот пример из конфигурации coca_vit-b-32:
"multimodal_cfg" : {
"context_length" : 76 ,
"vocab_size" : 49408 ,
"width" : 512 ,
"heads" : 8 ,
"layers" : 12 ,
"latent_dim" : 512 ,
"attn_pooler_heads" : 8
}Кредит Lucidrains для первоначального кода, GPUCCE для адаптации кода к Open_Clip и IEJMAC для обучения моделей.
import open_clip
import torch
from PIL import Image
model , _ , transform = open_clip . create_model_and_transforms (
model_name = "coca_ViT-L-14" ,
pretrained = "mscoco_finetuned_laion2B-s13B-b90k"
)
im = Image . open ( "cat.jpg" ). convert ( "RGB" )
im = transform ( im ). unsqueeze ( 0 )
with torch . no_grad (), torch . cuda . amp . autocast ():
generated = model . generate ( im )
print ( open_clip . decode ( generated [ 0 ]). split ( "<end_of_text>" )[ 0 ]. replace ( "<start_of_text>" , "" ))Смотрите также это [Coca Colab]
Для тонкой настройки коки на MSCOCO сначала создайте набор данных, одним из способов является использование CSVDataSet, и, возможно, самый простой способ сделать его-это использование clip_benchmark, в котором, в свою очередь, используются Pycocotools (которые могут использоваться также сами по себе).
from clip_benchmark . datasets . builder import build_dataset
import pandas as pd
import os
root_path = "path/to/data/dir" # set this to smth meaningful
ds = build_dataset ( "mscoco_captions" , root = root_path , split = "train" , task = "captioning" ) # this downloads the dataset if it is not there already
coco = ds . coco
imgs = coco . loadImgs ( coco . getImgIds ())
future_df = { "filepath" :[], "title" :[]}
for img in imgs :
caps = coco . imgToAnns [ img [ "id" ]]
for cap in caps :
future_df [ "filepath" ]. append ( img [ "file_name" ])
future_df [ "title" ]. append ( cap [ "caption" ])
pd . DataFrame . from_dict ( future_df ). to_csv (
os . path . join ( root_path , "train2014.csv" ), index = False , sep = " t "
)Это должно создать набор данных CSV, который можно использовать для тонкой настройки Coca с помощью open_clip
python -m open_clip_train.main
--dataset-type " csv "
--train-data " path/to/data/dir/train2014.csv "
--warmup 1000
--batch-size 128
--lr 1e-5
--wd 0.1
--epochs 1
--workers 3
--model " coca_ViT-L-14 "
--report-to " wandb "
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1
--log-every-n-steps 100 Это общая настройка, Open_Clip имеет очень параметры, которые могут быть установлены, python -m open_clip_train.main --help должен показать их. Единственное соответствующее изменение по сравнению с предварительным обучением-это два аргумента
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1которые делают модель только обучать генеративную сторону.
Если вы хотите использовать различные языковые модели в качестве текстового кодера для клипа, вы можете сделать это, используя одну из конфигураций модели обнимающего лица в src/open_clip/model_configs и пропустив свой токенизатор в качестве параметров --model и --hf-tokenizer-name соответственно. В настоящее время мы поддерживаем только Roberta ("Test-Roberta" Config), однако добавление новых моделей должно быть тривиальным. Вы также можете определить, сколько слоев, с конца, оставить Unfrozen с параметром --lock-text-unlocked-layers . Вот пример команды для обучения клипа с Робертой LM, у которого есть последние 10 слоев невзмеров:
python -m open_clip_train.main
--train-data= " pipe:aws s3 cp s3://s-mas/cc3m/{00000..00329}.tar - "
--train-num-samples 3000000
--val-data= " pipe:aws s3 cp s3://s-mas/cc3m/{00330..00331}.tar - "
--val-num-samples 10000
--dataset-type webdataset
--batch-size 256
--warmup 2000
--epochs 10
--lr 5e-4
--precision amp
--workers 6
--model " roberta-ViT-B-32 "
--lock-text
--lock-text-unlocked-layers 10
--name " 10_unfrozen "
--report-to " tensorboard " При запуске на машине с 8 графическими процессорами команда должна создать следующую учебную кривую для концептуальных подписей:
Более подробные кривые для концептуальных подписей приведены по адресу /докс /clip_conceptual_captions.md.
При обучении RN50 на YFCC используются те же гиперпараметры, что и выше, за исключением lr=5e-4 и epochs=32 .
Обратите внимание, что для использования другой модели, такой как ViT-B/32 или RN50x4 или RN50x16 или ViT-B/16 , укажите с --model RN50x4 .
Для журнала Tensorboard, запустите:
tensorboard --logdir=logs/tensorboard/ --port=7777 Для ведения журнала Wandb мы рекомендуем посмотреть на переменную step вместо Step , так как позднее не было должным образом установлено в более ранних версиях этой кодовой базы. Для более старых пробежек с моделями, обученными до #613, переменная Step следует игнорировать. Для новых пробежек, после этого PR, две переменные одинаковы.
Мы рекомендуем https://github.com/laion-ai/clip_benchmark#how-tous для систематической оценки на 40 наборах данных.
python -m open_clip_train.main
--val-data= " /path/to/validation_data.csv "
--model RN101
--pretrained /path/to/checkpoints/epoch_K.ptpython -m open_clip_train.main
--imagenet-val /path/to/imagenet/validation
--model ViT-B-32-quickgelu
--pretrained laion400m_e32 Вы можете переоборудовать предварительно обученную с помощью --distill-model и, --distill-pretrained чтобы указать модель, из которой вы хотели бы переоборудовать. Например, для избытка от openai it-l/14 --distill-model ViT-L-14 --distill-pretrained openai .
Для имитации больших партий Использование --accum-freq k . Если по размеру партии GPU, --batch-size , равен m , то эффективный размер партии будет k * m * num_gpus .
При увеличении --accum-freq с его дефолта 1, образцы/s останутся приблизительно постоянными (размер партии удвоится, как и время на партию). Рекомендуется использовать другие функции для уменьшения размера партии, таких как --grad-checkpointing --local-loss --gather-with-grad прежде чем увеличить --accum-freq . --accum-freq может быть использован в дополнение к этим функциям.
Вместо 1 прямого прохода на пример, в настоящее время есть 2 перехода вперед на пример. Тем не менее, первый делается с torch.no_grad .
Существует некоторая дополнительная память GPU-функции и данные из всех партий m хранятся в памяти.
Существуют также вычисления m потери вместо обычного 1.
Для получения дополнительной информации см. Cui et al. (https://arxiv.org/abs/2112.09331) или Pham et al. (https://arxiv.org/abs/2111.10050).
У нас есть бета -поддержка для обучения и вывода Int8. Вы можете включить обучение Int8 с помощью --use-bnb-linear SwitchBackLinearGlobal или --use-bnb-linear SwitchBackLinearGlobalMemEfficient . Пожалуйста, смотрите библиотеку BitsAndbytes для определений этих слоев. Для Clip Vit-Huge в настоящее время должно соответствовать 10% тренировочному ускорению без потери точности. Больше ускорения, когда слой внимания рефактируется, так что линейные слои тоже заменялись там.
См. Учебное пособие https://github.com/mlfoundations/open_clip/blob/main/tutorials/int8_tutorial.ipynb или бумага.
Всегда можно возобновить непосредственно из удаленного файла, например, файла в ведре S3. Просто установите --resume s3://<path-to-checkpoint> . Это будет работать с любой файловой системой, поддерживаемой fsspec .
Также возможно тренировать модели open_clip , непрерывно поддерживая до S3. Это может помочь избежать медленных локальных файловых систем.
Скажите, что ваш узел имеет локальный SSD /scratch , ковш S3 s3://<path-to-bucket> .
В этом случае установлена --logs /scratch и --remote-sync s3://<path-to-bucket> . Затем фоновый процесс синхронизируется /scratch/<run-name> to s3://<path-to-bucket>/<run-name> . После синхронизации фоновый процесс будет спать в --remote-sync-frequency , которые по умолчанию по умолчанию.
Существует также экспериментальная поддержка синхронизации с другими удаленными файловыми системами, а не только S3. Для этого укажите --remote-sync-protocol fsspec . Тем не менее, это в настоящее время очень медленно и не рекомендуется.
Кроме того, чтобы необязательно избежать сохранения слишком большого количества контрольных точек локально при использовании этих функций, вы можете использовать --delete-previous-checkpoint , которая удаляет предыдущую контрольную точку после сохранения новой.
ПРИМЕЧАНИЕ. Если вы используете эту функцию с --resume latest -есть несколько предупреждений. Во-первых, использование с --save-most-recent что не поддерживается. Во -вторых, поддерживается только s3 . Наконец, поскольку синхронизация происходит в фоновом режиме, возможно, что самая последняя контрольная точка может не быть законченной синхронизировать с пультом.
Модуль open_clip.push_to_hf_hub включает в себя помощников для продвижения моделей /веса и конфигурации в концентратор HF.
Инструмент можно запустить из командной строки, пример: python -m open_clip.push_to_hf_hub --model convnext_large_d_320 --pretrained /train/checkpoints/epoch_12.pt --repo-id laion/CLIP-convnext_large_d_320.laion2B-s29B-b131K-ft
Мы благодарим Центр SuperComputing EV (www.gauss-gent.eu) за финансирование этой части работы, предоставляя вычислительное время через Институт вычислений JULICH (JSC) Института SuperComputing Center (JSC).
Текущее развитие этого репозитория возглавляет Росс Вайтман, Ромен Бомонт, Кейд Гордон и Вайшаал Шанкар.
Оригинальная версия этого хранилища из группы исследователей UW, Google, Stanford, Amazon, Columbia и Berkeley.
Габриэль Илхарко*, Митчелл Вортсман*, Николас Карлини, Рохан Таори, Ахал Дейв, Вайшаал Шанкар, Джон Миллер, Хонгжеок Намконг, Ханнане Хаджиширзи, Али Фархади, Людвиг Шмидт
Особая благодарность Чон Вук Ким и Алеку Рэдфорду за помощь в воспроизведении клипа!
Если вы нашли этот репозиторий полезным, пожалуйста, рассмотрите возможность ссылаться на:
@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 }
} @inproceedings { cherti2023reproducible ,
title = { Reproducible scaling laws for contrastive language-image learning } ,
author = { Cherti, Mehdi and Beaumont, Romain and Wightman, Ross and Wortsman, Mitchell and Ilharco, Gabriel and Gordon, Cade and Schuhmann, Christoph and Schmidt, Ludwig and Jitsev, Jenia } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
pages = { 2818--2829 } ,
year = { 2023 }
} @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 }
} @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 }
}