60 秒回答模板

我会先定位瓶颈:是数据读取慢、GPU 利用率低、模型计算重、显存不足、通信开销大,还是实验流程低效。然后按层优化:数据侧做缓存、预处理和并行加载;模型侧用混合精度、梯度累积、checkpoint、蒸馏或更小结构;系统侧用分布式训练、ZeRO、流水并行、FlashAttention 和高效 kernel;实验侧用早停、超参搜索策略和样本筛选。

考点 先 profiling
难度 算法岗真实面经题
回答目标 讲清方法、取舍和追问

深入解析

01

先定位瓶颈

训练加速首先要用 profiler 看清时间花在哪里。常见瓶颈包括数据加载跟不上、CPU 预处理过慢、GPU 利用率低、显存限制 batch size、前后向计算太重、分布式通信等待时间长。不同瓶颈对应完全不同的优化手段。

02

数据管线优化

数据侧可以做离线预处理、样本缓存、压缩格式优化、并行 DataLoader、prefetch、减少小文件读取和更合理的 shuffle。很多训练慢不是模型慢,而是 GPU 在等数据,因此数据吞吐和训练吞吐要一起观察。

03

计算与显存优化

模型侧常用混合精度训练、梯度累积、梯度检查点、算子融合、FlashAttention、减少序列长度或裁剪无效 token。显存省下来可以提升 batch size 或启用更大的模型,但要注意数值稳定和收敛变化。

04

分布式训练

当单卡不够时,可以使用数据并行、张量并行、流水并行或 ZeRO 类优化。分布式不一定线性加速,因为通信、同步和负载不均会带来开销。需要关注吞吐、扩展效率、网络带宽和 checkpoint 成本。

05

实验流程加速

工程上还可以通过更好的实验策略减少无效训练,例如早停、学习率搜索策略、小样本预筛、warm start、增量训练和自动化实验管理。最终要用相同验证集确认加速没有牺牲效果或引入不可复现问题。

易错点

  • 没有先定位瓶颈,直接罗列混合精度、多卡训练等手段。
  • 只关注训练速度,不验证模型效果是否下降。
  • 忽略数据读取和预处理瓶颈,导致 GPU 长时间等待。
  • 认为分布式训练一定线性加速,忽略通信成本。

面试官追问

混合精度为什么能加速?

低精度计算能利用硬件张量核心,提高吞吐并减少显存占用。但需要 loss scaling 和数值稳定检查,避免梯度下溢或训练发散。

梯度检查点的代价是什么?

它通过不保存部分中间激活来省显存,但反向传播时需要重新计算这些激活,因此会增加计算时间,适合显存是主要瓶颈的场景。

为什么多卡训练可能不加速?

通信同步、参数广播、梯度聚合、数据倾斜和 I/O 瓶颈都可能抵消多卡收益,需要看扩展效率而不是只看 GPU 数量。