准备预训练或继续训练时,最容易卡在「数据要多少才够」这一步:有人按参数量倍数拍脑袋,有人把网页抓完就开跑,结果要么训不动、要么重复太多。这篇不报具体数字,只给估算口径、配比思路和自查步骤,让你按自己的模型大小和算力把量级估出来。
准备预训练或继续训练,最容易卡在「数据要多少才够」这一步。有人按参数量乘个倍数拍脑袋,有人把网页抓完就开跑,结果不是训不动,就是重复样本太多把模型带偏。这篇不报具体数字,只给估算口径、配比思路和开跑前的自查步骤,让你按自己的模型大小和算力,把该准备多少数据估出量级来。
先明确一件事:数据量从来不是孤立指标,它和模型规模、算力预算、数据质量、训练轮数是绑在一起的。任何经验倍数都只是起点,最终要拿小规模试验去验证。下面四节分别讲总量怎么估、配比怎么定、继续训练要多少,以及开跑前检查什么。
先用经验法则定量级,别一上来就追精确值
最常用的口径是「参数量 × 倍数」估总 token 量。倍数不是固定值:小模型往往要更高倍数才训得充分,大模型可以适当压低;质量要求高、重复轮数多,倍数也要相应调整。把这个结果当成量级参考,不是硬指标,估完就去跑试验,而不是先花几周凑数据。
结算单位要统一成「去重后的有效 token」。抓来的原始网页、代码、多语言语料,先过清洗再去重,再拿来对数;拿原始体量和倍数比,等于自己骗自己。质量优先级高于堆量:低质重复语料堆到几倍,效果通常不如一半干净数据,数据质量一票否决时,倍数法直接失效。
- 有效 token
- 经过清洗、去重、过滤后真正参与训练的 token 数,所有估算都以它为准
- 倍数法
- 用参数量乘一个经验倍数粗估总 token 量,只用来定量级,不追求精确
- 重复轮数
- 同一批数据被模型见到的次数,轮数越高越容易过拟合到那批语料上
配比怎么定:通用、代码、专业语料各占多少
配比没有通用答案,但排序逻辑是清楚的:先按目标能力排优先级,再用留出的小验证集做对照。以通用对话为主,就保底大部分通用语料;要突出代码能力,就单独拉高代码占比;专业领域尽量靠后训练补,而不是预训练阶段硬灌,硬灌容易挤占通用能力。
多语言按目标市场分档,小语种单独设下限,避免被大语种淹没;语种比例一旦失衡,通常要好几轮迭代才补得回来。代码和数学这类结构化数据要控比例,给太多会让自然语言表达变僵,原则是「够用即可」。别直接抄别家的比例表,人家的目标和数据质量跟你不一样。
| 语料类别 | 配比思路 | 常见误区 |
|---|---|---|
| 通用文本 | 作为基本盘占主要份额 | 为追总量往通用里掺低质网页 |
| 代码与数学 | 按能力目标单独设比例,够用即可 | 占比过高导致自然语言表达变僵 |
| 专业领域 | 预训练少放,主要靠后训练补 | 预训练阶段大量灌入挤占通用能力 |
| 多语言 | 按目标市场分档,小语种设下限 | 小语种占比过低被大语种淹没 |
继续训练/二次预训练要准备多少
继续训练的数据量级一般远小于从头预训练,重点不在总量,而在「新增领域覆盖度」。判断上限的参照是旧能力遗忘程度:新数据跑得越久,原有能力掉得越多,所以要拿遗忘程度反过来卡数据量,而不是先定一个总量再硬跑。
- 新老数据混着用不要只喂新领域数据,新老比例从保守档起步,观察旧任务表现再逐步加大新数据占比
- 小比例消融固定一个小比例跑一轮,看旧任务评测掉多少,掉得明显就回退配比,别一次上全量
- 留出通用评测题训练数据里留一部分通用题不参与训练,专门用来判断旧能力有没有被冲掉
- 按覆盖度收敛当新增领域评测不再明显提升时就停下来,继续加数据多半是在稀释旧能力
开跑前的自查清单
下面这份清单建议逐项打勾,任何一项没过就别急着开跑。前三项决定能不能训出效果,后两项决定训出来的东西能不能用、敢不敢用。
- 总量:去重后有效 token 是否达到按倍数法估出的量级,差距太大先补数据或调小模型规模
- 质量:抽样人工过一遍,脏数据、模板页、机器翻译腔的占比是否在可接受范围
- 配比:通用、代码、专业、多语言四类是否都有明确占比和依据,而不是随手抓
- 合规:语料来源和授权边界是否理清,敏感内容过滤是否到位
- 评测:留出集和基线是否就位,训完能不能回答「到底有没有变好」
清单之外还有一项容易被忽略:把估算过程写下来。记清楚你用的倍数、去重前后的 token 数、各类语料占比,下一轮迭代才有对照基准。具体到各家模型的参数量、上下文长度这些资料,到 /models 查当时的数字;想横向对比不同方案的性价比,到 /rankings 看当时的榜单再结合自己的算力预算判断。
常见问题
数据是不是越多越好,先攒够再训?
不是。超过模型容量和训练步数的数据边际收益会快速下降,重复语料还会拖累效果。先按倍数法估个量级,用一小部分跑通收敛,再决定要不要扩数据,比一次性攒满更省钱。
只有几十 GB 自有数据,还能做预训练吗?
多数情况下更现实的是在开源基座上做继续训练或微调,而不是从头预训练。自有数据适合补领域能力,量级按覆盖度算,配合通用数据混跑,同时用留出评测盯住旧能力别掉太多。
清洗和去重值不值得花大力气?
值得,通常比多抓一倍数据更划算。重复和低质语料会拉低有效信息密度,还可能让模型背模板。去重、过滤模板页、剔掉机器翻译腔这几步做完,再谈总量才有意义。