PyTorch 공식 라이브러리 "신규", TorchMultimodal은 멀티모달 인공지능을 지원합니다

멀티모달 인공지능은 이미지, 텍스트, 음성, 비디오 등 여러 데이터 유형을 여러 지능형 처리 알고리즘과 결합하여 더 높은 성능을 달성하는 새로운 AI 패러다임입니다.
최근 PyTorch는 공식적으로 도메인 라이브러리인 TorchMultimodal을 출시했습니다.SoTA를 위한 다중 작업, 다중 모달 모델의 대규모 훈련.
도서관은 다음을 제공합니다.
- 모델 개발을 가속화하기 위한 구성 가능한 빌딩 블록(모듈, 변환, 손실 함수)
- 출판된 연구, 교육 및 평가 스크립트(FLAVA, MDETR, Omnivore)에서 추출한 SoTA 모델 아키텍처
- 이 모델을 테스트하기 위한 노트북
TorchMultimodal 라이브러리는 아직 활발하게 개발 중이므로 다음 사항에 주의하세요.
https://github.com/facebookresearch/multimodal#installation
TorchMultimodal 개발 배경
기술이 발전함에 따라 여러 유형의 입력(텍스트, 이미지, 비디오, 오디오 신호)을 이해하고 이러한 이해를 바탕으로 다양한 형태의 출력(문장, 그림, 비디오)을 생성할 수 있는 AI 모델이 점점 더 주목을 받고 있습니다.
FAIR(예: FLAVA, Omnivore 및 data2vec)의 최근 작업에서는 다음이 나타났습니다.이해를 위한 다중 모드 모델은 단일 모드 모델보다 유리하며, 어떤 경우에는 새로운 SOTA 표준을 설정하고 있습니다.
Make-a-video와 Make-a-scene과 같은 생성 모델은 현대 인공지능 시스템의 역량을 새롭게 정의하고 있습니다.
PyTorch 생태계에서 멀티모달 AI 개발을 촉진하기 위해 TorchMultimodal 라이브러리가 탄생했고, 그 솔루션은 다음과 같습니다.
- 구성 가능한 빌딩 블록을 제공합니다. 연구자들은 이러한 구성 요소를 사용하여 자신의 워크플로에서 모델 개발과 실험을 가속화할 수 있습니다. 모듈형 설계로 인해 새로운 모달 데이터로 마이그레이션하는 데 어려움이 줄어듭니다.
- 연구를 통해 최첨단 모델을 학습하고 평가하기 위한 종단 간 예시를 제공합니다. 이러한 예제에서는 모델과 배치 크기를 확장하기 위한 통합 FSDP 및 활성화 검사점과 같은 고급 기능을 사용합니다.
TorchMultimodal을 처음 살펴보세요
TorchMultimodal은 PyTorch 도메인 라이브러리입니다.다중 작업 다중 모드 모델의 대규모 훈련을 위해. 다음이 제공됩니다.
1. 빌딩 블록
모듈은 모델, 앙상블 계층, 손실 함수, 데이터 세트, 유틸리티와 같은 구성 가능한 구성 요소의 모음입니다. 예를 들어 다음과 같습니다.
- 온도에 따른 대조 손실: CLIP, FLAVA 등 모델을 학습하는 데 일반적으로 사용되는 함수입니다. 여기에는 ALBEF와 같은 모델에서 사용되는 ImageTextContrastiveLoss와 같은 변수도 포함됩니다.
- 코드북 계층: 벡터 공간에서 최근접 이웃 탐색을 통해 고차원 데이터를 압축하는 것 역시 VQVAE의 중요한 구성 요소입니다.
- 이동된 창 주의: 이 창은 멀티헤드 셀프 어텐션을 기반으로 하며 Swin 3D Transformer와 같은 인코더의 중요한 구성 요소입니다.
- CLIP 구성 요소: OpenAI에서 출시한 이 모델은 텍스트와 이미지 표현을 학습하는 데 매우 효과적인 모델입니다.
- 다중 모드 GPT: 생성기와 결합하면 OpenAI의 GPT 아키텍처는 다중 모드 생성에 더 적합한 추상화로 확장될 수 있습니다.
- 멀티헤드주의: 자기 회귀와 디코딩을 지원하는 주의 기반 모델의 핵심 구성 요소입니다.
2. 예
다음 예제에서는 PyTorch 구성 요소와 공공 인프라(Lightning, TorchMetrics)를 빌딩 블록과 결합하여 문헌에 발표된 SOTA 모델을 복제하는 방법을 보여줍니다. 현재 다음을 포함하여 5가지 예가 제공됩니다.
- 플라바: CVPR에서 승인된 논문의 공식 코드에는 FLAVA 미세 조정에 대한 튜토리얼이 포함되어 있습니다.
논문 보기:https://arxiv.org/abs/2112.04482
- MDETR: PyTorch 생태계에서 상호 운용성 문제를 완화하는 사례를 제공하기 위해 NYU 저자와 협업했습니다. 여기에는 MDETR을 사용한 구문 기반 작성 및 시각적 질의 응답을 위한 노트북이 포함됩니다.
논문 보기:https://arxiv.org/abs/2104.12763
- 잡식성: 비디오 및 3D 데이터를 처리하기 위한 TorchMultimodal 모델의 첫 번째 예. 여기에는 모델을 탐색하기 위한 노트북도 포함됩니다.
논문 보기:https://arxiv.org/abs/2204.08058
- 무겐: OpenAI coinrun의 풍부한 대규모 합성 데이터 세트를 사용하여 텍스트-비디오 생성 및 검색에 대한 데모를 포함하여 자기 회귀 생성 및 검색에 대한 기초적인 작업입니다.
논문 보기:https://arxiv.org/abs/2204.08058
- 알베프: 시각적 질의응답 문제를 풀기 위해 모델을 사용하기 위한 노트북을 포함한 모델 코드입니다.
논문 보기:https://arxiv.org/abs/2107.07651
다음 코드는 CLIP과 관련된 여러 TorchMultimodal 구성 요소의 사용법을 보여줍니다.
# instantiate clip transform
clip_transform = CLIPTransform()
# pass the transform to your dataset. Here we use coco captions
dataset = CocoCaptions(root= ..., annFile=..., transforms=clip_transform)
dataloader = DataLoader(dataset, batch_size=16)
# instantiate model. Here we use clip with vit-L as the image encoder
model= clip_vit_l14()
# define loss and other things needed for training
clip_loss = ContrastiveLossWithTemperature()
optim = torch.optim.AdamW(model.parameters(), lr = 1e-5)
epochs = 1
# write your train loop
for _ in range(epochs):
for batch_idx, batch in enumerate(dataloader):
image, text = batch
image_embeddings, text_embeddings = model(image, text)
loss = contrastive_loss_with_temperature(image_embeddings, text_embeddings)
loss.backward()
optimizer.step()
TorchMultimodal 설치
Python ≥ 3.7(CUDA 지원 설치 여부와 관계없음).
다음 코드는 conda 설치를 예로 들어 설명합니다.
필수 조건
1. conda 환경 설치
conda create -n torch-multimodal python=\<python_version\>
conda activate torch-multimodal
2. PyTorch, torchvision, torchtext 설치
PyTorch 문서를 참조하세요.
https://pytorch.org/get-started/locally/
# Use the current CUDA version as seen [here](https://pytorch.org/get-started/locally/)
# Select the nightly Pytorch build, Linux as the OS, and conda. Pick the most recent CUDA version.
conda install pytorch torchvision torchtext pytorch-cuda=\<cuda_version\> -c pytorch-nightly -c nvidia
# For CPU-only install
conda install pytorch torchvision torchtext cpuonly -c pytorch-nightly
바이너리 파일에서 설치
Linux에서는 Python 3.7, 3.8, 3.9용 야간 바이너리를 pip 휠을 통해 사용할 수 있습니다. 현재 PyPI를 통해 지원되는 플랫폼은 Linux 플랫폼뿐입니다.
python -m pip install torchmultimodal-nightly
소스 설치
개발자는 소스에서 예제를 빌드하고 실행할 수도 있습니다.
git clone --recursive https://github.com/facebookresearch/multimodal.git multimodal
cd multimodal
pip install -e .
위의 내용은 TorchMultimodal에 대한 간략한 소개입니다. 코드 외에도,PyTorch는 공식적으로 멀티모달 모델의 미세 조정에 대한 기본 튜토리얼을 출시했습니다. 그리고 PyTorch 분산 PyTorch(FSDP 및 활성화 체크포인팅) 기술을 사용하여 이러한 모델을 확장하는 방법에 대한 블로그입니다.
나중에 이 블로그를 중국어로 번역하겠습니다. PyTorch 개발자 커뮤니티 공식 계정을 계속해서 팔로우해 주세요!
-- 위에--