VCD: смягчение объектных галлюцинаций в больших моделях визуального языка посредством визуального контрастного декодирования
Сыконг Ленг, Хан Чжан, Гуаньчжэн Чен, Синь Ли, Шицзянь Лу, Чунянь Мяо, Лидун Бин
VideoLLaMA 2: Развитие пространственно-временного моделирования и понимания звука в видео-LLM
Цзэсэн Чэн, Сыконг Ленг, Хан Чжан, Ифэй Синь, Синь Ли, Гуаньчжэн Чен, Юнсинь Чжу, Вэньци Чжан, Цзыян Луо, Дели Чжао, Лидун Бин
Проклятие мультимодальности: оценка галлюцинаций больших мультимодальных моделей с точки зрения языка, визуальных и аудиосистем
Сыконг Ленг, Юн Син, Цзэсэн Чэн, Ян Чжоу, Хан Чжан, Синь Ли, Дели Чжао, Шицзянь Лу, Чуньянь Мяо, Лидун Бин
[2024.10.18] Выпуск обучающих и оценочных кодов Inf-CLIP.
Основные зависимости:
Питон >= 3,8
Питорч >= 2.0.0
Версия CUDA >= 11.8
[Удаленно] Установите Inf-CL:
# удаленная установкаpip install inf_cl -i https://pypi.org/simple
[Локально] Установите Inf-CL:
пип установить -e .
Установите необходимые пакеты:
git клон https://github.com/DAMO-NLP-SG/Inf-CLIPcd Inf-CLIP pip install -r требования.txt
inf_cl
— это тритоновая реализация потери Inf-CL:
Кольцо-CL (inf_cl/ring.py#L238)
Инф-CL (inf_cl/ring.py#L251)
inf_clip
— это база кода обучения CLIP с потерей Inf-CL и другими функциями обучения:
Накопление градиента (inf_clip/train/train.py#L180)
Градиентный кеш (inf_clip/train/train.py#L292)
Простой пример того, как использовать потерю Inf-CL для контрастного обучения. Использование такой команды для попытки:
torchrun --nproc_per_node 2 tests/example.py
import torchimport torch.nn.functional as Fimport torch.distributed as distimport numpy as npfrom inf_cl import Cal_inf_lossdef create_cl_tensors(rank, world_size):# Parametersdtype = torch.float32num_heads = 3 # Количество внимания headseq_length_q = 32768 # Длина последовательностиseq_length_k = 32768d_model = 256 # Размер каждой головы (должен быть 16, 32, 64 или 128)# Случайно инициализировать inputsq = torch.rand((seq_length_q // world_size, num_heads * d_model), dtype=dtype, device=f"cuda:{rank}" )k = torch.rand((seq_length_k // world_size, num_heads * d_model), dtype=dtype, device=f"cuda:{rank}")l = torch.ones([], dtype=dtype, device=f" cuda:{rank}") * np.log(1 / 0.07)q = F.normalize(q, p=2, dim=-1).requires_grad_() # Queryk = F.normalize(k, p=2, dim=-1).requires_grad_() # Keyl = l.requires_grad_() # Logit Scalereturn q, k, lif __name__ == "__main__":# Предположим, что распределенная среда была инициализированаdist.init_process_group("nccl")rank = dist.get_rank()world_size = dist.get_world_size()torch.cuda.set_device(rank)# На примере контрастного обучения изображение-текст, q — глобальные функции изображения, # k — текстовые функции, а l — логит-масштаб. q, k, l = create_cl_tensors(rank, world_size)# метки по умолчанию являются диагональными элементами. # labels = torch.arange(q.shape[0])loss = Cal_inf_loss(q, k, Scale=l.exp())print(loss)
* означает принятие стратегии «разгрузки данных».
Обучение с более крупным масштабом данных требует большего размера пакета.
Чтобы облегчить дальнейшую разработку нашей кодовой базы, мы предоставляем краткое руководство по использованию Inf-CLIP для обучения индивидуального CLIP и оценки обученной модели в основных тестах клипов.
Структура обучающих данных:
Инф-КЛИП ├── наборы данных │ ├── cc3m/ # https://github.com/rom1504/img2dataset/blob/main/dataset_examples/cc3m.md| | ├── 0000.tar| | ├── 0001.tar| | ├── ...| | └── 0301.tar │ ├── cc12m/ # https://github.com/rom1504/img2dataset/blob/main/dataset_examples/cc12m.md| | ├── 0000.tar| | ├── 0001.tar| | ├── ...| | └── 1044.tar │ ├── laion400m/ # https://github.com/rom1504/img2dataset/blob/main/dataset_examples/laion400m.md| | ├── 00000.tar| | ├── 00001.tar| | ├── ...| | └── 41407.tar
Команда:
сценарии bash/cc3m/lit_vit-b-32_bs16k.sh сценарии bash/cc12m/lit_vit-b-32_bs32k.sh сценарии bash/laion400m/lit_vit-b-32_bs256k.sh
Структура данных оценки:
Инф-КЛИП ├── наборы данных │ ├── imagenet-1k/ # скачать val_images.tar.gz из imagenet| | └── вал/| | | ├── n01440764| | | ├── n01443537| | | ├── ...| | | └── n15075141 │ ├── clip-benchmark/ # bash datasets/benchmarks_download.sh| | ├── wds_mscoco_captions| | ├── wds_flickr8k| | ├── wds_flickr30k| | ├── wds_imagenet1k| | ├── wds_imagenetv2| | ├── wds_imagenet_sketch| | ├── wds_imagenet-a| | ├── wds_imagenet-r| | ├── wds_imagenet-o| | └── wds_objectnet
Команда:
# сценарии imagenet Assessmentbash/imagenet_eval.sh# сценарии общей оценки Bash/benchmarks_eval.sh
Если вы найдете Inf-CLIP полезным для ваших исследований и приложений, пожалуйста, цитируйте этот BibTeX:
@article{damovl2024infcl, title={Преодоление барьера памяти: почти бесконечное масштабирование размера пакета для контрастных потерь}, автор={Цэсэн Чэн, Хан Чжан, Кехан Ли, Сиконг Ленг, Чжицян Ху, Фэй Ву, Дели Чжао, Синь Ли, Лидонг Бинг}, журнал={препринт arXiv arXiv:2410.17243}, год={2024}, url={https://arxiv.org/abs/2410.12787}}
Кодовая база Inf-CLIP адаптирована из OpenCLIP . Мы также благодарны за следующие проекты, в результате которых возник наш Inf-CL:
OpenAI CLIP , img2dataset , CLIP-Benchmark .
FlashAttention , RingAttention , RingFlashAttention .
Этот проект выпущен под лицензией Apache 2.0, указанной в файле LICENSE. Сервис представляет собой исследовательскую предварительную версию, предназначенную ТОЛЬКО для некоммерческого использования , в соответствии с типовыми лицензиями CLIP, Условиями использования данных, созданными OpenAI и Laion. Пожалуйста, свяжитесь с нами, если вы обнаружите какие-либо потенциальные нарушения.