# Re-tie weights — ``to_empty`` gives every nn.Parameter fresh
# storage so ``__init__``-time ties are broken. Must happen before
# ``lazy_init`` re-wraps params as DTensor (non-leaf), which would
# cause ``register_parameter`` to reject the assignment.
if hasattr(self.model, "tie_weights"):
self.model.tie_weights()
# ``to_empty`` strips DTensor; ``lazy_init`` re-wraps shards before
# ``_load_weights`` / optimizer step see the params (the forward
# pre-hook does the same later, but the loader needs DTensor first).
reset_count = self._lazy_init_hsdp_modules()