继续预训练与训练:多卡、并行、成本估算,以及为什么多数人不该自己训

LLM 知识 · 使用 · 第 10 篇 更新于 2026-10-15

硬件前提

多卡起步。这一篇的主要产出不是「会训」,而是会算成本、会劝退不该做的决定。

三个层次,别混为一谈

层次做什么数据量级算力量级
LoRA 微调改行为千~万条样本单卡数小时(见上一篇)
继续预训练(CPT)在领域语料上继续做 next-token数亿~数十亿 token8×A100/H100 数天
从头预训练造一个基座模型万亿 token 级数千卡 × 数周

绝大多数「我们要自己训一个模型」的需求,实际需要的是第一行;退一步是第二行;第三行几乎永远不该由个人或小团队做。

成本怎么估(数量级,不是报价)

训练计算量粗略为:FLOPs ≈ 6 × 参数量 × 训练 token 数。

代入感受:

  • 7B 模型训 100 亿 token ≈ 4×10²⁰ FLOPs。按一张现代加速卡的有效算力(远小于标称,通常只有标称的三到五成)折算,是数百到上千 GPU 小时量级。
  • 同样 7B 训到万亿 token,就是数十万 GPU 小时——这是「买一机柜卡跑几个月」的规模。

还要加:数据成本(清洗与去重往往比算力贵)、失败重跑(第一次配方不会一次成功)、评测与消融(占真实消耗的 30% 以上)。

并行:四种切法分别解决什么

方式解决什么代价
数据并行(+ ZeRO 分片优化器状态)吞吐不够卡间通信;显存仍要装下模型
张量并行单层太大、单卡装不下通信极重,通常限制在单机内
流水并行模型层数多、跨机扩展流水线空泡,需要 micro-batch
序列并行 / 上下文并行序列太长实现复杂,收益依场景

实操结论:7B~14B 用「数据并行 + ZeRO」就够;70B 才需要张量 + 流水组合。 别一上来就设计复杂并行。

什么时候继续预训练才划算

同时满足三条才考虑:

  1. 你有别人拿不到的语料(几亿 token 以上、质量可控);
  2. 你的任务确实需要底座层面的能力(领域生成、领域代码),而不是知识检索或格式稳定;
  3. 你接受至少两轮配方迭代的预算(数据配比、学习率、混入通用数据的比例都要试)。

只满足第 1 条的,通常 RAG 或 LoRA 就能解决,成本低两个数量级。

真要做时的最小可行流程

  1. 语料:采集 → 去重(近似去重是重点)→ 质量过滤 → 配比(领域 : 通用 ≈ 3 : 7 起步,防遗忘)
  2. 评测先行:先写好领域评测集与通用探针集,训练前跑一遍底座基线
  3. 小规模验证:用 1/100 数据 + 小模型跑通全流程,确认评测管线可信
  4. 正式训练:checkpoint 频繁保存,中途就评测,别等训完
  5. 消融记录:每次只改一个变量,否则无法归因

常见坑

坑后果
语料量大但脏(重复、机器生成、低质网页)训完通用能力下降,领域也没提升
不混通用数据灾难性遗忘,模型变「偏科」
没有训练前基线无法判断到底有没有提升
只看 loss 不做下游评测loss 降、任务变差是常态
第一次就全量开跑一次失败烧掉几周预算
忽略许可证与来源合规模型无法商用或需下架

完成标志

能给出一个带数字的判断:「这个需求用 LoRA/RAG 的成本是 X,继续预训练是 Y(约 Z 卡天),所以选 X。」
能写出这句话,这一篇的目的就达到了——不是让你去训,而是让你在该停的地方停。