VLM训练成本降4.5倍!8B参数媲美GPT-4o mini | 英伟达&MIT等发布NVILA:前沿高效
文章链接:https://arxiv.org/pdf/2412.04468
动机
视觉语言模型(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来保留或甚至提高空间和时间细节。
空间“先扩展后压缩”
对于空间token压缩,还有许多其他设计方案,例如RT-1中的TokenLearner和MiniCPM-V中的Perceiver Resampler。然而,即便采用这些可学习的压缩方法,在相同的token压缩比下,它们的性能并没有超越简单的空间到通道设计,甚至在增加了额外的阶段1.5后也未能超过。因此,认为这更多是一个优化问题,超出了本文的讨论范围。
时间“先扩展后压缩”
对于时间扩展,只是简单地增加从输入视频中均匀采样的帧数。参考之前的方法 [17],通过额外的视频监督微调(SFT)来训练模型,以扩展其处理更多帧的能力。从后面表9可以看出,将帧数从8延伸到32,可以使得模型在Video-MME基准测试上的准确性提高超过5%。然而,这也会将视觉token的数量增加4倍。
类似于空间token压缩,将对这些视觉token进行压缩。由于视频中存在内在的时间连续性,采用了时间平均来进行压缩,首先将帧分组,然后对每组内的视觉token进行时间池化。这样可以减少时间冗余(因为连续的帧通常包含相似的信息),同时仍然保留重要的时空信息。从经验来看,将视觉token压缩4倍后,准确性下降是可以接受的。与原始基准相同token数的模型相比,扩展和压缩后的模型几乎没有增加成本,但准确性却大大提高。也使用这种方法进一步扩展了帧数和压缩比,从而在该基准测试中取得了最先进的7B模型(见后面表9)。
高效训练
尽管最先进的VLM具有令人印象深刻的能力,但训练这样一个VLM往往需要高昂的成本和大量的计算资源。本节探讨了系统算法共同设计,以实现高效的VLM训练。在算法方面,研究了一种新的无监督数据集剪枝方法来简化训练数据。在系统层面,探索了FP8混合精度加速。
数据集剪枝
为了提高模型的准确性,之前的研究[19, 5, 20]不断从各种来源获取高质量的SFT数据集,并显示出在基准测试分数上的提升。然而,并非所有数据对模型的贡献相同,数据集的持续增长会导致大量冗余。在NVILA中,遵循“先扩展后压缩”的理念,首先增加我们的SFT数据集混合,然后尝试压缩数据集。然而,从各种来源选择高质量的示例是一个挑战。尽管已有一些关于视觉输入[21, 22, 23]和仅文本输入[24, 25, 26]的探索,但很少有研究解决了在VLM训练中这个问题,其中图像和文本在训练过程中是混合的。NVILA的训练涉及超过1亿的数据,因此需要在保持准确性的同时修剪训练集。
受到最近知识蒸馏研究[27]的启发,利用DeltaLoss来对训练集进行评分:
因此,我们可以对每个子数据集应用DeltaLoss,并根据不同的比例修剪训练集。
为了评估数据修剪标准,将DeltaLoss与随机修剪基线进行比较,结果见表3。对于随机修剪,数据是随机选择的,进行三次实验并报告平均值。对于聚类修剪,应用k-means聚类并使用siglip特征,在每个质心上均匀修剪数据。实验报告了在10个基准测试上的平均表现,重点展示了关键任务,以验证该方法的有效性。
测试了三个修剪阈值:10%、30%和50%,并发现DeltaLoss在所有情况下始终优于随机基线,特别是在GQA和DocVQA任务中,随机修剪显示出显著的性能下降,而DeltaLoss保持准确。注意到50%是一个相对安全的阈值,在该阈值下,平均得分保持竞争力,同时训练速度提高了2倍。因此,在后续实验中将修剪阈值设置为50%。
FP8 训练
FP16 和 BF16已经成为模型训练的标准精度,因为它们能够加速计算且不会导致精度损失,这些精度在 NVIDIA GPU 上得到了原生支持。随着 NVIDIA Hopper 和 Blackwell 架构的问世,新的 GPU(如 H100 和 B200)现在原生支持 FP8,这种精度由于其在计算和内存效率上的潜力,已经成为一种有前景的精度标准。
许多研究者已经将 FP8 应用到大语言模型(LLM)的训练中。NVIDIA 的 Transformer Engine 在 FP8 精度下执行矩阵乘法(GEMM),从而加速了训练速度。FP8-LM 在此基础上进一步量化了梯度、权重主副本和一阶动量为 FP8,从而减少了通信开销和内存占用。COAT 进一步压缩了激活值和优化器的二阶动量,以提高内存效率,同时保持准确性。
本文借鉴了COAT中的 FP8 实现来加速 NVILA 的训练。LLM 和 VLM 训练工作负载之间的一个关键区别在于批次中序列长度的变化性。在 LLM 训练中,样本通常具有统一的长度,增加批次大小到某一程度之后,对训练吞吐量的影响最小。然而,在 VLM 训练中,样本的长度变化较大:视频样本可能需要数万个token,图像样本可能只需要几百个,而纯文本样本则需要更少。因此,具有较少token的工作负载通常会被低效利用,可以通过增加批次大小来显著提升效率。如表4所示,将 FP8 应用于权重和激活后,可以将 NVILA 的批次大小从 4 增加到 16,获得 2 倍的加速。当启用梯度检查点时,量化激活变得不那么重要。相反,集成了 Liger 中的交叉熵内核,以减少由于 Qwen 的大词汇表大小带来的峰值内存使用。在这种情况下,FP8 训练仍然可以比 BF16 训练提供 1.2 倍的加速。
高效微调
一旦基础的 VLM 模型训练完成,就需要进行领域特定的微调,以适应特定的任务或领域。虽然微调有效地提高了领域特定的词汇和概念,但传统的参数高效微调方法主要集中在 LLM 和文本相关任务上,而如何最好地微调 VLM 仍然是一个较少探讨的问题。
在 NVILA 中,我们发现:
- ViT 和 LLM 的学习率应该设置得不同;
- 微调时,应根据不同的下游任务选择微调部分。
当使用参数高效微调(PEFT)方法同时微调视觉编码器(ViT)和语言模型(LLM)时,观察到 ViT 部分的学习率应比 LLM 部分小 5-50 倍。另一方面,还观察到,使用 Layernorm 微调视觉编码器可以与 LoRA 实现类似的性能(表 5),同时更加高效:与应用 LoRA 的视觉编码器相比,这种方法可以减少 25% 的训练时间。通过精心配置,NVILA 可以在 24GB 的内存下快速微调到各种下游任务,并保持与原始性能相当。
高效部署
VLM 通常集成到计算预算紧张的边缘应用中,如机器人。在这一部分,将介绍专门的推理引擎及其量化技术,以加速 NVILA 的部署。
我们开发了一个专门的推理引擎,并结合量化技术来高效地部署 NVILA。推理过程分为两个阶段:预填充和解码。在计算受限的预填充阶段,首先应用token压缩技术来减少 LLM 主干的推理工作量,之后,视觉模块成为主要瓶颈,占据了超过 90% 的预填充延迟。为了解决这个问题,对视觉模块实施了W8A8量化,以减少 NVILA 在这一计算瓶颈阶段的首次token时间(TTFT)。对于内存受限的解码阶段,采用 AWQ对 LLM 主干进行 W4A16 量化以加速。进一步优化了原始的 AWQ 实现,通过将 FP16 累加引入 W4A16 的 GEMM 内核,从而在不损失精度的情况下,实现了总共 1.7 倍的内核加速。后面图 6 中附上了详细的比较。
实验
实现细节
遵循五阶段pipeline来训练 NVILA:(1)映射器初始化,(2)视觉编码器预训练,(3)token处理器预训练,(4)图像指令调优,以及(5)视频指令调优。其中,第 1、3 和 4 阶段也包含在 VILA 的训练中。额外的第 2 阶段用于恢复由于空间token压缩造成的准确度损失(如表 1 所示),第 5 阶段有助于扩展模型的长视频理解能力。在表 7 中提供了详细的训练配置,数据配置则在表 A1 中给出。
实现基于 PyTorch 2.3.0和 Transformers 4.46.0。使用 DeepSpeed 0.9.5将大型模型分片到多个设备上,并使用梯度检查点技术来减少内存使用。采用 FlashAttention-2 来加速 LLM 和视觉编码器的训练。还实现了功能保持的动态序列打包技术,以融合长度不同的样本,从而实现约 30% 的加速。使用 128 个 NVIDIA H100 GPU 训练所有模型,跨所有阶段的全局批次大小为 2048。所有优化都使用 AdamW 进行,并且不使用权重衰减。采用余弦学习率衰减调度,并在调度的前 3% 使用线性预热。各个阶段的初始学习率在表 7 中有详细说明。
结果
图像基准测试
如表 8 所示,在多个图像基准测试上进行了全面评估,包括:AI2D、ChartQA、DocVQA、InfographicVQA、MathVista 、MMMU(zero-shot CoT)、RealworldQA、SEED-Bench 、TextVQA 和 VQAv2。
NVILA 在每个规模类别中与顶尖的开源模型(如 Qwen2-VL 、InternVL和 Pixtral)表现相当。在一般的视觉问答任务(ChartQA、DocVQA、InfoVQA、TextVQA、VQAv2、Seed)中,NVILA-8B 和 NVILA-15B 在与专有模型(GPT-4o、Gemini)的比较中,取得了竞争力甚至更好的结果。
在与科学相关的基准(如 AI2D)上,NVILA-8B 在开源模型中达到了最先进的性能。将规模扩展到 15B 时,NVILA 的表现与专有模型相竞争。
此外,在推理和知识基准(如 MMMU、RealworldQA 和 MathVista)中,随着模型规模的增大,成绩进一步提高。对于需要 OCR 功能的基准任务(如 TextVQA、AI2D、ChartQA、DocVQA、InfoVQA),8B 模型同样表现优秀。还在图 2-3 中展示了一些定性示例,以展示 NVILA 模型在 OCR、推理和多图像能力方面的表现。
视频基准测试
在一系列视频理解基准上评估了模型的性能,涵盖了从几秒钟到一个小时长的视频。下表 9 展示了 NVILA 与基准模型的比较结果。NVILA 具备长上下文处理能力,能够处理多达 256 帧。通过“先扩展再压缩”的设计,NVILA-8B 在所有基准测试中都取得了令人印象深刻的结果,创造了新的最先进表现。值得注意的是,NVILA 仅凭 8B 参数就达到了与 GPT-4o mini 相当的性能,并且超越了许多更大规模的模型。
效率结果
NVILA 在图像和视频基准测试上表现出色,同时通过“先扩展再压缩”的方法保持了高效性。在架构上,首先将图像扩展到原始分辨率(1 到 12 倍更多的patches),然后将token压缩 2.4 倍,从而在稍多的token数下实现更高的准确度。数据集方面,制作了一个多样的 1000 万样本数据集,通过 DeltaLoss 压缩并修剪为一个高质量的 500 万子集,始终优于 LlaVa-Onevision,该模型在超过 800 万数据上进行训练。此外,集成了 FP8 来加速训练,优化了微调的学习率,并采用 W8A8 格式来提升延迟和吞吐量。这些全栈优化使得 NVILA 在使用较少资源的情况下训练,同时实现更好的性能、更少的内存占用和更快的推理速度。
将 NVILA 的推理性能与 Qwen2-VL进行了对比,如下图 6 所示。为了公平比较,两个模型都通过采样 64 帧处理视频输入,所有实验都在单个 NVIDIA RTX 4090 GPU 上进行。Qwen2-VL 被量化为 W4A16,并通过 vLLM部署,这是一个具有最先进推理速度的 LLM/VLM 服务引擎。对于 NVILA,将 LLM 主干量化为 W4A16,视觉模块量化为 W8A8。通过我们的专用推理引擎,NVILA 在预填充阶段获得了最高 2.2 倍的加速,在解码吞吐量上比 Qwen2-VL 高出最多 2.8 倍。
更多能力
时间定位
继LITA之后,在NVILA中也加入了对时间定位的支持。我们添加了离散时间token来表示视频中的时间戳,并使用平滑的交叉熵损失来训练模型。从表10中的结果可以清晰地看出,NVILA在所有度量上显著优于所有基准方法。
机器人导航
NVILA可以作为视觉-语言导航(VLN)中机器人智能体的强大基础,并支持在非服务器设备上的实时部署。在每个时间步𝑡,代理接收语言指令和视频观测,规划下一步动作,并过渡到下一个状态𝑡+1,在该状态下接收新的观测。NVILA高效而灵活地处理多帧输入,使得历史观测和当前观测能够无缝整合到VLM中。NaVILA框架引入了定制的导航提示,并使用来自仿真器的特定导航SFT数据对NVILA进行了微调。表11中的定量结果显示,NVILA的简洁设计在VLN-CE任务中达到了最先进的结果。基于NVILA-8B的导航模型在单个笔记本GPU上的实时部署视觉结果展示在下图7中。整个系统可以无缝运行,采用端到端(相机→GPU→动作)pipeline,运行频率为1Hz。
医疗多模态VILA-M3
NVILA在医疗领域也具有变革性的潜力。这种集成有望推动诊断准确性、临床决策和数据解读的进步。
NVILA-M3框架通过整合多个针对特定医疗任务的领域专家模型,提出了一种新的方法,例如图像分割和分类(下图8)。这些专家模型旨在提取和解释一般VLM难以辨识的复杂特征。通过将这些专业模型与视觉-语言学习范式结合,NVILA-M3实现了增强的性能,促进了视觉输入与其文本注释之间细微关系的学习。这种集成不仅改善了任务特定的结果,还为在医疗领域开发更强大、更加情境感知的VLM奠定了基础。
NVILA-M3表明,通过使用专家模型,相比现有的最先进技术,可以实现9%的总体提升,表12中展示了一些关键结果。这凸显了利用领域专长来弥合通用AI能力与专门应用需求之间差距的重要性,展示了VLM在精确性和特异性至关重要的领域中革命化的潜力。
结论
本文介绍了NVILA,一个旨在实现效率与准确性之间最佳平衡的开放视觉-语言模型(VLM)家族。通过采用“先扩展后压缩”的范式,NVILA能够高效地处理高分辨率图像和长视频,同时保持高准确性。还在整个生命周期中系统地优化了其效率,从训练到微调再到推理。NVILA提供的性能与当前领先的VLM相当,甚至超越它们,同时在资源使用上显著更为高效。此外,NVILA为时间定位、机器人导航和医学影像等应用开辟了新的可能性。我们将很快发布我们的模型。希望NVILA能够帮助研究人员和开发者充分挖掘其在各个应用和研究领域的潜力。
本文转自AI生成未来 ,作者:AI生成未来