多模态人工智能是一种新型 AI 范式,是指图像、文本、语音、视频等多种数据类型,与多种智能处理算法相结合,以期实现更高的性能。
近日,PyTorch 官方发布了一个 domain library–TorchMultimodal,用于 SoTA 多任务、多模态模型的大规模训练。
该库提供了:
- 可组合的 building block(module、transforms、损失函数)用于加速模型开发
- 从已发表的研究、训练及评估脚本中提取的 SoTA 模型架构 (FLAVA, MDETR, Omnivore)
- 用于测试这些模型的 notebook
TorchMultimodal 库仍在积极开发中,详情请关注: github.com/facebookres…
TorchMultimodal 开发背景
随着技术的进步,能理解多种类型输入(文本、图像、视频和音频信号),并能利用这种理解来生成不同形式的输出(句子、图片、视频)的 AI 模型越来越引发关注。
FAIR 最近的研究工作(如 FLAVA、 Omnivore 和 data2vec)表明,用于理解的多模态模型与单模态模型相比更有优势,并且在某些情况下正在开创全新的 SOTA。
类似 Make-a-video 以及 Make-a-scene 这样的生成模型,正在重新定义现代人工智能系统的能力边界。
为了促进 PyTorch 生态中多模态 AI 的发展, TorchMultimodal 库应运而生,其解决思路为:
- 提供可组合的 building block, 利用这些 building block,研究人员可以在自己的工作流中加速模型开发和试验。模块化设计也降低了迁移到新模态数据的难度。
- 提供了用于训练和评估研究中最新模型的端到端示例。 这些示例中用到了一些高阶特性,如集成 FSDP 和用于扩展模型及批尺寸的 activation checkpointing。
初识 TorchMultimodal
TorchMultimodal 是一个 PyTorch domain library,用于多任务多模态模型的大规模训练。 它提供:
1. Building Block
模块及可组合 building block 集合,如模型、融合层、损失函数、数据集和实用程序,例如:
- 温度对比损失 (Contrastive Loss with Temperature): 常用于训练模型的函数,如 CLIP 和 FLAVA。此外还包括在 ALBEF 等模型中使用的 ImageTextContrastiveLoss 等变量。
- Codebook layer: 通过向量空间中的最近邻查找压缩高维数据,它也是 VQVAE 的重要组成部分。
- Shifted-window Attention: window 基于 multi-head self attention,是 Swin 3D Transformer 等编码器的重要组件。
- CLIP 组件: 由 OpenAI 发布,是一个在学习文本和图像表征方面非常有效的模型。
- Multimodal GPT: 与生成程序结合时,可将 OpenAI 的 GPT 架构扩展为更适合多模态生成的抽象。
- MultiHeadAttention: 基于 attention 的模型的一个关键组件,支持 auto-regressive 和 decoding。
2. 示例
一组示例展示了如何将 building block 与 PyTorch 组件和公共基础设施 (Lightning, TorchMetrics) 结合,从而复制文献中发表的 SOTA 模型。目前提供了五个示例,其中包括:
-
FLAVA: CVPR 接收论文的官方代码,包括一个关于 FLAVA 微调的教程。
-
MDETR: 与 NYU 的作者合作提供了一个例子,减轻了 PyTorch 生态系统中互操作性 (interoperability) 痛点,包括一个使用 MDETR 进行 phrase grounding 和可视化问答的 notebook。
-
Omnivore: TorchMultimodal 中处理视频和 3D 数据的模型的第一个例子,包括用于探索模型的 notebook。
-
MUGEN: auto-regressive 生成和检索的基础工作,包括使用 OpenAI coinrun 丰富的大规模合成数据集生成和检索 text-video 的 demo。
-
ALBEF: 模型代码,包括用该模型解决视觉问答问题的 notebook。
以下代码展示了几个与 CLIP 相关的 TorchMultimodal 组件的用法:
bash
复制代码
# 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()
安装 TorchMultimodal
Python ≥ 3.7,安不安装 CUDA 支持均可。
以下代码以安装 conda 为例
前提条件
1. 安装 conda 环境
bash
复制代码
conda create -n torch-multimodal python=<python_version>
conda activate torch-multimodal
2. 安装 PyTorch、torchvision 以及 torchtext
参阅 PyTorch 文档: pytorch.org/get-started…
bash
复制代码
# 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 平台。
bash
复制代码
python -m pip install torchmultimodal-nightly
源码安装
开发者也可以通过源码构建并运行示例:
bash
复制代码
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。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