نماذج | أمثلة على البرامج النصية | البدء | نظرة عامة على الكود | التثبيت | المساهمة | رخصة
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 ()
يحتوي diffusion_labs على مكونات لبناء نماذج الانتشار. لمزيد من التفاصيل حول هذه المكونات، راجع diffusion_labs/README.md.
ابحث هنا عن فئات النماذج بالإضافة إلى أي كود نمذجة آخر خاص ببنية معينة. على سبيل المثال، يحتوي الدليل torchmultimodal/models/blip2 على مكونات النمذجة الخاصة بـ BLIP-2.
ابحث هنا عن وحدات البناء العامة الشائعة التي يمكن تجميعها معًا لبناء بنية جديدة. يتضمن ذلك طبقات مثل كتب الرموز، أو تضمينات التصحيح، أو وحدة تشفير/فك تشفير المحولات، والخسائر مثل فقدان التباين مع درجة الحرارة أو فقدان إعادة الإعمار، وأجهزة التشفير مثل ViT وBERT، ووحدات الدمج مثل Deep Set fusion.
ابحث هنا عن تحويلات البيانات الشائعة من النماذج الشائعة، مثل 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
يمكن تثبيت البرنامج الثنائي Nightly على Linux لـ Python 3.8 و3.9 عبر عجلات النقطة. في الوقت الحالي، ندعم نظام Linux فقط من خلال PyPI.
python -m pip install torchmultimodal-nightly
وبدلاً من ذلك، يمكنك أيضًا البناء من الكود المصدري الخاص بنا وتشغيل الأمثلة الخاصة بنا:
git clone --recursive https://github.com/facebookresearch/multimodal.git multimodal
cd multimodal
pip install -e .
للمطورين يرجى متابعة تثبيت التطوير.
نحن نرحب بأي طلبات ميزات أو تقارير أخطاء أو طلبات سحب من المجتمع. راجع ملف المساهمة للتعرف على كيفية المساعدة.
TorchMultimodal حاصل على ترخيص BSD، كما هو موجود في ملف الترخيص.