CPT(Continued Pre-training,继续预训练)在无标注领域语料上继续做因果语言建模,向基座注入术语与知识;SFT 再教任务格式。若任务依赖大量领域概念(酶名、法规、内部缩写),仅 SFT 往往不够,需先 CPT 或 CPT+SFT 混合。
段末注释:领域自适应(domain adaptation)泛指让模型分布贴近目标领域;CPT 是最常见的实现手段之一。
系列索引:微调技术路线导读
一、CPT 在流水线中的位置
1 | 预训练基座 |
顺序:几乎总是 CPT → SFT(先知识后格式)。SFT 后再 CPT 易破坏指令能力(灾难性遗忘)。
二、何时需要 CPT
| 信号 | 说明 |
|---|---|
| 基座不懂领域术语 | 生成中胡编酶名、法规条号 |
| SFT 数据少但领域文多 | 先用大量 CPT 再少量 SFT |
| 开放生成需领域事实 | 医学、法律、科研文献 |
| 纯格式任务 | 不需要 CPT(如情绪分类) |
三、数据要求
| 项 | 建议 |
|---|---|
| 形态 | 纯文本 {"text": "..."} 或文档拼接 |
| 规模 | 通常 百万–数十亿 token 才有明显收益;小 corpus 收益有限 |
| 质量 | 去重、去噪、去 HTML;01-02 清洗 |
| 泄漏 | 勿把下游 test 原文放进 CPT |
四、训练配置要点
CPT 使用标准 Causal LM 目标(全序列 token CE),工具可用 SFTTrainer(text 字段)或 Trainer:
1 | from trl import SFTTrainer, SFTConfig |
| 超参 | CPT 典型 | SFT 典型 |
|---|---|---|
| lr | (10^{-5})–(2\times10^{-5}) | LoRA (10^{-4}) |
| epoch | 1 或少 | 1–3 |
| PEFT | 可 LoRA 或全参(有算力时) | 多 LoRA |
监控:领域 hold-out PPL(04-02 Perplexity);同时抽测通用 benchmark 防遗忘。
五、CPT + SFT 组合策略
| 策略 | 做法 |
|---|---|
| 串行 | CPT checkpoint → 同一权重上 LoRA SFT |
| 混合 batch | 同一训练流按比例混合 CPT text 与 SFT 对话(需自定义 collator) |
| 仅 adapter | CPT 全参、SFT LoRA(省 SFT 阶段显存) |
小团队推荐:串行 + SFT 阶段 LoRA。
六、评估
| 指标 | 用途 |
|---|---|
| 领域 PPL | CPT 是否拟合领域语料 |
| 下游 SFT 任务 F1/EM | 最终业务目标 |
| 通用能力抽检 | MMLU 子集、简单推理,看遗忘 |
七、常见踩坑
| 现象 | 原因 | 对策 |
|---|---|---|
| CPT 后 SFT 格式差 | CPT lr 过大 / epoch 过多 | 降 lr;CPT 权重作起点而非过度训练 |
| 通用能力掉 | 领域 corpus 占比 100% | 混入 5–20% 通用语料 |
| PPL 降、任务不涨 | CPT 数据噪声或域不对 | 清洗;检查域匹配 |
| 显存 OOM | 长 context 全参 CPT | LoRA CPT 或 ZeRO |
八、小结
CPT = 无标注领域语料 + 低 lr CE;适合「懂行话」再「会答题」。窄格式任务可跳过,直接 01→02→03 SFT 链路。
下一步:05-03 SFT 与指令微调。