Q908训练与微调真题解析LLM 训练AgentAlpha 社区真题库约 8 分钟更新 2026-09-29

什么是「持续预训练「(Continual Pre-training)?和从头训练有什么不同

什么是「持续预训练「(Continual Pre-training)?和从头训练有什么不同

1️⃣ 考察意图

面试官想看你能否解释持续预训练的工程价值和关键技术挑战。这是企业落地 LLM 的常见场景——很少有企业从头训练模型,大多是在开源模型上做持续预训练。刁钻点在于:很多人只答"继续训练",但说不出灾难性遗忘的机制和缓解方法、领域适配的配比策略、以及何时该用持续预训练而非 SFT。答好了能展示你的工程落地经验。

2️⃣ 标准答

持续预训练是在已有通用模型基础上,用特定领域数据继续训练,使模型适配新领域。

1. 持续预训练 vs 从头训练 vs SFT

维度从头训练持续预训练SFT
数据量1T-15T tokens10B-500B tokens1K-1M 条
数据类型通用语料领域语料+通用语料指令对
计算成本极高(1000+ GPU·月)中(10-100 GPU·月)低(1-10 GPU·天)
通用能力从零建立保留(需防遗忘)基本不变
领域能力从零建立明显提升轻微提升
适用场景基础模型公司领域垂直公司应用层公司

2. 什么时候用持续预训练而非 SFT?

  • 用持续预训练:领域有大量未标注数据(如医疗文献、法律案例、金融报告),且领域知识与通用知识差异大(如医学术语、法律逻辑)
  • 用 SFT:领域有标注数据(如指令-回答对),且模型只需学会"按特定格式回答"而非"学习新知识"
  • 用持续预训练 + SFT:先用持续预训练注入领域知识,再用 SFT 教模型按特定格式输出

3. 核心挑战:灾难性遗忘(Catastrophic Forgetting)

  • 现象:模型在领域数据上继续训练后,通用能力(如 MMLU、HumanEval)显著下降
  • 机制:模型的参数被领域数据"覆盖"——之前学到的通用知识被领域知识"挤出"了
  • 程度:取决于数据配比、学习率、训练步数。纯领域数据训练 10B tokens 可能导致 MMLU 下降 10-20%

4. 灾难性遗忘的缓解方法

方法 1:数据混合

  • 在领域数据中混入 10-30% 的通用数据(如 C4、Wikipedia)
  • 效果:通用能力下降减少 50-80%
  • 代价:领域适配速度变慢(部分训练步数用于"复习"通用知识)
  • 最佳配比:通常 70% 领域 + 30% 通用,需要实验调优

方法 2:低学习率

  • 持续预训练用比初始预训练低 10-100 倍的学习率(如 1e-5 vs 初始 1e-4)
  • 效果:参数变化更平缓,减少"覆盖"通用知识的程度
  • 代价:收敛速度变慢,需要更多训练步数

方法 3:LoRA/QLoRA

  • 不更新全部参数,只训练低秩适配矩阵(LoRA)或量化后的参数(QLoRA)
  • 效果:通用能力几乎不下降(原始参数未被修改),领域适配效果略低于全参数
  • 适用:领域数据量少(<10B tokens)、计算资源有限

方法 4:EWC(Elastic Weight Consolidation)

  • 对重要参数(对通用任务影响大的参数)施加正则化,限制其变化幅度
  • 效果:理论上最优,实践中调参困难(需要计算 Fisher 信息矩阵)
  • 代表:较少在实际中使用,大部分团队用数据混合代替

5. 持续预训练的典型流程

1. 选择基座模型(如 LLaMA-3-8B)**2. 收集领域数据(如 50B tokens 的医疗文献) 3. 数据清洗 + 去重(同预训练流程) 4. 混合通用数据(70% 领域 + 30% 通用) 5. 用低学习率(1e-5)训练 50B tokens 6. 每 5B tokens 评估:领域 benchmark + 通用 benchmark 7. 选择"领域提升大 + 通用下降小"的 checkpoint 8. 在选定的 checkpoint 上做 SFT(指令微调)

3️⃣ 答题模板(30 秒电梯版)

"持续预训练是在通用模型上用领域数据继续训练。vs 从头训练:省 90%+ 成本,保留通用能力。vs SFT:数据量大(10B-500B vs 1K-1M)、注入知识而非格式。核心挑战是灾难性遗忘——领域知识'覆盖'通用知识。缓解方法:数据混合(70%领域+30%通用,遗忘减少50-80%)、低学习率(比初始低10-100倍)、LoRA/QLoRA(不修改原始参数)、EWC(正则化重要参数)。典型流程:选基座→收集领域数据→混合通用→低学习率训练→定期评估→SFT。"

