数据是新的代码
传统软件的"代码"在大模型时代变成了"数据"。模型的智能本质上是训练数据的压缩和重组。数据质量决定模型能力上限,算法和算力决定我们能多接近这个上限。
数据全流程
1. 数据采集
预训练数据来源
| 来源 | 占比(典型) | 质量 | 说明 |
|---|---|---|---|
| 网页爬取 | 60-70% | 中低 | Common Crawl为主 |
| 书籍 | 5-10% | 高 | 长文本、知识密集 |
| 论文 | 3-5% | 高 | 学术知识 |
| 代码 | 5-10% | 高 | GitHub/The Stack |
| 对话 | 5-10% | 中 | Reddit/社交平台 |
| 多语言 | 10-20% | 中 | 各语言网页 |
合成数据
2026年趋势:合成数据占比越来越高。用强模型生成高质量训练数据:
- 知识合成:生成教科书式知识讲解
- 指令合成:生成多样化指令-回答对
- 推理合成:生成带思维链的推理过程
合成数据的关键风险是"模型坍缩"(model collapse)——如果训练数据全部来自模型生成,可能退化。需要确保一定比例的真实数据。
2. 数据清洗
基础过滤
原始网页文本
→ 去HTML标签
→ 去非自然语言(乱码、编码错误)
→ 去低质量内容(长度过短、重复模板)
→ 去有害内容(色情、暴力、仇恨)
→ 语言识别(保留目标语言)
启发式过滤
Common Crawl清洗的经典启发式规则:
- 平均行长度 > 50字符
- 字母字符占比 > 50%
- 数字占比 < 30%
- 重复行比例 < 30%
- 短行占比 < 80%
模型过滤
用小模型(如fasttext分类器)做质量评分:
- 训练一个"高质量文本"分类器
- 使用Wikipedia/书籍作为正样本
- 用随机网页作为负样本
- 阈值过滤低分文本
3. 去重
为什么要去重?
重复数据会导致:
- 模型记忆而非泛化
- 训练效率下降
- 评估泄露(测试集出现在训练集中)
去重方法
精确去重:
- 文档级MD5哈希
- 速度快,但只能去完全相同的文档
模糊去重:
- MinHash + LSH:近似集合相似度
- 计算Jaccard相似度
- 相似度>0.8的文档对去重
子文档去重:
- 在n-gram级别做去重
- 去除跨文档的重复段落
- 计算量大但效果最好
实际Pipeline:先精确去重(快速去除大量重复),再模糊去重(去除近似重复)。
4. 数据混合
不同来源和类型的数据需要合理配比:
预训练数据混合(参考Llama配方):
- 英文网页: 60%
- 中文网页: 15%
- 代码: 10%
- 书籍: 8%
- 论文: 3%
- 多语言: 4%
配比的影响
- 代码比例↑ → 模型推理能力↑
- 中文比例↑ → 中文能力↑
- 论文比例↑ → 学术知识↑
- 对话比例↑ → 对话风格↑
课程学习
按难度递增顺序训练:
- 通用网页(广覆盖)
- 高质量文本(书籍、论文)
- 指令数据(SFT阶段)
5. 质量评估
统计指标
- n-gram多样性:unique n-grams / total n-grams
- 压缩比:zlib压缩后/压缩前,反映信息密度
- 困惑度:用已有模型计算数据困惑度,异常高/低的数据需检查
下游任务评估
最可靠的方法——用数据训练小模型,在benchmark上评估:
- 准备候选数据集
- 训练相同架构的小模型(1B/3B)
- 在MMLU/C-Eval等基准上比较
- 选择效果最优的数据配方
数据卡(Data Card)
为每个数据集生成文档:
- 数据来源
- 采集方式
- 清洗步骤
- 统计特征
- 已知偏见
- 使用建议
SFT数据工程
SFT数据比预训练数据更注重质量而非数量。经验:10万条高质量数据 > 100万条低质量数据。
格式统一
{"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
]}
多样性保证
- 任务类型多样(问答、翻译、推理、创作、代码…)
- 难度多样(简单到复杂)
- 长度多样(短回答到长文章)
- 领域多样(通用+专业)
质量控制
- 用强模型(GPT-4/Claude)做数据生成和筛选
- 人工审核高价值样本
- 去除低质量样本(reward model打分)
- 拒绝样本(negative samples)训练模型说不
实践建议
- 数据优先于模型:投入更多资源到数据质量上
- 小规模实验:用1B模型快速验证数据配方
- 持续迭代:基于模型表现反馈调整数据
- 数据版本管理:每次训练记录数据版本,便于复现
- 监控数据泄露:确保训练集不含测试集
总结
训练数据工程是大模型开发中最被低估的环节。一个团队的核心竞争力不是训练算法(公开的),不是算力(可以购买),而是数据工程能力——从海量噪声中提炼高质量训练数据的能力。随着模型架构趋同,数据工程将成为决定模型能力的真正护城河。