Model | Contoh skrip | Memulai | Ikhtisar kode | Instalasi | Berkontribusi | Lisensi
TorchMultimodal adalah perpustakaan PyTorch untuk melatih model multitugas multimodal canggih dalam skala besar, termasuk pemahaman konten dan model generatif. TorchMultimodal berisi:
TorchMultimodal berisi sejumlah model, termasuk
Selain model di atas, kami menyediakan contoh skrip untuk pelatihan, penyesuaian, dan evaluasi model pada tugas multimodal populer. Contoh dapat ditemukan di bawah contoh/ dan sertakan
Model | Tugas yang Didukung |
---|---|
ALBEF | Pengambilan Menjawab Pertanyaan Visual |
DDPM | Pelatihan dan Inferensi (buku catatan) |
FLAVA | Pra-pelatihan Penyempurnaan Tembakan nol |
MDETR | Frase landasan Menjawab Pertanyaan Visual |
MUGEN | Pengambilan teks-ke-video Pembuatan teks-ke-video |
Omnivora | Pra-pelatihan Evaluasi |
Di bawah ini kami memberikan contoh minimal bagaimana Anda dapat menulis skrip pelatihan sederhana atau evaluasi zero-shot menggunakan komponen dari 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 ()
diffusion_labs berisi komponen untuk membangun model difusi. Untuk detail selengkapnya tentang komponen ini, lihat diffusion_labs/README.md.
Lihat di sini untuk kelas model serta kode pemodelan lainnya yang spesifik untuk arsitektur tertentu. Misalnya direktori torchmultimodal/models/blip2 berisi komponen pemodelan khusus untuk BLIP-2.
Lihat di sini untuk mengetahui blok bangunan umum yang dapat digabungkan untuk membangun arsitektur baru. Ini termasuk lapisan seperti buku kode, patch embeddings, atau encoder/decoder transformator, kerugian seperti kerugian kontrastif dengan kerugian suhu atau rekonstruksi, encoder seperti ViT dan BERT, dan modul fusi seperti fusi Deep Set.
Lihat di sini untuk transformasi data umum dari model populer, misalnya CLIP, FLAVA, dan MAE.
TorchMultimodal membutuhkan Python >= 3.8. Perpustakaan dapat diinstal dengan atau tanpa dukungan CUDA. Berikut ini mengasumsikan conda diinstal.
Instal lingkungan conda
conda create -n torch-multimodal python=
conda activate torch-multimodal
Instal pytorch, torchvision, dan torchaudio. Lihat dokumentasi 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
Biner malam di Linux untuk Python 3.8 dan 3.9 dapat diinstal melalui roda pip. Untuk saat ini kami hanya mendukung platform Linux melalui PyPI.
python -m pip install torchmultimodal-nightly
Alternatifnya, Anda juga dapat membuat dari kode sumber kami dan menjalankan contoh kami:
git clone --recursive https://github.com/facebookresearch/multimodal.git multimodal
cd multimodal
pip install -e .
Bagi pengembang silakan ikuti instalasi pengembangannya.
Kami menerima segala permintaan fitur, laporan bug, atau permintaan penarikan dari komunitas. Lihat file KONTRIBUSI untuk mengetahui cara membantu.
TorchMultimodal berlisensi BSD, seperti yang ditemukan dalam file LISENSI.