与自然语言处理类似,对预训练视觉主干的迁移提高了模型在各种视觉任务上的性能。更大的数据集、可扩展的架构和新的训练方法都推动了模型性能的提升。
然而,视觉模型仍然远远落后于语言模型。具体来说,迄今为止最大的视觉模型 ViT 只有 4B 参数,而入门级语言模型通常超过 10B 参数,更别说具有 540B 参数的大型语言模型。
为了探索 AI 模型的性能极限,Google Research 最近在 CV 领域的一项研究,率先将 Vision Transformer 参数量扩展到了 22B,提出 ViT-22B,与之前类似的模型参数量 4B 相比,可以说这是迄今为止最大的稠密型 ViT 模型。
论文地址:https://arxiv.org/pdf/2302.05442.pdf
对比之前最大的 ViT- G 和 ViT-e,表 1 给出了比较结果,由下表可得,ViT-22B 主要是扩展了模型的宽度,使得参数量更大,深度和 ViT-G 一样。
当前的 ViT 大模型
正如这位知乎网友所说,难道是谷歌在 ChatGPT 上输了一局,势必要在 CV 领域争口气?
如何做到的?原来研究早期,他们发现在扩展 ViT 的过程中,出现了训练不稳定性,并且可能会带来架构变化。然后研究人员仔细设计模型,并且以前所未有的效率来实现模型并行训练。ViT-22B 的质量是通过一套全面的任务来评估的,从(少样本)分类到密集输出任务,在这些任务中,它达到或超过了当前 SOTA 水平。例如,即使用作冻结的视觉特征提取器,ViT-22B 在 ImageNet 上的准确率也达到了 89.5%。通过训练 text tower 来匹配这些视觉特征,它在 ImageNet 上实现了 85.9% 的零样本设置准确率。此外,该模型可以看作是一个教师,用作蒸馏目标,研究人员训练了一个 ViT-B 学生模型,在 ImageNet 上的准确率为 88.6%,达到了此类规模模型上 SOTA 水平。
模型架构
ViT-22B 是一种基于 Transformer 的编码器模型,类似于原始 Vision Transformer 架构,但包含以下三个主要修改,以提高效率和大规模训练的稳定性:并行层、查询 / 键(QK)归一化和 omitted biases。
并行层。正如 Wang 和 Komatsuzaki 研究所述,该研究设计了一个 Attention 和 MLP 并行结构:
这可以通过组合 MLP 和注意力块的线性投影来实现额外的并行化。值得注意的是,用于查询 / 键 / 值投影的矩阵乘法和 MLP 的第一线性层被融合到一个单独的操作中,对于 MLP 的注意力外投影和第二层线性层也是如此。
QK 归一化。训练大模型的一个困难是模型的稳定性,在将 ViT 扩展的过程中,研究人员发现在几千轮的 step 后训练损失呈发散性。特别是在 8B 参数的模型中这种现象尤为突出。为了稳定模型训练,研究人员采用 Gilmer 等人的方法,在点积注意力计算之前对查询和键应用 LayerNorm 归一化操作,以提升训练的稳定性。具体来说,注意力权重计算为:
omitted biases。在 PaLM 之后,偏置项从 QKV 投影中移除,并且所有的 Layernorm 都在没有偏置的情况下应用,从而提高了加速器的利用率 (3%),且质量没有下降。然而,与 PaLM 不同的是,研究人员对 MLP 密集层使用了偏置项,即便如此,这种方式在兼顾质量的同时,速度没有下降。
图 2 展示了一个 ViT-22B 编码器块。嵌入层在原有 ViT 的基础上进行了 patch 提取、线性投影和添加位置嵌入等操作。研究人员使用多头注意力池化来聚合头中的每个 token 表示。
ViT-22B 使用 14 × 14 的 patch,图像分辨率为 224 × 224。ViT-22B 采用了一种学习到的一维位置嵌入。在对高分辨率图像进行微调期间,研究人员根据预训练的位置嵌入在原始图像中的位置执行二维插值。
训练基础设施与效率
ViT-22B 使用 FLAX 库,实现方式是 JAX,并在 Scenic 中构建。它同时利用了模型和数据并行性。值得一提的是,研究人员使用了 jax. xmap API,它提供了对所有中间体的分片(例如权重和激活)以及芯片间通信的显式控制。研究人员将芯片组织成大小为 t × k 的 2D 逻辑网格,其中 t 是数据平行轴的大小,k 是模型轴的大小。然后,对于 t 组中的每个组,k 个设备获得相同批次的图像,每个设备只保留 1/k 的激活,并负责计算所有线性层输出的 1/k(详细内容如下)。
图 3:异步并行线性操作(y = Ax):跨设备的重叠通信和计算的模型并行矩阵乘法。
异步并行线性操作。为了最大限度地提高吞吐量,必须考虑计算和通信。也就是说,如果希望这些操作在分析上等效于未分片的情况,就必须尽可能少地进行通信,理想情况下让它们重叠,这样就可以保持矩阵乘法单元(FLOP 的大部分容量所在)始终处于繁忙状态。
参数分片。该模型在第一个轴上是数据并行的。每个参数可以在这个轴上完全复制,也可以让每个设备保存它的一个块。研究人员选择从模型参数中分割一些大张量,以便能够拟合更大的模型和批量大小。
使用这些技术,ViT-22B 在 TPUv4 上训练期间,每个核每秒处理 1.15k token。ViT-22B 的模型 flops 利用率(MFU)为 54.9%,表明硬件的使用非常有效。请注意,PaLM 报告的 MFU 为 46.2%,而研究人员在相同硬件上为 ViT-e(仅数据并行)测量的 MFU 为 44.0%。
实验结果
实验探究了 ViT-22B 用于图像分类的评估结果。
表 2 结果显示,ViT-22B 在各种指标上仍有显著的改善。此外,研究表明,像 ViT-22B 这样的大型模型的 Linear probing 可以接近或超过具有高分辨率的小型模型的 full fine-tuning 性能,通常成本更小、更容易做到。
研究进一步在细粒度分类数据集 iNaturalist 2017 上测试线性可分离性,将 ViT-22B 与其他 ViT 变体进行比较。研究测试了 224px 和 384px 的输入分辨率。结果如图 4。研究观察到 ViT-22B 明显优于其他 ViT 变体,特别是在标准的 224px 输入分辨率下。这表明 ViT-22B 中大量的参数对于从图像中提取详细信息是有用的。
表 3 显示了 ViT-22B 对 CLIP、ALIGN、BASIC、CoCa、LiT 模型的零样本迁移结果。表 3 底部比较了三个 ViT 模型性能。
在所有的 ImageNet 测试集中,ViT-22B 取得了相当或更好的结果。值得注意的是,ObjectNet 测试集上的零样本结果与 ViT 模型大小高度相关。最大的 ViT-22B 将新的 SOTA 设置在具有挑战性的 ObjectNet 测试集中。
Out-of-distribution (OOD)。研究构建了一个从 JFT 到 ImageNet 的标签映射,以及从 ImageNet 到不同分布外数据集的标签映射,即 ObjectNet、ImageNet-v2、ImageNet- R 和 ImageNet- A。
目前可以确认的结果是,与 ImageNet 上的改进一致,扩展模型增加了分布外性能。这适用于只看过 JFT 图像的模型,以及在 ImageNet 上进行微调的模型。在这两种情况下,ViT-22B 在更大的模型上都延续了 OOD 性能更好的趋势(图 5,表 11)。
此外,研究人员还研究了 ViT-22B 模型在语义分割和单目深度估计任务中捕获的几何和空间信息质量。
语义分割。研究人员在三个基准上评估 ViT-22B 作为语义分割主干:ADE20K、Pascal Context 和 Pascal VOC。从表 4 可以看出,当只看到少量分割掩码时,ViT-22B 主干迁移效果更好。
单目深度估计。表 5 总结了研究的主要发现。从最上面的行(DPT 解码器)中可以观察到,与不同的主干相比,使用 ViT-22B 特性产生了最好的性能(在所有指标上)。通过将 ViT-22B 主干与 ViT-e(一个较小的模型,但在与 ViT-22B 相同的数据上进行训练)进行比较,研究发现扩展架构可以提高性能。
此外,将 ViT-e 主干与 ViT-L(与 ViT-e 类似的架构,但训练的数据更少)进行比较,研究发现这些改进也来自于扩展训练前的数据。这些发现表明,更大的模型和更大的数据集都有助于提高性能。
该研究还在视频数据集上进行了探索。表 6 展示了在 Kinetics 400 和 Moments in Time 数据集上的视频分类结果,表明可以使用冻结的主干实现具有竞争力的结果。研究首先与 ViT-e 进行比较,ViT-e 拥有最大的先验视觉主干模型,由 40 亿个参数组成,并且也在 JFT 数据集上进行训练。我们观察到更大的 ViT-22B 模型在 Kinetics 400 上提高了 1.5 分,在 Moments in Time 上提高了 1.3 分。
最后研究注意到,通过完整的端到端微调,还有进一步改进的空间。
更多技术细节请参阅原论文。