NVILA:高效视觉语言模型架构与优化实践
动机
视觉语言模型(VLMs)在处理和融合视觉与文本信息方面表现出了卓越的能力,推动了先进的视觉 - 语言交互和对话系统的发展。近年来,研究界在提高 VLMs 的准确性方面取得了巨大的进展,并拓展了它们在各个领域的应用,包括机器人技术、自动驾驶和医学影像。然而,提升其效率的研究却相对较少。
VLMs 在多个方面都是高成本的。
首先,训练 VLM 非常耗时。例如,训练一个最先进的 7B 参数 VLM 可能需要长达 400 个 GPU 天,更不用说更大的模型了。这为研究人员设立了巨大的进入壁垒。
其次,VLM 在应用于特定领域(例如医学影像)时,通常需要进行适应,但微调 VLM 的内存开销非常大。例如,完全微调一个 7B 参数的 VLM 可能需要超过 64GB 的 GPU 内存,远超大多数消费者级 GPU 的内存容量。
最后,VLM 常常被部署在计算资源有限的边缘应用中(如笔记本、机器人),因此在这些环境下部署 VLM 面临资源受限的问题。
解决这些挑战需要一个系统化的方案,以提高 VLM 在各个维度上的效率。
本文亮点
本文介绍了 NVILA,一组旨在优化效率和准确性的开源 VLM。基于 VILA,通过首先提升空间和时间分辨率,再对视觉 token 进行压缩,改进了其模型架构。
'扩展'保存了更多视觉输入的细节,提升了准确性的上限;而'压缩'则将视觉信息压缩为更少的 token,从而提高了计算效率。这种'先扩展再压缩'的策略使得 NVILA 能够在有效且高效的方式下处理高分辨率图像和长视频。此外,还进行了系统的研究,旨在优化 NVILA 在其整个生命周期中的效率,包括训练、微调和部署。
得益于这些创新,NVILA 在效率和准确性上都表现出色。
将训练成本降低了 4.5 倍,微调内存使用降低了 3.4 倍,预填充延迟减少了 1.6-2.2 倍,解码延迟减少了 1.2-2.8 倍;
NVILA 在多个图像和视频基准测试中与许多领先的开源 VLM 和专有 VLM 的准确性相当或更优;
NVILA 还支持新的功能,包括时间定位、机器人导航和医学影像等应用。
方法
首先设计了 NVILA 的高效模型架构,具体方法是首先通过提高空间和时间分辨率,然后压缩视觉 token。接着,提出了一些策略,以提高 NVILA 在整个生命周期中的效率——从训练和微调到部署。除非另有说明,本节中的所有分析将基于 8B 模型。
高效模型架构
我们在 VILA 的基础上构建了 NVILA。如图 4 所示,它是一个自回归的视觉语言模型(VLM),由三个组件组成:一个视觉编码器,用于从视觉输入(如图像、视频)中提取特征;一个映射器,用于对视觉和语言模态的嵌入进行对齐;以及一个 token 处理器,通常是一个大语言模型(LLM),它接受视觉和语言 token 作为输入,并输出语言 token。具体来说,NVILA 使用 SigLIP 作为其视觉编码器,使用两层 MLP 作为映射器,并使用不同大小的 Qwen2 作为其 token 处理器。
原始的 VILA 模型具有非常有限的空间和时间分辨率:例如,它将所有图像的尺寸调整为 448×448,无论原始图像的大小或纵横比如何,并且最多从视频中采样 14 帧。空间调整和时间采样都会导致信息的显著丢失,限制了模型有效处理更大图像和更长视频的能力。这一点可以在表 8 和表 9 中看到,VILA 在一些文本密集型和长视频基准测试中落后于领先的 VLM,尤其在这些基准上表现不佳。
本文提倡**'先扩展后压缩'** 的范式:首先提高空间/时间分辨率以提升准确性,然后通过压缩视觉 token 来提高效率。提高分辨率能够提高性能上限,但仅靠这一点会显著增加计算成本。例如,将分辨率加倍会将视觉 token 的数量加倍,从而使得训练和推理成本增加超过 2 倍,因为自注意力机制的计算复杂度是与 token 数量的平方成正比的。接下来,可以通过压缩空间/时间 token 来降低这一成本。压缩后的视觉 token 具有更高的信息密度,能够用更少的 token 来保留或甚至提高空间和时间细节。
空间'先扩展后压缩'
对于空间扩展,直接提高视觉编码器的图像分辨率(例如,提升到 896×896)是非常自然的做法。虽然这样可以提高性能,但对所有图像应用统一的高分辨率将会效率低下,尤其是对于那些不需要太多细节的小图像。为了解决这个问题,我们应用了切片方法,该方法通过图像切片高效提取多尺度高分辨率特征。例如,假设有一个在 448x448 分辨率上预训练的视觉编码器,且输入图像大小不一,首先将图像调整为多个尺度(如 448²、896²、1344²),然后将每个尺度的图像切割成多个 448²的小块,每块单独由编码器处理。同一尺度的所有小块的特征图会拼接回该尺度的完整特征图。最后,来自不同尺度的特征图会被插值为相同的尺寸并在通道维度上进行拼接。
总是将图像调整为正方形,无论原始纵横比如何。这可能导致图像变形,尤其是对于那些很高或很宽的图像。为了解决这个问题,提出了 Dynamic-Resize,它自适应地处理不同纵横比的图像。Dynamic-Resize 遵循切片的方法,但在最大图像尺度上,动态调整图像尺寸,使其保持原始纵横比且能被 448²的切片整除。这一方法灵感来自于 InternVL 中的动态分辨率策略。经过切片处理后,来自不同尺度的特征图会插值至最大尺度并进行拼接。
配备 Dynamic-Resize 后,模型能够从图像中获取高分辨率的信息,在文本密集型的基准测试中,性能提高了最多 30%(见表 1)。因此,我们的目标转向压缩空间 token。VILA 发现,应用简单的 2×2 空间到通道(STC)重排方法可以在不牺牲准确性的情况下将 token 数量减少 4 倍。然而,进一步压缩会显著降低性能:例如,当减少最小切片的数量并将 STC 增大到 3×3 时,DocQA 任务上的准确性下降了近 10%。我们推测,更激进的压缩会使得映射器变得更难训练。为此,引入了一个额外的视觉编码器预训练阶段,联合调整视觉编码器和映射器。这有助于恢复大部分因空间 token 压缩而导致的准确性损失,在训练和推理过程中实现了 2.4 倍的加速。


