Diff Coverage

Diff: origin/master...HEAD, staged and unstaged changes

Source File Diff Coverage (%) Missing Lines
hyper_parallel/components/optim/mixed_precision_optimizer.py 0.0% 167,174
hyper_parallel/trainer/base.py 33.3% 300,675
hyper_parallel/components/optim/mixed_precision_optimizer.py
163
164
165
166
167
168
169
170
171
            for model_param, main_param in zip(model_group, main_group):
                model_gradient = model_param.main_grad
                if model_gradient is None:
                    model_gradient = model_param.grad
                main_param.grad = model_gradient
                model_param.grad = None

        for fp32_group in self.fp32_from_fp32_groups:
            for model_param in fp32_group:
170
171
172
173
174
175
176
177
178
        for fp32_group in self.fp32_from_fp32_groups:
            for model_param in fp32_group:
                model_gradient = model_param.main_grad
                if model_gradient is not None:
                    model_param.grad = model_gradient

    @torch.no_grad()
    def _copy_main_params_to_model_params(self) -> None:
        """Copy updated fp32 main params to fp16/bf16 model params."""
hyper_parallel/trainer/base.py
296
297
298
299
300
301
302
303
304
            # The final dtype is applied inside the atomic build (05 stage-5
            # item 5); the Trainer no longer patches it afterwards.
            model_init_dtype=self.config.model_init_dtype,
        )
        _validate_optimize_dtype(
            self.model,
            fp32_main_params=self.config.optimizer.fp32_main_params,
        )
        self.model_config = self.model.config
671
672
673
674
675
676
677
678
679
        """Step optimizers and schedulers after gradient accumulation."""
        optimizers = self.optimizer if isinstance(self.optimizer, list) else [self.optimizer]
        for optimizer in optimizers:
            # Keep zeros_like dispatched so lazily created optimizer states retain DTensor metadata.
            with SkipDTensorDispatch(no_skip={torch.zeros_like}):
                optimizer.step()
            optimizer.zero_grad()

        schedulers = (