点击下方卡片,关注「魔方AI空间」公众号
简介
VILA 是一种视觉语言模型 (VLM),使用大规模交错图像文本数据进行预训练,可实现视频理解和多图像理解功能。
VILA 可通过AWQ 4 位量化和TinyChat框架部署在边缘端。我们发现:
(1)图文对还不够,图文交错是必要的; (2)在交错的图文预训练期间解冻LLM可以实现上下文学习; (3)重新混合纯文本指令数据对于提升VLM和纯文本性能至关重要; (4)令牌压缩扩展了#video 帧。
VILA 推出了更强大的功能,包括:视频推理、情境学习、视觉思维链和更好的世界知识。
项目地址:https://github.com/NVlabs/VILA
引言
大语言模型(LLMs)已经展示了在自然语言任务中的卓越能力。通过增强LLMs以支持视觉输入,最终模型可以继承一些吸引人的属性,如指令遵循、零样本泛化以及少样本上下文学习(ICL),从而赋能各种视觉语言任务。
本文研究了视觉语言模型(VLM)的预训练过程,旨在通过逐步可控的比较来增强视觉语言模型的性能。具体来说,研究了在预训练过程中冻结大型语言模型(LLM)的影响,交错预训练数据的效果,以及在微调过程中重新混合纯文本指令数据的作用。
如何在预训练过程中有效地结合视觉和文本信息,如何在不影响纯文本任务的情况下进行视觉语言任务的训练,以及如何提高模型的零样本和上下文学习(ICL)能力。
该问题的研究相关工作包括对视觉语言模型的训练方法进行研究,特别是对图像-文本对的预训练和微调过程的研究。已有工作主要集中在通过监督微调(SFT)或人类反馈强化学习(RLHF)来改进视觉语言指令调优过程,但缺乏对预训练过程的深入研究。
方法概述
VILA,一种新的视觉语言模型预训练方法,用于解决视觉语言模型在零样本和上下文学习方面的性能不足问题。具体来说,
冻结LLM的预训练:首先,研究了在预训练过程中冻结LLM的效果。冻结LLM可以实现不错的零样本性能,但缺乏上下文学习能力。为了提高上下文学习能力,需要在预训练过程中更新LLM。
交错预训练数据:其次,研究了交错预训练数据的效果。交错图像-文本数据比单独的图像-文本对更有利于预训练,因为它提供了更准确的梯度更新,并且能够保持纯文本能力。
联合SFT:最后,研究了在微调过程中重新混合纯文本指令数据的效果。重新混合纯文本指令数据不仅可以弥补纯文本任务的退化,还可以提高视觉语言任务的准确性。
实验细节
数据收集:使用了MMC4和COYO两种图像-文本数据集进行预训练。MMC4数据集包含交错的图像和文本段,而COYO数据集则包含较短的文本描述。为了增加数据多样性,还使用了LLaVA-1.5的SFT数据进行联合微调。
实验设置:实验分为三个阶段:投影仪初始化、视觉语言预训练和视觉指令微调。在预训练阶段,分别使用线性层和Transformer块作为投影仪。在微调阶段,将现有的视觉语言数据集转换为FLAN风格的数据,并加入1M的纯文本指令数据进行联合微调。
参数配置:使用了Llama-2 7B和13B两种LLM模型进行实验。预训练数据总共包含约50M张图像。微调数据来自多个视觉语言数据集,包括VQA、DocVQA、GQA等。
实验结果分析
冻结LLM的预训练效果:冻结LLM在预训练过程中可以实现不错的零样本性能,但在上下文学习能力方面表现较差。更新LLM后,模型的上下文学习能力显著提高。
交错预训练数据的效果:使用交错的图像-文本数据进行预训练比单独的图像-文本对更有效。交错数据提供了更准确的梯度更新,并且能够保持纯文本能力。
联合SFT的效果:在微调过程中重新混合纯文本指令数据不仅可以弥补纯文本任务的退化,还可以提高视觉语言任务的准确性。联合SFT使得模型在预训练时使用短文本时也能解锁全部的好处。
项目部署
安装基础环境
git clone https://github.com/NVlabs/VILA.git
./environment_setup.sh vila
训练
第 1 步:对齐
利用 LLaVA-CC3M-Pretrain-595K 数据集来对齐文本和视觉模式。
第一阶段脚本接受两个参数,它可以在单个 8xA100 节点上运行。BASE_MODEL_PATH
指向在线或本地 Huggingface 存储库,例如NousResearch/Llama-2-7b-hf
。OUTPUT_NAME
指向checkpoints
下的目标目录,该目录将在之后保存经过训练的多模态投影仪。
bash scripts/v1_5/paper/1_mm_align.sh [BASE_MODEL_PATH] [OUTPUT_NAME]
第 2 步:预训练
使用 MMC4 和 Coyo 数据集来训练具有交错图像文本对的 VLM。
bash scripts/v1_5/paper/2_pretrain_mmc4_coyo.sh [CODE_PATH] [BASE_MODEL_PATH] [STAGE1_PATH] [OUTPUT_NAME]
第二阶段脚本包含四个参数。CODE_PATH
是 VILA 代码库的绝对路径, BASE_MODEL_PATH
与第一阶段脚本中的含义类似。STAGE1_PATH
指向阶段 1 的OUTPUT_NAME
(即存储阶段 1 检查点的位置)。OUTPUT_NAME
是checkpoints
下保存预训练检查点的所需文件夹名称。我们为此阶段提供的脚本在 slurm 上执行,我们预计它在 16 个节点(128 个 GPU)上执行。
第 3 步:监督微调
这是 VILA 训练的最后阶段,我们调整模型以遵循 M3IT、FLAN 和 ShareGPT4V 子集上的多模式指令。该阶段在 8xA100 节点上运行。
bash scripts/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
推理
Llama-3-VILA1.5-8B 推论:
python -W ignore llava/eval/run_vila.py \
--model-path Efficient-Large-Model/Llama-3-VILA1.5-8b-Fix \
--conv-mode llama_3 \
--query "<image>\n Please describe the traffic condition." \
--image-file "av.png"
VILA1.5-40B推论:
python -W ignore llava/eval/run_vila.py \
--model-path Efficient-Large-Model/VILA1.5-40b \
--conv-mode hermes-2 \
--query "<image>\n Please describe the traffic condition." \
--image-file "av.png"
VILA1.5-3B视频推理:
python -W ignore llava/eval/run_vila.py \
--model-path Efficient-Large-Model/VILA1.5-3b \
--conv-mode vicuna_v1 \
--query "<video>\n Please describe this video." \
--video-file "demo.mp4"
提炼关键问题
问题1:在预训练过程中,为什么冻结大型语言模型(LLM)会导致上下文学习能力下降?
冻结LLM在预训练过程中可以实现不错的零样本性能,但缺乏上下文学习能力。这是因为LLM的深层嵌入对齐对于上下文学习至关重要。
当冻结LLM时,尽管其零样本性能不受影响,但在微调阶段进行上下文学习时,LLM无法适应新的视觉输入,导致上下文学习能力下降。具体来说,LLM的深层嵌入在预训练过程中需要与视觉输入进行对齐,以便在微调时能够更好地处理视觉任务。冻结LLM阻止了这一对齐过程,从而影响了其上下文学习能力。
问题2:交错预训练数据相比单独的图像-文本对在预训练中有哪些优势?
更准确的梯度更新:交错预训练数据提供了更丰富的视觉和文本对,使得模型在预训练过程中能够获得更准确的梯度更新,从而更快地收敛。
保持纯文本能力:交错数据结构允许模型在预训练过程中同时学习视觉和文本信息,而不会完全遗忘纯文本任务的能力。相比之下,单独的图像-文本对可能会导致模型在预训练过程中过度依赖视觉信息,从而遗忘纯文本任务。
更好的泛化能力:由于交错数据提供了更多的上下文信息,模型在微调阶段能够更好地泛化到新的视觉语言任务上。
问题3:在微调过程中重新混合纯文本指令数据有哪些具体好处?
弥补纯文本任务的退化:重新混合纯文本指令数据可以弥补在预训练过程中由于使用短文本而导致的纯文本任务退化。
提高视觉语言任务的准确性:联合微调纯文本指令数据不仅能够恢复纯文本任务的性能,还能进一步提高视觉语言任务的准确性。这是因为纯文本指令数据提供了更强的指令跟随能力,这对于视觉语言任务非常重要。
解锁全部好处:通过联合微调,模型在使用短文本进行预训练时也能解锁全部的好处,从而在零样本和上下文学习方面表现更好。
技术交流
加入「AIGCmagic社区」群聊,一起交流讨论,涉及 AI视频、AI绘画、Sora技术拆解、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【m_aigc2022】,备注不同方向邀请入群!!
推荐阅读
• 半年耕耘,《AIGCmagic社区知识星球》重磅升级!限量活动中!
• MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型
• 多模态大模型:Video-LLaVA2 视频和图像的智能理解系统
• 多模态大模型:LLaVA-OneVision 轻松实现视觉任务迁移 | 单图、多图和视频理解
• 开源项目|多模态大模型:Show-o 统一多模态理解和生成
• 开源项目 | 多模态大模型VideoLLaMB:长上下文视频理解新框架
• 开源项目 | 多模态大模型VideoGPT+:集成图像和视频编码器以增强视频理解