拿下技术面上传简历

你的代码里写了 clip_grad_norm_(model.parameters(), max_norm=1.0),训练配置是 8 卡 DDP + AMP(fp16 + GradScaler)。现在有人问你这个调用应该放在哪个位置:loss.backward() 之后、scaler.step() 之前,还是之后?在 DDP 下你拿到的梯度是单卡的还是全卡同步后的?如果顺序放错,训练会表现出什么现象?请依次说清楚。

深度学习基础训练工程1-3 年知识点 1 个

面试官在考什么

考察是否理解梯度裁剪对执行顺序、unscale、DDP 梯度同步这三件事的依赖,而不是把 clip 当成一行无害的模板代码。

梯度裁剪

回答框架 · 前两步

  1. clip_grad_norm_ 必须放在 backward 之后、optimizer.step() 之前;在 AMP 下还必须在 scaler.unscale_() 之后,否则裁剪的是被放大后的梯度,等效阈值被放大 scale 倍。
  2. 它计算的是所有参数梯度张量拼起来后的全局 L2 范数,若大于 max_norm 就整体按比例缩放,方向不变、只改模长。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「深度学习基础」方向页

同一能力域的其他题