vl_benchmark_tutorial

Chapter 9:训练数据集与配方(从数据到能力)

1. 开篇段落

在多模态大模型(MLLM/VLM)的开发中,模型架构正趋于同质化(ViT + Adapter + LLM)。当大家都在使用 CLIP/SigLIP 和 Llama/Qwen 时,数据配方(Data Recipe) 成为了决定模型智商差异的核心“护城河”。

如果说基准评测是“考试”,架构是“大脑结构”,那么训练数据就是“教材”与“人生阅历”。本章将深入 VLM 的训练腹地,揭示如何从零构建高质量的数据集。我们将不仅讨论“有什么数据”,更会探讨“怎么造数据(合成)”、“怎么洗数据(清洗)”以及“怎么喂数据(混合策略)”。你将学到如何通过调整数据配方,定向提升模型在 OCR、数学推理或长视频理解上的能力,同时避免灾难性遗忘。


2. 核心论述

2.1 训练范式:三阶段金字塔

现代 VLM 的训练通常分为三个阶段,每个阶段的数据策略截然不同。

      /\
     /  \      <-- Stage 3: 偏好对齐 (RLHF/DPO/KTO)
    /    \         目标:去幻觉、安全、人类偏好对齐
   /______\        数据量:1k - 10k (极高质量三元组)
  /        \
 /          \  <-- Stage 2: 视觉指令微调 (Visual Instruction Tuning / SFT)
/------------\     目标:多轮对话、复杂指令遵循、思维链(CoT)
|            |     数据量:100k - 2M (合成数据 + 精标数据)
|____________|
|            | <-- Stage 1: 模态对齐预训练 (Pre-training / Alignment)
|            |     目标:让 LLM "看懂" 图像特征 (Feature Alignment)
|____________|     数据量:10M - 1B+ (图文对 / Interleaved Docs)

Stage 1: 预训练 (Pre-training)

Stage 2: 指令微调 (SFT) —— 决定胜负的关键

Stage 3: 偏好对齐 (Alignment)


2.2 数据能力图谱:你需要哪些食材?

要在 MMMU 或 OCRBench 等基准上拿高分,你的“食材库”必须包含以下类别:

数据类别 典型数据集 对应能力 构建/增强技巧
通用对话 LLaVA-Instruct, SVIT 基础交互、多轮对话 使用 GPT-4V 将简短 Caption 扩展为多轮对话
详细描述 ShareGPT4V, Allava 图像细节感知 提示词需强调“详细描述背景、颜色、文字”
OCR & 文档 TextVQA, DocVQA 文字识别、结构化抽取 必须包含坐标 (Bbox) 或按阅读顺序排列的文本
数学 & 科学 MathVista, Geo170K 逻辑推理、符号计算 必须包含 CoT (Chain of Thought) 步骤,而非直接给答案
图表 & 统计 ChartQA, PlotQA 数据挖掘、趋势分析 需渲染合成图表,并保留底层数据表(Data Table)作为参照
Grounding RefCOCO, Visual Genome 物体定位、空间理解 统一坐标格式(如 [0-1000][0-1]),避免格式混乱
纯文本 ShareGPT, UltraChat 语言能力保持 非常重要!防止模型丧失纯文本指令遵循能力

2.3 数据构建流水线:从合成到清洗

现代 VLM 的高性能主要归功于合成数据(Synthetic Data)

Step 1: 图像源筛选 (Sourcing)

不要只用 COCO。为了多样性,需要混合:

Step 2: 自动化标注与蒸馏 (Distillation Pipeline)

这是目前最主流的玩法:利用闭源强模型(GPT-4V/o, Gemini 1.5 Pro)来标注开源图片。

[Raw Image] 
    |
    +---> [Prompt A: "Describe explicitly..."] --> [GPT-4V] --> [Dense Caption]
    |
    +---> [Prompt B: "Ask difficult questions..."] --> [GPT-4V] --> [Complex QA]
    |
    +---> [Prompt C: "Extract JSON info..."] --> [GPT-4V] --> [Structured Data]

Step 3: 严格的去重与去污 (Decontamination)

致命陷阱:如果不小心把 MathVista 的测试题放进了训练集,你的论文会被社区质疑。


2.4 数据混合策略 (Data Mixing Strategy)

