第4章 算法与模型训练:损失函数设计、优化器选择、分布式训练、混合精度策略

大模型训练的核心瓶颈在于收敛效率与资源利用率。本章聚焦四大优化策略:损失函数适配任务特性、优化器平衡速度与稳定性、分布式策略突破单卡显存、混合精度加速并维持精度。面试时需展现原理深度与工程落地能力,避免仅罗列术语。

混合精度训练关键步骤流程 前向使用FP16/BF16 损失乘以缩放因子 反向传播(FP16) 梯度转FP32并反缩放 权重更新(FP32) 关键控制点 • 缩放因子避免下溢 • FP32 master weights • 动态缩放 vs 静态缩放

核心提示:混合精度训练已成为大模型训练的标配,面试中需结合具体框架(如PyTorch AMP、Megatron)阐述实现细节,并说明梯度缩放与动态阈值的配合逻辑。

面试问答精选

问题1:大语言模型预训练与RLHF阶段的损失函数如何设计?

面试官考察点是否理解不同阶段的目标差异;能否根据自己的项目经验提出具体损失函数形式;对对比学习、策略梯度等变体的掌握程度。
回答框架
  1. 分阶段说明:预训练(自回归CE)、SFT(CE)、RLHF(PPO-clip + KL散度)。
  2. 说明损失函数设计的核心原则:与任务目标对齐、控制显存/计算成本、避免过拟合。
  3. 可举例说明多任务损失加权策略(如引入辅助损失)。
简短示例回答预训练用标准交叉熵;SFT阶段同CE;RLHF采用PPO损失,由策略梯度项与KL散度惩罚组成,防止模型偏离奖励模型太远。若有多任务,可带权相加并引入动态平衡机制。
可能追问如何设定KL散度系数?多任务损失如何自动平衡?损失函数中temperature的作用?
避坑提醒不要忽略PPO中的GAE与value loss;强调KL散度应加在reward上或损失函数中,需说清具体位置。

问题2:大模型训练中选择AdamW还是SGD?为什么?

面试官考察点对优化器原理、内存占用、学习率调度策略的理解;能否根据模型规模与硬件条件做出合理选择。
回答框架
  1. 对比AdamW(自适应+权重衰减解耦)与SGD(手动调参+动量)。
  2. 大模型场景:AdamW收敛更稳定,但内存开销大(多倍状态量)。
  3. 补充实际使用:AdamW用于预训练,SGD配合预热可用于微调或少样本任务。
简短示例回答AdamW是主流选择:自适应学习率减少调参压力,权重衰减解耦提升泛化。但显存消耗高,若资源受限可尝试SGD + 余弦衰减 + 数据并行。我曾在训练130B模型时用AdamW,而微调小模型用SGD更快。
可能追问AdamW与Adam区别?学习率warmup的作用?如何调整Beta参数?
避坑提醒不要只说AdamW优于SGD;需说明权重衰减的正确实现方式(与学习率解耦);切忌忽略梯度裁剪与warmup的配合。

问题3:解释数据并行、模型并行、流水线并行的区别及适用场景。

面试官考察点对分布式训练三大范式的基本理解;能否比较通信开销与显存分布;对ZeRO等进阶优化的认知。
回答框架
  1. 定义:数据并行(模型复制,数据切分);模型并行(层切分到不同设备);流水线并行(设备负责连续层块,微批次流水)。
  2. 适用场景:数据并行用于单卡可容纳模型;模型并行用于超大规模;流水线并行减少通信同步等待。
  3. 常见组合:3D并行(数据+模型+流水线)用于千亿级模型。
简短示例回答数据并行最简单,但单卡放不下模型时需模型并行。流水线并行将模型切为多段,每个设备处理一段,通过微批次降低气泡。例如Megatron-LM采用1D/2D/3D并行策略,有效支持175B模型训练。
可能追问ZeRO-3与模型并行有何异同?流水线并行如何减少气泡?通信拓扑如何选择?
避坑提醒不要混淆模型并行与张量并行;注意说明流水线并行的气泡率计算;强调实际工程中会混合使用多种并行策略。

项目案例模板:基于Megatron-LM的千亿参数大模型训练

字段内容
项目名称千亿参数中文大语言模型训练(内部代号“StarLM”)
业务背景公司需要底座模型支持对话、文案生成、代码辅助;要求模型参数量175B,训练数据2T tokens。
规模指标参数量175B,训练数据2T tokens,使用256张A100 80GB GPU,训练时长约45天,最终收敛Loss 2.3。
技术栈PyTorch + Megatron-LM + DeepSpeed ZeRO-3 + NCCL;混合精度AMP(BF16)、梯度检查点、FlashAttention。
核心难点
  • 显存瓶颈:单卡装不下完整模型,需3D并行+ZeRO-3。
  • 通信效率:All-reduce带宽利用率需优化,采用分桶与重叠。
  • 训练稳定性:Loss spike与梯度爆炸,需动态loss scaling与梯度裁剪。
  • 容错恢复:频繁checkpoint保存,配合中断恢复机制。
面试高频追问
  • 如何确定3D并行的维度分配策略?
  • 梯度检查点对显存和速度的具体影响?
  • 训练过程中loss震荡如何处理?
  • 混合精度中BF16与FP16如何选择?
  • 如何实现分布式DataLoader保证数据不重复?
可迁移回答话术 “在我负责的175B模型训练中,我们采用了Megatron-LM的TP+PP+DP三维并行,结合ZeRO-3参数分片,有效将每卡显存从满载降到80%。针对通信瓶颈,我们通过调整流水线微批次大小和梯度累积步数来掩盖延迟。当遇到loss抖动时,我们优先检查学习率预热是否充分,并降低梯度裁剪阈值。”

面试加分技巧:在回答损失函数、优化器、分布式训练等问题时,主动关联项目中的具体数字(如batch size、训练吞吐量、显存占用),可以让回答更具说服力。同时展现对混合精度缩放因子动态调整的细节理解,远胜于笼统说“使用了AMP”。