兄弟们,最近做了一轮7B模型的预训练,数据准备阶段差点把我整emo了。今天聊聊这个没人愿意细说但极其关键的环节。
先说数据源:网上扒的公开数据集,质量参差不齐。你以为清洗只是去重?天真。常见坑包括:
- 编码混乱(UTF-8里混GBK,脚本直接炸)
- 无意义重复段落(比如某个博客的“下一章”刷了200遍)
- 低质量中文(机翻味、营销号体,喂进去模型学废)
我的处理pipeline:
1️⃣ 去重用MinHash + LSH,效率还行
2️⃣ 质量过滤:基于perplexity打分,低于阈值的直接砍
3️⃣ 领域均衡:别让某个主题(比如“养生”)霸占30%的数据
最蛋疼的是tokenizer分词对数据敏感,中英文混搭的文件一不小心就爆词表。建议提前跑个小样本统计,看看OOV率。
一个老调重弹但必须强调的点:数据量不是越多越好。我试过把10TB脏数据怼进去,loss收敛比干净5TB还慢。质量 > 数量,这话没错。
最后抛个问题:你们做数据清洗时,遇到最离谱的脏数据是什么?我遇到过一篇论文正文里插了半本《三体》小说,笑死。 |