NVlabs/VILA项目数据准备全流程解析
项目概述
NVlabs/VILA是一个先进的视觉语言模型项目,其训练过程分为三个阶段:投影器初始化、预训练和监督微调(SFT)。每个阶段都需要特定的数据集支持,本文将详细解析这些数据集的获取与处理流程。
数据集概览
VILA项目使用了多种类型的数据集,主要包括:
- 投影器初始化阶段:使用CC3M数据集
- 预训练阶段:使用MMC4-core、COYO-700M和ShreGPT4V_pretrain数据集
- 监督微调阶段:使用LLaVA-Next混合数据集、VFLAN、WIT等十余种数据集
详细数据准备流程
1. 投影器初始化数据准备
LLaVA-CC3M-Pretrain-595K数据集用于训练视觉语言投影器。这个数据集包含了59.5万个样本,是构建视觉与语言之间桥梁的基础。
2. 预训练阶段数据准备
MMC4-Core数据集处理
MMC4-Core是MMC4数据集的核心子集,处理流程如下:
- 获取原始数据:需要申请访问权限获取非fewer-face分片的标注数据
- 图像爬取:使用
mmc4_downloader.py
脚本下载图像- 可并行处理加速下载:
python mmc4_downloader.py <start_idx> <end_idx>
- 可并行处理加速下载:
- 数据过滤:运行
mmc4_filter_and_counter.py
去除无效样本 - 数据合并:使用
mmc4_merger.py
将图像和文本合并为统一的pickle文件
技术要点:由于图像URL可能过期,实际获取的数据可能是原始集合的子集。
COYO-700M数据集处理
- 元数据下载:获取完整的COYO-700M元数据
- 图像爬取:对128个分片分别处理,仅保留CLIP相似度最高的20%样本以保证数据质量
- 数据分片:使用
coyo_splitter.py
将数据分割为多个分片
3. 监督微调(SFT)阶段数据准备
LLaVA-1.5指令数据
使用LLaVA-Instruct-150K数据集中的混合665K样本文件,这是高质量的指令微调数据集。
VFlan数据集处理
- 文本FLAN:
- 下载原始FLAN数据集
- 预处理并从3.78亿样本中采样100万数据
- M3IT数据集:
- 下载完整M3IT数据集
- 进行预处理
- (可选)分割数据以减少训练时的内存压力
其他重要数据集
- LLaVA-Next混合数据集:遵循特定指南准备的数据混合
- Shot2Story:需要下载视频文件和对应的JSON标注
- Video_ChatGPT:视频指令数据集
- Youcook2和Vatex:烹饪和视频描述数据集,需分别下载视频和JSON标注
- WIT:从原始WIT数据集中采样53.8万英文数据并转换为对话格式
- GSM8K-ScRel-SFT:数学推理数据集
- Sherlock:视觉推理数据集,图像来自VisualGenome和VCR
- ScienceQA:科学问答数据集,使用训练分片
数据处理最佳实践
- 并行处理:对于大规模数据集如MMC4和COYO,使用分片并行处理可以显著提高效率
- 数据质量筛选:如COYO中仅保留高质量样本(CLIP相似度前20%)
- 内存优化:对于特别大的数据集,可分割为多个块以减少训练时的内存压力
- 格式统一:所有数据最终都转换为统一的对话格式JSON文件
常见问题解决方案
- 图像URL过期:这是网络数据集的常见问题,建议定期更新数据集或建立本地缓存
- 数据规模过大:可采用子采样策略,如COYO中的20%高质量样本选择
- 格式转换:使用项目提供的预处理脚本确保数据格式一致性
总结
NVlabs/VILA项目的数据准备流程体现了现代多模态模型训练的数据需求特点:大规模、多样化、高质量。通过分阶段使用不同类型的数据集,项目实现了从基础视觉语言对齐到复杂多模态理解的完整训练流程。理解这些数据准备步骤对于复现或改进模型至关重要。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考