ai-infra-interview-305

第 52 题:梯度累积(gradient accumulation)在DDP中的正确实现方式?

题目

梯度累积(gradient accumulation)在DDP中的正确实现方式?


完整讲解

一、梯度累积的目的

想用 大 effective batch size,但单次 forward/backward 显存放不下那么大 batch,就分多步算:每步小 batch forward+backward,不立刻 step,梯度累加.grad 里;累加够 K 步后再 optimizer.step()zero_grad()。Effective batch = 单步 batch × K。


二、DDP 下的正确方式


三、小结


面试要点


记忆要点

  1. 前 K-1 步 no_sync(),最后一步正常 backward 做 all-reduce。
  2. 中间不 zero_grad;step 后 zero_grad;梯度除 K 或 loss 除 K 二选一。
  3. 正确 + 高效 = no_sync 减通信。
返回模块 返回总览