fix: resume optimizer LR, step display, and consumed_samples alignment

This commit is contained in:
ViperEkura 2026-07-15 08:52:15 +08:00
parent 13998da15a
commit bb175fda91
3 changed files with 8 additions and 2 deletions

View File

@ -210,7 +210,7 @@ class ProgressBarCallback(TrainCallback):
@only_on_rank(0)
def on_optimizer_step(self, context: TrainContext):
postfix = {
"step": context.optimizer_step,
"step": f"{context.optimizer_step:d}",
"loss": f"{context.loss:.4f}",
"lr": f"{context.optimizer.param_groups[-1]['lr']:.2e}",
}

View File

@ -99,7 +99,12 @@ class TrainContextBuilder:
context.model_config = checkpoint.config
context.epoch = checkpoint.epoch or cfg.start_epoch
if checkpoint.consumed_samples > 0:
context.consumed_samples = checkpoint.consumed_samples
per_step = (
cfg.batch_per_device * context.world_size * cfg.grad_accum_steps
)
context.consumed_samples = (
checkpoint.consumed_samples // per_step
) * per_step
else:
context.consumed_samples = cfg.start_samples * context.world_size
context.checkpoint = checkpoint

View File

@ -90,6 +90,7 @@ class MuonMix(optim.Optimizer):
def load_state_dict(self, state_dict: Dict[str, Any]):
self.muon.load_state_dict(state_dict["muon"])
self.adamw.load_state_dict(state_dict["adamw"])
self.param_groups = [*self.muon.param_groups, *self.adamw.param_groups]
def parse_args() -> argparse.Namespace: