ai-infra-interview-305

第 54 题:DDP的SyncBatchNorm原理?什么时候必须用?

题目

DDP的SyncBatchNorm原理?什么时候必须用?


完整讲解

一、普通 BatchNorm 在 DDP 下有什么问题?

BatchNorm当前 batch 的均值和方差做归一化。DDP 时每卡只有本地 batch(如 batch_size=32,每卡 32 个样本),BN 的 mean/var 只基于这 32 个样本;卡间统计量不一致,等价于「每卡在用自己的小 batch 做 BN」,和单卡大 batch(如 32×8=256)的 BN 统计量不同,可能影响精度和稳定性。


二、SyncBatchNorm 在做什么?

SyncBatchNorm 在算 mean/var 时跨卡同步:先在各卡上算本地 mean/var 和 count,再 all-reduce(或 all-gather 后合并)得到全局 mean/var,用全局统计量做归一化;反向时对「全局统计量」的梯度再做一次同步。这样 BN 的统计量与「单卡大 batch」一致,等价于用 global batch 做 BN。


三、什么时候必须用?


四、实现要点


面试要点


记忆要点

  1. DDP 下 BN 用本地 batch → 卡间统计量不同;SyncBN 用全局 mean/var。
  2. SyncBN = forward/backward 里 all-reduce 统计量(及梯度)。
  3. 小 local batch 用 SyncBN;大 local batch 可不用。
返回模块 返回总览