多模态人工智能是一种新型 AI 范式,是指图像、文本、语音、视频等多种数据类型,与多种智能处理算法相结合,以期实现更高的性能。
近日,PyTorch 官方发布了一个 domain library–TorchMultimodal,用于 SoTA 多任务、多模态模型的大规模训练。
该库提供了:
TorchMultimodal 库仍在积极开发中,详情请关注:
https://github.com/facebookresearch/multimodal#installation
随着技术的进步,能理解多种类型输入(文本、图像、视频和音频信号),并能利用这种理解来生成不同形式的输出(句子、图片、视频)的 AI 模型越来越引发关注。
FAIR 最近的研究工作(如 FLAVA 、 Omnivore 和 data2vec)表明,用于理解的多模态模型与单模态模型相比更有优势,并且在某些情况下正在开创全新的 SOTA 。
类似 Make-a-video 以及 Make-a-scene 这样的生成模型,正在重新定义现代人工智能系统的能力边界。
为了促进 PyTorch 生态中多模态 AI 的发展, TorchMultimodal 库应运而生,其解决思路为:
TorchMultimodal 是一个 PyTorch domain library,用于多任务多模态模型的大规模训练。 它提供:
模块及可组合 building block 集合,如模型、融合层、损失函数、数据集和实用程序,例如:
一组示例展示了如何将 building block 与 PyTorch 组件和公共基础设施 (Lightning, TorchMetrics) 结合,从而复制文献中发表的 SOTA 模型。目前提供了五个示例,其中包括:
查看论文:https://arxiv.org/abs/2112.04482
查看论文:https://arxiv.org/abs/2104.12763
查看论文:https://arxiv.org/abs/2204.08058
查看论文:https://arxiv.org/abs/2204.08058
查看论文:https://arxiv.org/abs/2107.07651
以下代码展示了几个与 CLIP 相关的 TorchMultimodal 组件的用法:
# instantiate clip transform
clip_transform = CLIPTransform()
# pass the transform to your dataset. Here we use coco captions
dataset = CocoCaptions(root= ..., annFile=..., transforms=clip_transform)
dataloader = DataLoader(dataset, batch_size=16)
# instantiate model. Here we use clip with vit-L as the image encoder
model= clip_vit_l14()
# define loss and other things needed for training
clip_loss = ContrastiveLossWithTemperature()
optim = torch.optim.AdamW(model.parameters(), lr = 1e-5)
epochs = 1
# write your train loop
for _ in range(epochs):
for batch_idx, batch in enumerate(dataloader):
image, text = batch
image_embeddings, text_embeddings = model(image, text)
loss = contrastive_loss_with_temperature(image_embeddings, text_embeddings)
loss.backward()
optimizer.step()
Python ≥ 3.7,安不安装 CUDA 支持均可。
以下代码以安装 conda 为例
conda create -n torch-multimodal python=\<python_version\>
conda activate torch-multimodal
参阅 PyTorch 文档:
https://pytorch.org/get-started/locally/
# 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 torchtext pytorch-cuda=\<cuda_version\> -c pytorch-nightly -c nvidia
# For CPU-only install
conda install pytorch torchvision torchtext cpuonly -c pytorch-nightly
在 Linux 上,适用于 Python 3.7 、 3.8 和 3.9 的 Nightly binary 可通过 pip wheels 安装。目前只通过 PyPI 支持 Linux 平台。
python -m pip install torchmultimodal-nightly
开发者也可以通过源码构建并运行示例:
git clone --recursive https://github.com/facebookresearch/multimodal.git multimodal
cd multimodal
pip install -e .
以上就是关于 TorchMultimodal 的简单介绍。除代码外,PyTorch 官方还发布了一个关于微调多模态模型的基础教程, 以及一篇关于如何使用 PyTorch Distributed PyTorch (FSDP and activation checkpointing) 技术扩展这些模型的 blog 。
后续我们将针对这篇 blog 进行汉化整理。欢迎持续关注 PyTorch 开发者社区公众号!
—— 完 ——