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)

  • 训练组件:通常冻结 ViT 和 LLM,只训练 Projector (Adapter)
  • 数据形态:简单的 (Image, Caption) 对。
  • 关键策略
  • Quantity > Quality:需要海量数据覆盖世界知识。
  • 数据源:LAION-5B, COYO-700M, CC3M/12M。
  • 近期趋势:从单纯的图文对转向 Interleaved Data(图文交错文章,如 OBELICS, MMC4),这有助于模型学习上下文关联(In-context Learning)。

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

  • 训练组件:通常全量微调 LLM + Projector(有时也解冻 ViT)。
  • 数据形态(Image, Instruction, Response)
  • 核心变革
  • Dense Captioning:传统的 COCO 风格简短描述("一只狗在草地上")已被淘汰。现在的 SFT 依赖 ShareGPT4V 风格的详尽描述(包含物体关系、颜色、文字、背景细节的数百字段落)。
  • 复杂任务混合:必须包含 VQA、OCR、代码生成、数学推理等多种任务。

Stage 3: 偏好对齐 (Alignment)

  • 方法:DPO (Direct Preference Optimization) 或 RLHF。
  • 数据形态(Image, Prompt, Chosen_Response, Rejected_Response)
  • 关键作用:显著降低幻觉(Hallucination)。例如,Rejected 样本通常包含“过度自信的错误物体检测”。

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。为了多样性,需要混合:

  • 自然图像:OpenImages, Objects365。
  • 文档/图表:ArXiv 论文图、CommonCrawl PDF 截图。
  • 网页截图:CC-Main 渲染图(用于 GUI Agent 能力)。

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]
  • Rule of Thumb:One Image, Multi-Task。对同一张图,生成描述、问答、推理题等多种数据,最大化图像利用率。

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

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

  • 基于 Embedding 的去重:使用 CLIP Image Embedding 计算训练集与 Benchmark 测试集的余弦相似度。相似度 > 0.9 的直接剔除。
  • 基于 N-gram 的文本去重:防止 Question 部分完全重合。

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. 本章小结

  • 数据质量 > 数量:在 SFT 阶段,10 万条由 GPT-4V 生成的高质量、长思维链数据,胜过 1000 万条简单的 COCO Caption。
  • 多样性是关键:不要偏科。即使你是做通用模型,也要加入 OCR 和图表数据,这能提升模型对细节的敏锐度。
  • 必须包含纯文本:始终在 DataLoader 中混入纯文本对话数据,以维持 LLM 的“智商”和指令遵循能力。
  • 坐标格式统一:Grounding 任务的坐标格式(0-1 还是 0-1000,xyxy 还是 xywh)必须在所有数据集中强制统一,否则模型无法收敛。

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) 的隐蔽性

  • 陷阱:你以为只要 URL 不同就没重复。
  • 现实:很多 Benchmark 的图片就是从网上(Flickr, Wikipedia)爬的。你的预训练数据集(如 LAION)极大概率包含了这些图。
  • 对策:必须进行 Image-level Decontamination。对 MathVista、MMMU 等核心榜单,计算图片特征相似度,剔除所有相似度 > 0.9 的训练样本。

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

  • 陷阱:在做 Grounding 任务时,模型输出的坐标总是不准,或者输出像 [0.35, 999] 这样奇怪的混合格式。
  • 原因:LLM 的 Tokenizer 对于数字的处理很弱(例如把 "356" 切分成 "3", "56")。
  • 对策: 1. 引入特殊 Token(如 <loc_0><loc_999>)专门代表坐标,不复用普通数字 Token。 2. 或者始终使用归一化的 2 位或 3 位小数纯文本,并确保 Tokenizer 不会乱切。

5.3 幻觉放大器 (Hallucination Amplifier)

  • 陷阱:使用生成的合成数据训练,模型开始胡说八道。
  • 原因:教师模型(GPT-4V)本身有幻觉,学生模型会完美继承并“放大”这些幻觉。
  • 对策: 1. 置信度过滤:如果教师模型输出包含 "I am not sure", "It looks like" 等不确定词,丢弃该数据。 2. 规则校验:对于 OCR 数据,检查生成的文字是否真的出现在 OCR 引擎的检测结果中。

5.4 提示词过拟合 (Prompt Overfitting)

  • 陷阱:用户问 "Describe the image",模型回答完美;用户问 "What do you see?",模型回答乱码。
  • 原因:训练数据中所有的 Prompt 都是同一个模板。
  • 对策:在构建 Dataset 时,必须对 Instruction 进行 Template Augmentation。准备 50-100 个同义指令模板,随机抽取使用。