โมเดล | ตัวอย่างสคริปต์ | เริ่มต้นใช้งาน | ภาพรวมโค้ด | การติดตั้ง | มีส่วนร่วม | ใบอนุญาต
TorchMultimodal เป็นไลบรารี PyTorch สำหรับฝึกอบรมโมเดลมัลติทาสก์มัลติโมดัลที่ล้ำสมัยในวงกว้าง รวมถึงทั้งการทำความเข้าใจเนื้อหาและโมเดลเชิงกำเนิด TorchMultimodal ประกอบด้วย:
TorchMultimodal มีหลายรุ่น ได้แก่
นอกเหนือจากโมเดลข้างต้นแล้ว เรายังจัดเตรียมสคริปต์ตัวอย่างสำหรับการฝึกอบรม การปรับแต่ง และการประเมินโมเดลในงานต่อเนื่องหลายรูปแบบยอดนิยม ตัวอย่างสามารถพบได้ภายใต้ example/ และรวม
แบบอย่าง | งานที่ได้รับการสนับสนุน |
---|---|
อัลเบฟ | การเรียกคืน การตอบคำถามด้วยภาพ |
ปปส | การฝึกอบรมและการอนุมาน (สมุดบันทึก) |
ฟลาวา | การฝึกล่วงหน้า การปรับแต่งแบบละเอียด ซีโร่ช็อต |
นพ | การต่อสายดินของวลี การตอบคำถามด้วยภาพ |
มูเก้น | การเรียกค้นข้อความเป็นวิดีโอ การสร้างข้อความเป็นวิดีโอ |
สัตว์กินพืชทุกชนิด | การฝึกอบรมล่วงหน้า การประเมิน |
ด้านล่างนี้เราจะให้ตัวอย่างเล็กๆ น้อยๆ เกี่ยวกับวิธีการเขียนสคริปต์การฝึกอบรมแบบง่ายๆ หรือสคริปต์การประเมินผลแบบ Zero-shot โดยใช้ส่วนประกอบจาก 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
ดูที่นี่สำหรับการแปลงข้อมูลทั่วไปจากโมเดลยอดนิยม เช่น CLIP, FLAVA และ MAE
TorchMultimodal ต้องใช้ Python >= 3.8 สามารถติดตั้งไลบรารี่โดยมีหรือไม่มีการรองรับ CUDA ข้อมูลต่อไปนี้ถือว่าติดตั้ง conda แล้ว
ติดตั้งสภาพแวดล้อม 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
ไบนารี่ทุกคืนบน Linux สำหรับ Python 3.8 และ 3.9 สามารถติดตั้งผ่าน pip wheel ในตอนนี้เรารองรับแพลตฟอร์ม 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 ดังที่พบในไฟล์ LICENSE