VCD: 시각적 대조 디코딩을 통해 대규모 시각 언어 모델에서 객체 환각 완화
Sicong Leng, Hang Zhang, Guanzheng Chen, Xin Li, Shijian Lu, Chunyan Miao, Lidong Bing
VideoLLaMA 2: Video-LLM의 공간-시간 모델링 및 오디오 이해 향상
Zesen Cheng, Sicong Leng, Hang Zhang, Yifei Xin, Xin Li, Guanzheng Chen, Yongxin Zhu, Wenqi Zhang, Ziyang Luo, Deli Zhao, Lidong Bing
다중 양식의 저주: 언어, 시각 및 오디오 전반에 걸친 대규모 다중 모드 모델의 환각 평가
Sicong Leng, Yun Xing, Zesen Cheng, Yang Zhou, Hang Zhang, Xin Li, Deli Zhao, Shijian Lu, Chunyan Miao, Lidong Bing
[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 설치:
pip 설치 -e .
필수 패키지를 설치합니다:
자식 클론 https://github.com/DAMO-NLP-SG/Inf-CLIPcd Inf-CLIP pip 설치 -r 요구사항.txt
inf_cl
Inf-CL 손실의 트리톤 구현입니다.
링-CL(inf_cl/ring.py#L238)
Inf-CL(inf_cl/ring.py#L251)
inf_clip
은 Inf-CL 손실 및 기타 교육 기능을 갖춘 CLIP 교육 코드베이스입니다.
그라데이션 누적(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.function as Fimport torch.distributed as distimport numpy as npfrom inf_cl import cal_inf_lossdef create_cl_tensors(rank, world_size):# 매개변수dtype = 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:{순위}") * np.log(1 / 0.07)q = F.normalize(q, p=2, 희미=-1).requires_grad_() # Queryk = F.normalize(k, p=2, im=-1).requires_grad_() # Keyl = l.requires_grad_() # Logit scalereturn q, k, lif __name__ == "__main__":# 분산 환경이 초기화되었다고 가정ddist.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)# 레이블은 기본적으로 대각선 요소입니다. # 레이블 = torch.arange(q.shape[0])loss = cal_inf_loss(q, k, scale=l.exp())print(loss)
*는 "데이터 오프로드" 전략 채택을 나타냅니다.
더 큰 데이터 규모로 훈련하려면 더 큰 배치 크기가 필요합니다.
코드베이스를 기반으로 추가 개발을 촉진하기 위해 Inf-CLIP을 사용하여 맞춤형 CLIP을 교육하고 주류 클립 벤치마크에서 교육된 모델을 평가하는 방법에 대한 빠른 시작 가이드를 제공합니다.
훈련 데이터 구조:
Inf-클립 ├── 데이터세트 │ ├── 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
명령:
배쉬 스크립트/cc3m/lit_vit-b-32_bs16k.sh 배쉬 스크립트/cc12m/lit_vit-b-32_bs32k.sh 배쉬 스크립트/laion400m/lit_vit-b-32_bs256k.sh
평가 데이터 구조:
Inf-클립 ├── 데이터 세트 │ ├── imagenet-1k/ # imagenet의 val_images.tar.gz 다운로드| | └── 발/| | | ├── n01440764| | | ├── n01443537| | | ├── ...| | | └── n15075141 │ ├──clip-benchmark/ # bash 데이터세트/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 평가bash scripts/imagenet_eval.sh# 전체 평가bash scripts/benchmarks_eval.sh
Inf-CLIP이 연구 및 응용에 유용하다고 생각되면 다음 BibTeX를 사용하여 인용해 주세요.
@article{damovl2024infcl, title={메모리 장벽 깨기: 대비 손실을 위한 거의 무한한 배치 크기 확장}, 저자={Zesen Cheng, Hang Zhang, Kehan Li, Sicong Leng, Zhiqiang Hu, Fei Wu, Deli Zhao, Xin Li, Lidong Bing}, 저널={arXiv preprint arXiv:2410.17243}, 연도={2024}, url={https://arxiv.org/abs/2410.12787}}
Inf-CLIP의 코드베이스는 OpenCLIP 에서 채택되었습니다. Inf-CL이 탄생한 다음 프로젝트에도 감사드립니다.
OpenAI CLIP , img2dataset , CLIP-벤치마크 .
FlashAttention , RingAttention , RingFlashAttention .
이 프로젝트는 LICENSE 파일에 있는 Apache 2.0 라이센스에 따라 릴리스됩니다. 이 서비스는 CLIP 모델 라이센스, OpenAI 및 Laion에서 생성된 데이터 사용 약관이 적용되는 비상업적 용도로만 사용되는 연구 미리보기입니다. 잠재적인 위반 사항을 발견하면 당사에 연락해 주십시오.