sharded = getattr(self._joint_graph.graph_module, "fsdp_sharded_param_names", frozenset())
layouts = {}
for name, parameter in parameters.items():
if not parameter.requires_grad:
continue
mesh = self._parameter_meshes.get(name)
if mesh is None:
mesh = self._expert_fsdp_mesh if name in self._expert_param_names else self._fsdp_mesh
if mesh is None:
raise ValueError("Parameter layouts require an initialized FSDP mesh or parameter binding")
layouts[parameter] = self._build_parameter_layout(
parameter, mesh, self.source_layout_for_parameter(name), sharded=name in sharded,
unsharded_shape=self._parameter_shapes.get(name, tuple(parameter.shape)),
)