第 289 题:实现分布式训练的参数同步,BSP与ASP的收敛性。
题目
实现分布式训练的参数同步,BSP与ASP的收敛性。
完整讲解
一、分布式训练与参数同步
- 多机多卡时,每 worker 有局部参数与梯度;参数同步即把各 worker 的梯度或参数聚合成全局一致,再进入下一轮。BSP(Bulk Synchronous Parallel) 与 ASP(Asynchronous Parallel) 是两种典型范式,收敛性不同。
二、BSP(同步并行)
- 做法:每步所有 worker 算完梯度后同步(AllReduce 或 PS 聚合),得到全局梯度再更新参数;下一步所有 worker 用同一份参数。同步点保证每步更新基于同一轮数据/参数的梯度。
- 收敛性:与单机 SGD 等价(在聚合为平均梯度、相同学习率下),收敛性有理论保证;通信与等待慢的 worker 会拖慢整体(木桶效应)。
- 实现:AllReduce(Ring、Tree)、或 Parameter Server 的同步模式(pull 最新参数、push 梯度、server 聚合后 broadcast)。
三、ASP(异步并行)
- 做法:Worker 算完梯度即异步 push 到 server 或 peer,不等待其他 worker;可 pull 当前(可能已被他机更新过的)参数继续算下一轮。无全局同步点。
- 收敛性:存在延迟与陈旧梯度(stale gradient),等价于带噪声的 SGD;学习率需调小或做延迟补偿,收敛性分析更复杂,可能震荡或收敛慢。实践中需调参与监控。
- 实现:PS 异步模式、或异步 AllReduce 变体;需处理冲突(如用 delay 补偿、或梯度累积与合并策略)。
四、对比与选用
- BSP:收敛稳定、实现与调参简单,适合通信不极端差的集群;ASP:吞吐高、延迟敏感时可考虑,但需谨慎调参与验证收敛。推荐训练常用 BSP(如 Horovod、PyTorch DDP);超大模型或通信瓶颈时可探索 ASP 或混合。
面试要点
- 能说清 BSP 与 ASP 的同步方式(每步全同步 vs 异步 push/pull)及对收敛的影响。
- 能说明 BSP 收敛与单机等价、ASP 的陈旧梯度与延迟补偿;能简述 AllReduce 与 PS 在两种模式下的角色。
记忆要点
- BSP:每步全同步梯度再更新,收敛与单机等价;ASP:异步更新,存在陈旧梯度,需调学习率与补偿。
- 推荐常用 BSP;ASP 吞吐高但收敛需验证。