4️⃣ 高频追问 & 应对

追问 1**:数据混合的比例怎么定?30% 通用数据是不是太多了?

比例取决于领域与通用的差异程度:(1) 差异小(如新闻领域 vs 通用文本)→10% 通用足够,因为领域数据本身和通用数据分布相似;(2) 差异中(如代码/数学)→20-30% 通用,因为需要保留语言能力;(3) 差异大(如医疗/法律)→30-50% 通用,因为领域术语和通用语言差异大,容易遗忘通用能力。调优方法:(1) 先用 30% 通用训练,评估通用能力下降幅度;(2) 如果下降<5%,降低到 20%;如果下降>10%,提升到 40%;(3) 最终目标是通用能力下降<5%,领域能力提升>10%。

追问 2:持续预训练后做 SFT 时,SFT 数据需要包含领域数据吗?

需要。持续预训练注入了领域知识,但模型没有学会"如何按指令输出领域知识"。SFT 数据需要:(1) 领域指令对——如"请根据病历生成诊断报告"→标准答案,教模型将领域知识按特定格式输出;(2) 通用指令对——如"请写一首诗"→标准答案,保持模型的通用指令遵循能力。比例通常 50% 领域 + 50% 通用。如果只用领域 SFT 数据,模型可能只擅长领域任务,对通用请求"退化"。CodeLlama 的做法:持续预训练后用 2B tokens 的代码指令数据做 SFT,但混入了通用指令数据。

追问 3:多个领域的持续预训练怎么处理?比如先训练医疗再训练法律?

顺序持续训练会叠加遗忘——训练法律时可能遗忘医疗知识(即使之前训练医疗时保留了通用能力)。解决方案:(1) 同时训练——将医疗和法律数据混合(如 40% 医疗 + 40% 法律 + 20% 通用),一次性持续预训练。避免顺序遗忘但需要更多计算资源;(2) 顺序训练 + 回放——训练法律时混入 10% 医疗数据(replay),防止遗忘医疗知识。代价是训练数据量增加;(3) LoRA 多领域——为每个领域训练独立的 LoRA 适配器,推理时根据任务动态加载。优点是零遗忘,缺点是模型不能同时处理多领域任务。实践中方案 1 最常用。

5️⃣ 避坑 · 常见错误答法

  • ❌ "持续预训练就是继续训练,没什么特别的" → ✅ "持续预训练的核心挑战是灾难性遗忘——需要数据混合、低学习率、LoRA 等技术防止通用能力下降。不处理遗忘的持续训练会导致模型'只会领域不懂通用'。"
  • ❌ "用全领域数据训练效果最好" → ✅ "纯领域数据训练会导致严重的灾难性遗忘。需要混合 20-30% 通用数据,在领域适配和通用能力之间找平衡。"
  • ❌ "持续预训练可以替代 SFT" → ✅ "持续预训练注入领域知识,但不教模型'如何按指令输出'。需要持续预训练 + SFT 两步走:先注入知识,再教格式。跳过 SFT 的模型虽然'知道'领域知识但不会'按用户期望的格式回答'。"

6️⃣ 简历呼应

  • 如果你有持续预训练项目:从"领域适配全流程"切入,描述你在开源模型上做的持续预训练(基座选择、数据收集、配比设计、遗忘缓解),给出领域 benchmark 提升和通用 benchmark 下降的数据
  • 如果你只做过 SFT:用"SFT 数据配比"切入,说明你理解 SFT 和持续预训练的关系——持续预训练注入知识,SFT 教格式,两者互补
  • 如果你是校招:在 LLaMA-2-7B 上用医疗数据做持续预训练,对比不同通用数据混合比例(0%/10%/30%/50%)对 MMLU 的影响,写博客
  • "Continual Pre-training of Language Models" (Gupta et al., 2023)
  • "LoRA: Low-Rank Adaptation of Large Language Models" (Hu et al., 2021)
  • "Code Llama: Open Foundation Models for Code" (Rozière et al., 2023)

本章学习完毕 ← 返回 Agent 岗面试宝典 v3 · 精华版 | 📝 建议整理错题笔记 | 🎯 标记掌握程度

—— 本场面试完 ——

我们不做玩具级 Demo 教学。训练营的作业是开源项目和论文——我们想陪伴你,做出能改变生活、最后改变世界的项目。