ai-infra-interview-305

第 47 题:DDP的find_unused_parameters参数什么时候需要设置?性能影响?

题目

DDP的find_unused_parameters参数什么时候需要设置?性能影响?


完整讲解

一、为什么会有「未使用参数」?

有些模型在部分 forward 路径里不会用到所有参数(例如多任务头只走一个分支、或条件计算里某分支不用某层)。backward 时,没参与计算的参数梯度为 None;DDP 默认假设「所有参数都会参与 backward」,在同步梯度时若发现某参数没有梯度会报错,避免静默错误。


二、find_unused_parameters=True 做什么?

设为 True 时,DDP 会在每次 backward 前扫描当前计算图,找出没有梯度的参数,在 all-reduce 时跳过这些参数(不参与通信、不更新)。这样「部分参数未使用」的模型(如多任务、稀疏 MoE 的 expert)就能正常跑 DDP。


三、什么时候需要设?


四、性能影响


面试要点


记忆要点

  1. 未使用参数:本轮未参与计算,梯度 None;DDP 默认报错。
  2. True = 扫描图、跳过未使用参数的同步;有扫描开销。
  3. 仅多任务/条件/稀疏 MoE 等确实存在未用参数时开;能避免则保持 False。
返回模块 返回总览