모델 | 예제 스크립트 | 시작하기 | 코드 개요 | 설치 | 기여 | 특허
TorchMultimodal 은 콘텐츠 이해 및 생성 모델을 모두 포함하여 규모에 맞는 최첨단 다중 모드 다중 작업 모델을 교육하기 위한 PyTorch 라이브러리입니다. TorchMultimodal에는 다음이 포함됩니다.
TorchMultimodal에는 다음을 포함한 다양한 모델이 포함되어 있습니다.
위의 모델 외에도 널리 사용되는 다중 모드 작업에 대한 모델 교육, 미세 조정 및 평가를 위한 예제 스크립트를 제공합니다. 예제는 예제/에서 찾을 수 있으며 다음을 포함합니다.
모델 | 지원되는 작업 |
---|---|
알베프 | 검색 시각적 질문 답변 |
DDPM | 훈련 및 추론(노트북) |
플라바 | 사전 훈련 미세 조정 제로샷 |
MDETR | 문구 접지 시각적 질문 답변 |
무겐 | 텍스트-비디오 검색 텍스트-비디오 생성 |
잡식동물 | 사전 훈련 평가 |
아래에서는 TorchMultimodal의 구성 요소를 사용하여 간단한 교육 또는 제로샷 평가 스크립트를 작성하는 방법에 대한 최소한의 예를 제공합니다.
import torch
from PIL import Image
from torchmultimodal . models . flava . model import flava_model
from torchmultimodal . transforms . bert_text_transform import BertTextTransform
from torchmultimodal . transforms . flava_transform import FLAVAImageTransform
# Define helper function for zero-shot prediction
def predict ( zero_shot_model , image , labels ):
zero_shot_model . eval ()
with torch . no_grad ():
image = image_transform ( img )[ "image" ]. unsqueeze ( 0 )
texts = text_transform ( labels )
_ , image_features = zero_shot_model . encode_image ( image , projection = True )
_ , text_features = zero_shot_model . encode_text ( texts , projection = True )
scores = image_features @ text_features . t ()
probs = torch . nn . Softmax ( dim = - 1 )( scores )
label = labels [ torch . argmax ( probs )]
print (
"Label probabilities: " ,
{ labels [ i ]: probs [:, i ] for i in range ( len ( labels ))},
)
print ( f"Predicted label: { label } " )
image_transform = FLAVAImageTransform ( is_train = False )
text_transform = BertTextTransform ()
zero_shot_model = flava_model ( pretrained = True )
img = Image . open ( "my_image.jpg" ) # point to your own image
predict ( zero_shot_model , img , [ "dog" , "cat" , "house" ])
# Example output:
# Label probabilities: {'dog': tensor([0.80590]), 'cat': tensor([0.0971]), 'house': tensor([0.0970])}
# Predicted label: dog
import torch
from torch . utils . data import DataLoader
from torchmultimodal . models . masked_auto_encoder . model import vit_l_16_image_mae
from torchmultimodal . models . masked_auto_encoder . utils import (
CosineWithWarmupAndLRScaling ,
)
from torchmultimodal . modules . losses . reconstruction_loss import ReconstructionLoss
from torchmultimodal . transforms . mae_transform import ImagePretrainTransform
mae_transform = ImagePretrainTransform ()
dataset = MyDatasetClass ( transforms = mae_transform ) # you should define this
dataloader = DataLoader ( dataset , batch_size = 8 )
# Instantiate model and loss
mae_model = vit_l_16_image_mae ()
mae_loss = ReconstructionLoss ()
# Define optimizer and lr scheduler
optimizer = torch . optim . AdamW ( mae_model . parameters ())
lr_scheduler = CosineWithWarmupAndLRScaling (
optimizer , max_iters = 1000 , warmup_iters = 100 # you should set these
)
# Train one epoch
for batch in dataloader :
model_out = mae_model ( batch [ "images" ])
loss = mae_loss ( model_out . decoder_pred , model_out . label_patches , model_out . mask )
loss . backward ()
optimizer . step ()
lr_scheduler . step ()
확산_labs에는 확산 모델을 구축하기 위한 구성요소가 포함되어 있습니다. 이러한 구성 요소에 대한 자세한 내용은 확산_labs/README.md를 참조하세요.
특정 아키텍처와 관련된 모델 클래스와 기타 모델링 코드를 여기에서 찾아보세요. 예를 들어 torchmultimodal/models/blip2 디렉토리에는 BLIP-2에 특정한 모델링 구성 요소가 포함되어 있습니다.
새로운 아키텍처를 구축하기 위해 함께 연결할 수 있는 일반적인 일반 빌딩 블록을 여기에서 찾아보세요. 여기에는 코드북, 패치 임베딩 또는 변환기 인코더/디코더와 같은 레이어, 온도 대비 손실 또는 재구성 손실과 같은 손실, ViT 및 BERT와 같은 인코더, Deep Set 융합과 같은 융합 모듈이 포함됩니다.
CLIP, FLAVA, MAE 등 인기 모델의 일반적인 데이터 변환을 여기에서 찾아보세요.
TorchMultimodal에는 Python >= 3.8이 필요합니다. 라이브러리는 CUDA 지원 유무에 관계없이 설치할 수 있습니다. 다음은 conda가 설치되어 있다고 가정합니다.
콘다 환경 설치
conda create -n torch-multimodal python=
conda activate torch-multimodal
pytorch, torchvision, torchaudio를 설치합니다. PyTorch 문서를 참조하세요.
# 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 torchaudio pytorch-cuda= -c pytorch-nightly -c nvidia
# For CPU-only install
conda install pytorch torchvision torchaudio cpuonly -c pytorch-nightly
Python 3.8 및 3.9용 Linux의 Nightly 바이너리는 pip 휠을 통해 설치할 수 있습니다. 현재 우리는 PyPI를 통해서만 Linux 플랫폼을 지원합니다.
python -m pip install torchmultimodal-nightly
또는 소스 코드에서 빌드하고 예제를 실행할 수도 있습니다.
git clone --recursive https://github.com/facebookresearch/multimodal.git multimodal
cd multimodal
pip install -e .
개발자의 경우 개발 설치를 따르세요.
우리는 커뮤니티의 모든 기능 요청, 버그 보고서 또는 풀 요청을 환영합니다. 도움을 주는 방법은 CONTRIBUTING 파일을 참조하세요.
TorchMultimodal은 LICENSE 파일에 있는 BSD 라이센스입니다.