第4章 大模型训练与优化:微调策略、RLHF、分布式训练要点

本章聚焦大模型训练优化三大核心方向:微调策略、RLHF、分布式训练。面试中常以“对比方法”“原理追问”“项目落地”三类题型出现。以下框架帮助你快速组织答案,避免零散背诵。

大模型训练优化回答框架 1. 理解意图:是原理对比还是工程落地? 2. 核心原理:微调/RLHF/分布式关键机制 3. 对比方案:全量微调 vs LoRA vs PPO vs ZeRO 4. 项目实例:你实际用过的场景与trade-off

🎯 不同公司侧重点

  • 大厂(字节/阿里/腾讯): 强调分布式训练(ZeRO、Megatron-LM)、RLHF工程化落地、低成本微调(LoRA、QLoRA)。
  • 创业公司(智谱/百川/月之暗面): 看重微调策略选择(全参数 vs PEFT)、RLHF对齐效率、混合并行架构。
  • 外企(Google/ Meta/ Microsoft): 偏好理论深度(RLHF数学推导、PPO收敛性)、分布式通讯优化。

🧑‍💼 面试官画像

  • 常见角色: 训练框架负责人、模型微调技术Leader、分布式系统专家。
  • 提问风格: “假设你有一个7B模型在8卡机器上,如何设计微调策略?”——考察工程思维和成本意识。
  • 踩点关注: 能说出至少两种微调方法的参数更新差异;能对比RLHF中PPO与DPO的优缺点;能解释ZeRO-1/2/3内存节省原理。

📌 Q1:请比较全参数微调与LoRA微调的适用场景与优缺点。

🔍 面试官考察点:

  • 是否理解“微调本质是参数空间子空间移动”
  • 能否根据算力和数据量做出合理选择
  • 是否了解LoRA的秩和缩放因子对性能的影响

🧩 回答框架: ①定背景(模型大小/任务类型)→ ②对比参数更新方式 → ③优缺点:全参效果好但成本高,LoRA节省内存但表达能力受限 → ④给出选择依据(数据量<100k时LoRA更优)→ ⑤实操经验(如LoRA rank=16效果最佳)。

📝 示例回答(80字): “全参数微调更新所有参数,适合数据量大、任务与预训练差异大的场景;LoRA通过低秩矩阵更新,显存占用降低70%,但表达能力受限。我们曾在10万指令数据上对比:全参提升5%但训练成本翻倍,最终选择rank=32的LoRA,效果仅差1.2%。”

❓ 可能追问: LoRA的秩如何影响?是否可以多任务共享LoRA?全参数微调后模型出现灾难性遗忘怎么处理?

⚠️ 避坑提醒: 不要只背概念而不关注计算成本(FLOPs、显存)。面试官不喜欢“LoRA就是好”这种答案,要指出当数据量>50万时全参微调通常更优。

📌 Q2:RLHF中奖励模型与PPO是如何协同工作的?为什么有时用DPO代替PPO?

🔍 面试官考察点:

  • 对RLHF完整链路的理解(偏好数据→奖励模型→策略优化)
  • 是否清楚PPO的clipping、advantage等关键公式
  • 能否分析PPO训练不稳定的原因及替代方案

🧩 回答框架: ①RLHF三阶段:SFT + RM训练 + PPO优化 → ②PPO借助奖励模型计算reward,通过重要性采样和clip防止策略偏移 → ③DPO直接利用偏好数据优化策略,省去奖励模型,训练更稳定 → ④选择依据:数据噪声大时DPO更优;需要在线探索时PPO更合适。

📝 示例回答(85字): “RLHF中奖励模型提供标量奖励信号,PPO利用该信号更新策略,并加入KL散度约束防止偏离。DPO去掉了奖励模型,直接对比好/坏回复的log概率差,收敛更快。我们在对话模型上对比:DPO训练时间减少40%,且避免奖励黑客问题,但PPO在长文本一致性上略好。”

❓ 可能追问: PPO的clip参数通常设多少?如何解决RLHF中的奖励欺骗?DPO的sigmoid loss和对比学习有什么联系?

⚠️ 避坑提醒: 不要只讲PPO公式而忽略实际工程问题(如奖励模型过拟合导致策略退化)。提及“reward normalization”和“KL penalty”作为加分项。

📌 Q3:ZeRO-3如何实现训练130B模型的显存节省?数据并行与模型并行有什么区别?

🔍 面试官考察点:

  • 是否理解ZeRO三个阶段的内存分布原理
  • 能否说出张量并行与流水线并行的核心差异
  • 是否了解实际训练中的通讯瓶颈(all-reduce vs all-gather)

🧩 回答框架: ①ZeRO-1分割优化器状态 → ZeRO-2额外分割梯度 → ZeRO-3分割模型参数 → ②训练时按需聚合,推理时参数分散 → ③数据并行复制模型,模型并行将模型层切分到不同设备 → ④适用场景:数据并行适合小模型大batch;模型并行适合单卡放不下的超大模型。

📝 示例回答(90字): “ZeRO-3将模型参数、梯度、优化器状态全部分布到各卡,每卡只存1/N,通过all-gather按需还原参数,显存降低至单卡的1/N。数据并行每卡持有完整模型但处理不同数据,而模型并行(如Megatron-LM)把Transformer层切分到多卡。我们训练130B模型时混合使用DP+PP+ZeRO-3,8节点实现65%算力利用率。”

❓ 可能追问: ZeRO-3的通讯量相比ZeRO-2增加了多少?如何设置梯度累积步数平衡效率?流水线并行中气泡怎么处理?

⚠️ 避坑提醒: 不要混淆“数据并行”和“模型并行”的切分粒度。回答时强调“ZeRO-3本质是数据并行+参数分片”,而非真正的模型并行。