在领域语料 50GB 与指令数据 5M 条场景下,如何决定 CPT 与 SFT 的 epoch 比例?
解读
面试官问的是“如何决定”,而不是“给出一个数字”。他想知道你是否能把数据规模、算力预算、业务目标、模型稳定性四者串起来,给出一套可落地的决策流程。国内大厂落地百亿/千亿模型时,CPT(Continue Pre-Training)与 SFT(Supervised Fine-Tuning)的 epoch 比例直接影响成本、时效与效果,必须量化论证。
知识点
- CPT 的本质是“领域词表再编码+知识注入”,50 GB 领域语料通常≈80 B token;在 1×A100 80G 用 DeepSpeed-Megatron 训练 10B 模型,1 epoch ≈ 2 万 GPU 时。
- SFT 的本质是“对齐+指令遵循”,5 M 条指令≈2 B token;同样硬件1 epoch ≈ 300 GPU 时,成本只有 CPT 的 1.5 %。
- 国内监管要求生成内容必须“安全可控”,因此 SFT 阶段必须留足 2~3 epoch 做红线样本过采样,否则无法通过备案抽检。
- 学习率与 epoch 的耦合:CPT 用 cosine decay,终值 1e-5;SFT 用 linear warm-up + cosine,峰值 2e-5;若 CPT epoch 过多,下游 SFT 容易“拉不动”,出现知识遗忘。
- 早停信号:CPT 看领域验证集 perplexity plateau;SFT 看综合 F1 与安全违规率双指标,违规率>0.3% 立即停训。
答案
我给三步量化法:
第一步,算力上限反推。假设项目给 200 张 A100×10 天,总 GPU 时 48 k。CPT 单 epoch 2 万 GPU 时,最多跑 2.4 epoch;SFT 单 epoch 300 GPU 时,预留 6 k GPU 时可跑 20 epoch。
第二步,业务目标对齐。若业务要求领域 Rouge-L≥45 且安全违规率≤0.2%,经验表明 CPT 需 2 epoch 才能把 perplexity 压到 1.3 以下,SFT 至少 3 epoch 才能满足违规率。
第三步,动态调比例。先跑 2 epoch CPT,保存 5 个中间 ckpt;用 1% 指令数据做小样本 SFT 探针,画出“CPT epoch—SFT 3 epoch 效果”曲线,若第 2 epoch 后增益<1%,立即停 CPT,把剩余算力全部转给 SFT 做增量 5 epoch + 红线过采样。
最终比例:CPT 2 epoch : SFT 8 epoch,既在预算内,又通过备案。
拓展思考
如果公司只有8 卡 A100且要 3 周上线,上述方案 GPU 时缺口 10 倍,必须降级:
- 用LoRA CPT,冻结 80% 层,只训 FFN,epoch 拉到 6,把 GPU 时压到 3 k;
- SFT 阶段引入RHLF 采样+AI 反馈,用 200 K 高质量偏好对替代 2 M 普通指令,3 epoch 就能达到原先 8 epoch 效果;
- 上线后通过在线强化学习持续补课时,逐步把 CPT 欠的 1.5 epoch 补回来,实现**“先上线、后补课”**的国产落地节奏。