モデル|スクリプトの例|はじめに|コードの概要|インストール|貢献する|ライセンス
TorchMultimodalは、コンテンツ理解モデルと生成モデルの両方を含む、最先端のマルチモーダル マルチタスク モデルを大規模にトレーニングするための PyTorch ライブラリです。トーチマルチモーダルには次のものが含まれます。
TorchMultimodal には、以下を含む多数のモデルが含まれています。
上記のモデルに加えて、一般的なマルチモーダル タスクにおけるモデルのトレーニング、微調整、評価用のサンプル スクリプトも提供しています。例は、examples/ にあり、次のものが含まれます。
モデル | サポートされているタスク |
---|---|
アルベフ | 検索 視覚的な質問への回答 |
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 などのエンコーダー、ディープ セット フュージョンなどのフュージョン モジュールが含まれます。
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
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 ファイルを参照してください。
LICENSE ファイルにあるように、TorchMultimodal は BSD ライセンスを取得しています。