本项目围绕多模态大模型(MLLM)预训练阶段的数据质量提升展开,核心思路是利用VLM和LLM对原始训练数据(Caption、VQA)进行重构与增强,探索不同数据合成策略对模型能力的影响。
项目包含两个主要实验方向:
| 实验 | 方向 | 核心思路 |
|---|---|---|
| 实验1:VQA→Caption→VQA | 单图数据增强 | 基于VQA图片生成Caption,再从Caption重构QA对 |
| 实验2:多图Caption与Interleaved | 多图数据构造 | 通过语义匹配将单图升级为多图对比/交错数据 |
┌─────────────────────────────────────────┐
│ Baseline 训练数据集 │
│ (单图 VQA + 单图 Caption) │
└───────────┬─────────────┬───────────────┘
│ │
┌───────────────▼───┐ ┌─────▼────────────────┐
│ 实验1 (单图增强) │ │ 实验2 (多图构造) │
│ │ │ │
│ VQA图片 │ │ 全部图片 │
│ ↓ VLM生成Caption │ │ ↓ VLM提取语义结构 │
│ ↓ LLM生成新QA │ │ ↓ 嵌入+FAISS配对 │
│ ↓ 替换原数据 │ │ ↓ VLM生成多图文本 │
│ │ │ ↓ 替换原数据 │
└───────────┬───────┘ └──────┬───────────────┘
│ │
┌───────▼──────────────────▼───────┐
│ 增强后训练数据集 │
│ (PT → FD → SFT 三阶段训练) │
└──────────────────────────────────┘
- VLM推理:Qwen2.5-VL-32B-Instruct(通过vLLM部署,批量推理)
- LLM推理:Qwen2.5-32B-Instruct(纯文本任务)
- 向量检索:BGE嵌入模型 + FAISS HNSW索引(实验7)
- 训练框架:三阶段训练(PT预训练 → FD微调 → SFT监督微调)
- 评测:统一SFT评测基准
目标:验证"先理解再重构"的数据增强策略是否优于原始标注数据。
流程:
- 从Baseline筛选VQA数据 → 2. VLM为图片生成Caption → 3. LLM基于Caption生成新QA → 4. 构建对照训练集
对照组:
- 原始VQA(Baseline)
- Caption替换VQA回答
- 重构QA替换原始VQA
详见 → vqa_caption_vqa/README.md
目标:将单图训练数据升级为多图数据,提升模型多图理解与关联推理能力。
流程:
- VLM提取图片语义结构 → 2. 两阶段相似度匹配(配对/分组) → 3. VLM生成多图Caption或图文交错叙事 → 4. 替换原始数据构建训练集
子实验:
- 图片对Caption(2张图对比描述)
- Interleaved(3-6张图交错叙事)
- 仅替换Caption(保留原VQA不变)
详见 → multi_image_caption/README.md
opensource/
├── README.md # 本文档(项目概述)
├── vqa_caption_vqa/ # 实验1:VQA→Caption→VQA
│ ├── README.md
│ ├── caption_generation/ # VLM生成Caption
│ ├── vqa_generation/ # LLM生成QA对
│ ├── dataset_building/ # 数据筛选与训练集构建
│ └── samples/ # 输出数据样例
└── multi_image_caption/ # 实验2:多图Caption与Interleaved
├── README.md
├── struct_extraction/ # 语义结构提取
├── image_pairing/ # 图片配对
├── pair_caption/ # 图片对Caption生成
├── interleave/ # Interleaved生成
├── pair_only_caption/ # 仅替换Caption策略
├── knowledge_density/ # 知识密度评估
└── samples/ # 输出数据样例
| 依赖 | 用途 |
|---|---|
| Python 3.8+ | 运行环境 |
| vllm | VLM/LLM批量推理 |
| sentence-transformers | BGE文本嵌入(实验2) |
| faiss-cpu / faiss-gpu | 向量检索与匹配(实验2) |
| Flask | 模型服务封装(可选) |
| Qwen2.5-VL-32B-Instruct | 多模态理解与生成 |
| Qwen2.5-32B-Instruct | 纯文本推理 |