很多人以为训练大模型就是「喂数据、跑起来、等结果」,真上手才发现卡在数据怎么洗、算力怎么估、哪一步该停下来评测。这篇把预训练、后训练、评测、上线几段流程按顺序讲一遍,每段给判断标准和可执行动作,让你看完能画出自己项目的流程表。
数据准备:这一步决定后面能走多远
很多人以为训练大模型最难的是算力和调参,真正做过一轮就知道,数据这一步没整干净,后面全是白干。语料决定模型能学到什么、说话像不像人、有没有踩红线。先把来源分成三类看,风险点完全不一样。
| 来源 | 典型风险 | 清洗重点 |
|---|---|---|
| 公开爬取 | 混入垃圾页、广告、重复内容、版权不明 | 去重、正文抽取、语种过滤、来源留痕 |
| 自有业务数据 | 格式乱、含隐私字段、方言与错别字多 | 脱敏、字段对齐、统一编码、抽样人工过一遍 |
| 合成数据 | 模型自身错误被放大、同质化严重、分布偏窄 | 交叉验证、多样性打散、别拿它当唯一口粮 |
新手最容易忽略的是去重。同一段内容在爬取语料里可能重复几十次,模型会把重复内容当高频事实学进去,输出变得啰嗦又死板。去重分两层:精确去重删完全一样的;近似去重处理改了几个字的伪原创。近似去重比精确去重重要,但别把相似度阈值设得太狠,容易把真的不同内容也删掉。
动手清单:最少要做到哪几件事
- 去重先精确后近似,近似用分片哈希或相似度算法;抽一批重复对看一眼,确认没误删有效内容。
- 过滤按语种、长度、乱码比例、正文占比筛;阈值放宽一点先跑通,别一上来就把数据筛到没剩多少。
- 分片统一编码后按固定长度切,留少量重叠避免句子被拦腰砍断;切完抽几条读一读,看语义是否完整。
- 留验证集从一开始就切出一份单独存放的验证集,训练全程碰它算作弊;这份数据要能代表你最终想让模型干什么。
数据量怎么估,行业里有个粗略经验:参数量越大,需要的 token 越多,但两者不是匀速关系,边际收益会递减。想要的具体对照数字,到站内模型资料库对应模型的说明页核对,比记一个死数字靠谱。估算时还要看数据质量和多样性,一堆重复垃圾堆出来的量,顶不上干净多样的小体量。
合规边界与留痕
- 来源不明的整站抓取、含个人身份信息的内容、明确标注禁止抓取或禁止商用的语料,别往里放。
- 自有业务数据要脱敏,手机号、身份证、地址这类字段该删删该替替,别等到出事再回头查。
- 合成数据要标注来源,避免和真实语料混在一起说不清;比例过高时至少要在文档里写明白。
- 留痕指的是记录每条数据的来源、抓取时间、清洗动作和授权依据,做到能追溯到某条内容从哪来。
预训练:最烧钱也最难看到反馈的一段
这一步的目标不是让模型「学会知识」,而是让它学会语言的统计规律:哪个词后面常跟哪个词、一句话该在哪儿断、什么搭配自然什么搭配别扭。你可以理解成让模型反复做填空题——把句子里随机挖掉一部分,让它猜回来。数据量越大、种类越杂,它见过的句式就越丰富。做完这一轮,模型并不真的懂「为什么」,但它已经能接话接得很像样,这就是后面几步的起点。
实际训练时盯的主要是损失曲线,也就是模型预测错的平均程度。正常情况是前期快速下降、后面逐渐变缓。看到曲线开始横着走甚至往上翘,基本就是出问题了——可能是学习率设得偏大,也可能是高质量数据不够了开始反复吃旧饭。还有一种情况是训练损失一直在降,但拿一小批没喂过的数据一测却越来越差,那就是过拟合,该考虑加数据、加正则或者早点停。
- 损失曲线开始抬头上翘:优先怀疑学习率偏大,把学习率往下调一档再看几个数据点
- 损失下降明显变慢但仍在降:可能是这批数据已经「喂透了」,该换一批更杂的数据或调整配比
- 训练损失降、验证损失涨:过拟合信号,先加数据或早停,别急着调结构参数
- 曲线剧烈抖动、忽高忽低:多半是批量太小或学习率过高,先把稳定性找回来再谈优化
为什么多数团队不做这一段?三道门槛是叠加的。成本上,显卡集群要长期连续运转,租金和耗电量都不小;数据上,你需要的不是精挑细选的几万条,而是海量、多样、干净的语料,清洗本身就要人手;人才上,不是能不能跑起来的问题,而是跑起来后曲线不对劲时,能不能判断出是哪一步的锅。这三样缺一样,硬上就是烧钱换经验。
如果预算和团队规模都不支持,用开源基座起步是更现实的路。省掉的是从零训练那一大笔算力、几个月的时间和最吃经验的一轮调试;代价是模型的能力边界、中文语感、知识偏好在别人手里,你要接受它的「性格」,超不出它的底子。后面想补,一般靠指令微调加领域数据来贴合自己的场景。至于基座候选和当时的权重情况,到站内的模型资料库页面核对;预算换算和成本预估,去价格追踪页看当时的数字。
后训练:微调与对齐,效果提升的实际发生地
后训练常被当成一个动作,其实它至少是三件事叠在一起:指令微调、偏好对齐、领域微调。混着做最容易出的问题是,你以为是数据不够,其实是目标没拆开。先把每件事要解决的问题写清楚,再决定要不要动手。
- 指令微调
- 让模型听懂「按这个格式回答」这类要求,比如固定输出成表、固定先给结论再给理由。
- 偏好对齐
- 让模型在多个都算对的回答里,更倾向你想要的语气、详略和取舍方式,靠对比数据来教。
- 领域微调
- 把行业术语、内部流程、专业写法灌进去,让模型少犯外行错误,而不是只改说话方式。
判断要不要微调,可以按「稳定性需求」来分。如果任务只是格式稳定,用提示词加几个示例就能压住,没必要动权重;如果是风格和领域知识要长期稳定,换个人问、换个说法都不能漂,那才值得投入微调。反过来,任务本身经常变、或者你连一版像样的提示词都还没调出来,就先别急着进训练环节。
| 你现在的情况 | 更该先做什么 | 什么时候不适用 |
|---|---|---|
| 输出格式老跑偏 | 提示词 + 少量示例固定结构 | 任务要求每天变,规则本身还没定 |
| 语气和详略不统一 | 偏好对齐,用对比样本教取舍 | 只要求答对,不介意怎么说 |
| 专业术语老用错 | 领域微调,灌术语和内部写法 | 领域知识能靠检索实时补上 |
| 换了说法就答崩 | 先把测试集列全,再判断是否微调 | 问题出在检索或输入噪声,不在模型 |
- 先拆目标把要解决的事写成一句话,分别标注属于格式、风格还是知识,别三个混在一条需求里。
- 再定数据量级先按「每类场景覆盖多少条」估算,具体规模建议到站内指南中心的数据准备页核对当时的推荐区间。
- 质量优先宁可少而干净,也不要多而矛盾。同一类问题出现两种相反示范,等于没教。
- 留验证集训练前先切出一份不参与训练的验证集,专门用来看模型在没见过的问题上表现如何。
- 训练集一路变好,验证集开始掉头,就是过拟合的典型信号,该停就停。
- 同一批数据反复训很多轮,收益很快见顶,后面基本是在背答案。
- 样本里出现自相矛盾的写法,模型会两头不靠,先清数据再谈加量。
- 验证集不要和训练集同源同批,否则你看到的「好」只是记住了。
评测验收:怎么判断这轮训练能不能上线
训练跑完,loss 曲线好看,不代表这版能上线。验收要看的是它在真实任务上稳不稳、贵不贵、错起来会不会闯祸。三类手段缺一不可,但每一类都有盲区,先想清楚你信的是哪一条证据。
| 手段 | 能看出什么 | 盲区(什么情况下不适用) |
|---|---|---|
| 内部评测集 | 自家高频任务的成功率与格式表现 | 题是你自己出的,容易和训练数据同源,分数虚高 |
| 公开榜单 | 横向位置、通用能力的大致水位 | 榜单题目和你的业务分布不同,刷榜式优化在私域任务上掉分 |
| 人工抽检 | 语气、边界、答非所问这类机器指标抓不到的问题 | 样本量小、标注者口径不一致,适合定性不适合定阈值 |
阈值不要凭感觉拍,先从现网上一版模型跑同一套评测,拿到基线,再定「允许波动多少」。任务成功率、格式合规率、幻觉率、延迟与成本这四项,分别对应「能不能用」「能不能接系统」「敢不敢放给用户」「养不养得起」。具体数字随业务和模型档位差别很大,去站内评测数据页面看当时的实测区间做参考。
- 拉基线用当前线上模型跑同一份内部评测集,记录四项指标的当前值,作为对比起点,而不是直接定一个绝对目标
- 定阈值成功率与格式合规率设下限、幻觉率设上限、延迟与成本设上限;每项写清样本量、评测口径和谁签字
- 分场景验收把流量拆成高价值任务和长尾任务,高价值任务阈值收紧,长尾可放宽,别用一套标准卡全部场景
- 交叉验证内部评测、公开榜单、人工抽检三边结论不一致时,以内部评测为主、人工抽检解释原因,榜单只做参考
榜单排名和真实任务表现经常对不上,原因不复杂:榜单题目公开且固定,训练侧容易针对性优化;而你的任务有专属的格式约束、行业术语和边界规则,模型没在这些分布上练过。另外榜单多按单轮问答打分,真实场景是多轮、带上下文、还要调工具。所以榜单只能回答「这版模型大概在什么水位」,回答不了「能不能接进我的流程」。
- 任务成功率低于基线且人工抽检也变差:不换,保留上一版
- 格式合规率不达标,但成功率持平:先加输出约束层再验收,别直接上
- 幻觉率上升但集中在低风险问答:限定灰度范围,高风险场景继续走旧版
- 延迟或成本超出预算上限:按任务分层路由,贵的场景用新版,量大场景留旧版
- 改动只涉及某个垂直任务,其他指标无变化:只对该任务灰度,不动全局流量
回退方案要提前写好,别等出事再讨论。至少准备三样:上一版模型的可用镜像或权重、流量切回旧版的开关、以及切回后要盯的指标看板。什么情况下该保留上一版继续用?简单说,新版在核心任务上没有明确更优,或者四项指标里任何一项突破了你定的红线,就回退,宁可晚一周上线,也别拿线上用户做测试。
初学者最容易踩的六个坑
训练跑不起来、跑起来又白跑,八成不是模型的问题,是开跑前那几分钟没想清楚。下面六个坑按「数据→评估→验收→上线」的顺序排,每个坑配一句自查问句,开跑前逐条问一遍自己,能挡掉大部分返工。
- 坑一:数据没清洗就开跑脏数据(重复、乱码、格式混杂、标签错位)会让模型学到噪声,表现出来是「训练集很好、真实场景很怪」。自查问句:这批数据我抽样看过多少条?清洗规则是什么、谁写的、跑完有没有抽样复核?
- 坑二:拿训练集当验证集同一批数据既训又验,指标虚高是必然的,等于开卷考试自己给自己打分。自查问句:训练、验证、测试三份数据是不是物理隔离的?切分是在清洗前还是清洗后做的(顺序错了会泄漏)?
- 坑三:只看损失不看任务指标损失下降只说明模型在拟合这批数据,不代表它在你真正关心的任务上变好。自查问句:这个任务最终看哪个指标?它现在有没有被单独算出来?
- 坑四:拿公开榜单排名当验收标准榜单分数高不等于你的业务场景好用,评测集和你的真实输入分布往往差很远。自查问句:我有没有自己抽一批真实业务样本做人工或规则评估?榜单成绩拿来当参考还是当结论?
- 坑五:忽略推理成本训练只花一次钱,推理是天天花钱。模型变大、上下文变长、并发变高,账单会跟着涨。自查问句:上线后每天大概多少次调用?单次调用的成本和延迟我算过没有?
- 坑六:没有回退机制新模型上线就全量替换,一旦效果变差、超时变多,只能干等。自查问句:出问题时多久能切回旧版本?旧版本、旧配置、旧数据快照都还留着吗?
| 坑 | 开跑前自查问句 | 什么情况下可以不这么严 |
|---|---|---|
| 数据没清洗 | 抽样看过多少条?清洗规则谁定的? | 数据本身来源单一且已带质量标记,可只做抽样复核 |
| 训练集当验证集 | 三份数据是否物理隔离?切分在清洗前还是后? | 纯探索性小实验,只求跑通流程、不打算看指标 |
| 只看损失 | 任务指标是哪个?单独算过吗? | 只做收敛性排查,暂时不关心业务效果 |
| 把榜单当验收 | 抽过真实业务样本评估吗? | 榜单本身就是你的目标场景,且评测集与线上分布一致 |
| 忽略推理成本 | 每天调用量、单次成本与延迟算过吗? | 纯离线批处理、不做线上服务 |
| 没有回退机制 | 多久能切回旧版本?旧快照还在吗? | 一次性离线产物,不存在线上流量切换 |
这六个坑有个共同点:都不是技术难题,而是「顺序错了」或者「少问了一句」。真要省事,就把上面表格里的自查问句存成一份开跑前检查单,每次训练前花两分钟过一遍,比事后调参划算得多。
- 先定评估口径,再定训练目标,顺序反了会白跑;
- 数据切分要在清洗前想清楚,避免泄漏;
- 损失曲线只是过程指标,验收要用任务指标;
- 榜单成绩是参考项,不是验收项;
- 训练开跑前就把推理成本和回退方案写下来;
- 检查单留档,方便下次对比这次到底踩了哪个坑。
常见问题
不懂算法的人能走完训练全流程吗?
能走完后半段。数据准备、评测、上线这几段偏工程和流程,不需要推导公式;预训练和后训练的核心调参通常需要有人懂原理,小团队可以用现成框架加开源基座起步,把精力放在数据质量和验收标准上。
训练一个模型大概要多久?
差别极大,取决于模型规模、数据量、卡数和框架效率。小规模微调可能几小时到几天,从零预训练往往以周甚至月计。具体的时间与算力对应关系建议到站内的训练与算力页面按当时的配置估一遍,别照搬别人的时间表。
不预训练,直接微调现成模型算不算训练?
算,而且是绝大多数团队的实际做法。微调属于后训练阶段,只调整已有权重的一部分,成本比预训练低几个量级。只有当你的领域语料和通用语料差异极大、且预算充足时,才考虑从更早的阶段介入。
训练完怎么知道比上一版好?
先固定一套评测集,跑同一批任务对比新旧两版的成功率、格式合规率和成本,再看人工抽检。只看损失曲线或公开榜单容易误判。建议保留上一版随时可回退,尤其是准备上线的时候。
训练和推理的算力需求差多少?
通常是数量级差别。训练要算梯度、存中间状态,显存和卡数要求高得多;推理只做前向计算,同一模型往往一张卡就够跑。具体倍率和配置可以到站内的算力与部署测算页面按你的模型规模对一遍。