拥有了数据,如何混合是炼丹的关键。

  1. 模态平衡 (Modality Balance)
    • 建议比例:纯文本数据 : 多模态数据 = 1 : 4 到 1 : 1
    • 如果纯文本太少,模型会变“笨”(逻辑能力下降);如果太多,视觉对齐会变弱。
  2. 任务重采样 (Task Resampling)
    • 高质量数据(如 Math, Code, OCR)样本少,需要过采样 (Up-sampling),例如重复 5-10 次。
    • 低质量数据(如简单的 VQA)需要降采样。
  3. 动态分辨率策略 (AnyRes Strategy)
    • 训练数据中应混合不同长宽比和分辨率的图片。
    • 如果只用 训练,模型在处理长条形图表(如网页截图)时会崩溃。构建数据时需保留原始比例,采用 “Patch Padding” 技术。

3. 本章小结


4. 练习题

基础题 (熟悉配方)

  1. [填空] 在 VLM 数据构建中,将简短的图像描述(Caption)重写为包含丰富细节的长段落的技术被称为 __。目前最著名的此类数据集是 __
答案 Recaptioning (或 Dense Captioning); ShareGPT4V (或 LLaVA-NeXT, Allava)。
  1. [选择] 为什么在视觉 SFT 阶段要混入纯文本对话数据(如 ShareGPT)?
    • A. 增加视觉特征的鲁棒性
    • B. 防止灾难性遗忘,保持逻辑推理和指令遵循能力
    • C. 纯粹为了凑数据量
    • D. 让 ViT 学习阅读文字
答案 B。如果不加纯文本,LLM 可能会退化,导致只会看图说话,无法进行复杂的逻辑推理或遵循格式要求。
  1. [判断] 为了提高 ChartQA 的分数,我们可以直接把 ChartQA 的 Validation 集放入训练集中训练,只要不放 Test 集就不算作弊。
答案 错误。虽然技术上这不算 Test Set Leakage,但这属于过度拟合 Benchmark(Validation Set Overfitting),会导致模型泛化能力差,且在学术界被视为糟糕的实践(Bad Practice)。

挑战题 (实战模拟)

  1. [配方设计] 你正在训练一个面向自动驾驶场景的 VLM。
    • 需求:识别交通标志(OCR)、判断前车行为(推理)、输出可行驶区域坐标(Grounding)。
    • 任务:请列出你的数据配方(来源类型 + 混合比例),并说明理由。
提示与参考 参考配方: 1. 通用 SFT 数据 (30%):保持基础对话能力。 2. 交通场景 Caption (20%):使用驾驶视频抽帧,用 GPT-4V 生成关于路况、天气、车辆行为的 Dense Caption。 3. Mapillary/Cityscapes Grounding (30%):强监督数据,训练 Bbox 和 Segmentation 能力。 4. OCR 特定增强 (10%):专门的交通标志数据集(如 TT100K),转换成 VQA 格式。 5. 驾驶行为推理 (10%):构造 QA 对,例如 "Q: 为什么要减速?A: 因为前方有行人横穿。"(CoT 数据)。
  1. [故障排查] 你的模型在训练完 SFT 后,回答问题总是非常简短(例如 “Yes”, “No”, “A dog”),即便你提示它 “Please explain in detail”。
    • 原因分析:可能出了什么问题?
    • 解决方案:如何调整数据?
提示与参考 原因: 训练数据中包含了太多简短回答的数据(如 VQAv2, COCO Caption),或者 Prompt 模板没有区分简答和详答。 解决: 1. 数据清洗:剔除或重写那些只有一两个词的回答。 2. System Prompt:在训练数据中加入 System Prompt,明确要求 "Answer in detail"。 3. 数据重采样:大幅提高长文本(ShareGPT4V, CoT)数据的采样权重。
  1. [思维链构造] 针对数学题 “图中有个三角形,底是3,高是4,求面积”,请写出一个标准的 CoT (Chain of Thought) 格式的训练数据 Output。
提示与参考 不好的 Output: "The area is 6." 好的 Output (CoT): "Based on the image, we can identify a triangle. 1. Identification: The base of the triangle is labeled as 3, and the height is labeled as 4. 2. Formula: The area of a triangle is calculated as . 3. Calculation: Substituting the values, we get . Therefore, the area of the triangle is 6."

5. 常见陷阱与错误 (Gotchas)

5.1 数据污染 (Leakage) 的隐蔽性

5.2 坐标词表冲突 (Coordinate Token Conflict)

5.3 幻觉放大器 (Hallucination Amplifier)

5.4 提示词过拟合 (Prompt Overfitting)