想自己训一个模型,最容易卡在开头:数据从哪来、要不要先微调、算力怎么估、训完怎么判断能不能上线。这篇按链路顺序把每步该做什么、做到什么程度算过关讲一遍,并标出哪些环节可以先跳过。文中涉及具体数字的地方,都指到站内对应页面去核对当时的值,避免照着过时数字做决策。
想自己训一个模型,最容易卡在开头:数据从哪来、要不要先微调、算力怎么估、训完怎么判断能不能上线。很多人一上来就找卡、找框架,结果跑了两周发现方向就选错了。这篇按链路顺序把每步该做什么、做到什么程度算过关讲一遍,并标出哪些环节可以先跳过。
文中涉及具体数字的地方,都指到站内对应页面去核对当时的值,避免照着过时数字做决策。流程本身是通用的,但每一步的取舍要看你的任务和数据,所以下面给的是判断标准,不是标准答案。
先定目标和路线:全量预训练还是续训微调
开训之前先回答三个问题:要解决的任务,现在用的方案为什么不够、你的数据是不是自己独有、预算和时间能不能撑住。这三个里有一个答不上来,就别急着开训——多半是方向没想清楚,不是模型不够强。
- 从零预训练
- 用海量通用语料从随机初始化开始训,只在有专属语料且算力和人力都充足时才考虑
- 继续训练
- 在开源权重上继续喂领域语料,适合数据量中等、想让模型更懂某个垂直领域
- 微调
- 在基座上用小规模高质量数据调行为,多数团队和个人实际落在这一条
路线判断依据可以看站内 /training 与 /stacks/fine-tuning 的目录说明,算力花销的量级去 /compute/training-cost 看当时的估算口径,别凭印象估。如果只是想让模型按固定格式输出、或者学会某个小任务,微调通常就够了,硬上预训练属于用大炮打蚊子。
数据准备:来源、清洗、切分三件事
数据这块先划清来源和授权边界。涉及第三方语料、用户数据、爬取内容的,到 /safety 和 /ai-dict/category/safety 对照合规要求,权属不清的先不用。宁可数据少一点,也别埋一个后来要全部回滚的坑。
- 去重先做精确去重再做近似去重,近似去重按语义相似度阈值筛,阈值先在抽样上试,别一上来全量跑
- 清噪音去乱码、去模板残留、去网页导航文字,每一步都留抽样前后对照,方便回溯是哪步洗过头了
- 过滤按长度和语言过滤,太短太长的先剔除,语言比例按目标任务定,别让某一类语料占比过高
- 敏感筛查跑一遍敏感内容筛查,命中的样本单独存放人工过一遍,不要直接删掉也不要不看
- 切分切训练/验证/测试三份,切分必须在去重之后做,否则同一内容跨集出现会让评估结果虚高
算力与配置:先小后大,先通再快
别一上来就堆卡。先用小样本、小步数跑通一次完整训练,确认数据能读、loss 能降、checkpoint 能存能加载,再去放大配置。这一步花的机时最少,但能提前暴露绝大多数工程问题。
显存和卡数按模型规模、精度、批大小、序列长度四个变量估,站内 /models/deploy、/compute/sizing 和 /compute/gpus 有按参数与精度算的入口,核对当时的口径。估算时留出余量,训练中途因为显存打满重启最费时间。
| 现象 | 先查什么 | 下一步 |
|---|---|---|
| 显存打满 | 批大小和序列长度是否同时放大 | 先降一个再试,别两个一起动 |
| loss 不降 | 数据格式和学习率是否匹配 | 抽样看输入,再回到小样本复现 |
| 训练中断 | checkpoint 是否能正常加载 | 先修复存读,再谈继续训 |
| 速度异常慢 | 数据读取是否成为瓶颈 | 看 IO 和预处理,别先怀疑卡 |
- 训练参数不要照抄别人的配置,先按自己的数据量与显存定一个保守起点,再逐步调
- 调参记录要留档,包含数据版本、参数、随机种子,能复现才有意义
- 中途出问题先按上面的表分类,再动手,别一上来就整段重跑
- 每次放大配置只改一个变量,改两个以上就说不清是哪个起的作用
评估:拿什么判断能不能进下一步
评估集要独立于训练数据,且要覆盖真实使用里最常见的边缘情况,不能只测顺手的样本。顺手样本上分数好看,上线后遇到真实输入照样翻车,这种评估等于没做。
| 评估维度 | 看什么 | 不适用的情况 |
|---|---|---|
| 任务指标 | 准确率、召回、生成质量是否达标 | 任务本身定义模糊时,指标参考价值有限 |
| 行为指标 | 是否跑偏、是否拒答、是否胡编 | 只做离线批处理、无交互时可弱化 |
| 成本指标 | 延迟、吞吐、单次开销能否接受 | 成本不敏感的内部实验可暂时放宽 |
和基线比,不和空气比。基线就是当前线上在用的方案,包括规则、小模型、调用外部接口。比不过就别换,换了反而多一层维护成本。评估结论要写明适用边界和不适用的场景,只有特定输入下效果好就写清楚,别写成通用能力。
上线与回收:灰度、监控、留退路
上线先灰度,按流量比例或按用户分组放量,观察窗口内盯住质量指标和成本指标,两侧都稳住再扩量。只盯质量不盯成本,很容易出现效果没退多少、账单翻几倍的情况。
- 旧方案保留一段时间,回退路径要能一键切回,别等出事再临时搭
- 模型权重与配置版本的对应关系记录清楚,出问题时能定位到具体是哪一版
- 数据格式变更要有兼容期,上下游不会同时升级
- 上线后定期复评,数据分布会漂移,评估集也要跟着更新
- 评估集长期不换,分数会慢慢失去参考意义,定期换掉过时样本
这套流程走一遍大约要多久、各环节算力大致什么量级,去 /training 和 /compute/training-cost 看当时的页面数据,别用旧印象排期。流程能压缩,但评估和回退这两步不要省。
下一步如果你还在选路线阶段,先去模型与工具目录对照自己的任务类型,再决定是微调还是继续训练,能省掉一轮无效跑。→常见问题
完全没有算力,能自己训模型吗?
能训,但要选对路线。纯从零预训练基本不现实,换成在开源权重上做小规模微调,用免费或低价算力也能跑通全流程。关键是先把数据和小样本流程跑通,再按站内算力页面核对当时的价格与机型,别一上来就租大卡。
数据量多少才够训?
没有统一门槛,取决于路线。微调往往几百到几千条高质量样本就能看到效果,从零训练则需要大得多。判断标准不是条数,而是数据是否覆盖你的目标场景、是否和评估集来源一致。站内微调与训练相关页面有按规模估算的思路,可以对一遍。
训完了怎么知道能不能上线?
先过评估集,再和当前线上基线对比,两类都要赢才算过关。评估要同时看任务效果、行为表现和成本三项,任何一项明显变差都要先查原因。小流量灰度跑一段时间,质量与成本都稳得住,再逐步放量,同时保留随时回退旧方案的能力。