一个已经能跑通的大模型训练任务,每周随机崩几次:loss 尖峰、偶发 NaN、梯度爆炸、NCCL 超时。问题分散在数据、优化器、通信、精度几个模块,归属不同团队。你被指定牵头做稳定性治理。你怎么把「不稳定」拆成可度量的子问题并排优先级?你会先建哪些按 rank 和数据分片可下钻的监控?止损(skip step、回滚 checkpoint)和根因定位(复现、重放)你怎么分阶段推进,怎么让这件事沉淀成平台能力而不是个人救火?
面试官在考什么
判断候选人能否把模糊的训练不稳定拆成可度量、可归属、可闭环的工程问题,并具备跨团队推动和平台化沉淀的能力。
回答框架 · 前两步
- 分类拆解:数值(溢出、精度、loss scaling、初始化)、数据(脏样本、长尾、标签)、优化(lr、裁剪、权重衰减)、系统(NCCL、硬件、straggler、显存碎片)。
- 可观测性先行:per-step loss、grad norm、clip 比例、loss scale 变化、各 rank 步耗时、通信量、显存、NaN/Inf 计数,并带上 rank 与数据分片标签。
还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「深度学习基础」方向页
同一能力域的其他题
- 训练一个深度学习模型时,loss 突然变成 NaN,你会按什么顺序排查?请给出你的排查清单。
- 显存不够时你会怎么办?请按"最小改动到最大改动"排序给出你的方案。
- 你的模型离线指标很好但线上效果很差,你会从哪些角度排查?请按优先级说。
- 梯度裁剪是解决什么问题的?按值裁剪和按范数裁剪有什么区别?裁剪阈值你会怎么定?
- 模型参数量、FLOPs、显存占用、推理延迟这四个指标之间是什么关系?为什么参数量小的模型有时反而更慢?
- 你要在 A100 上训练一个 1B 参数的语言模型。用 fp16 + GradScaler 的 AMP 方案时,loss 能降但曲线比纯 fp32 抖动明显,大约 2000 步时突然出现溢出、之后又恢复。同事说「直接换 bf16 就行了,bf16 比 fp16 精度高」。请回答三件事:(1) fp16 和 bf16 在指数位/尾数位上到底差在哪;(2) 为什么 bf16 通常不需要 loss scaling 而 fp16 需要;(3) 换成 bf16 后你预期抖动、溢出和最终收敛会怎么变,代价是什么。