From 76d1430895316690f5fbda6f74e3b4fbb184fd22 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Wed, 24 Sep 2025 10:19:57 +0200 Subject: [PATCH] remove lr scaling --- src/lerobot/configs/train.py | 1 - src/lerobot/scripts/train.py | 14 +------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/src/lerobot/configs/train.py b/src/lerobot/configs/train.py index 5b3b0fdb8..f2d07cd7f 100644 --- a/src/lerobot/configs/train.py +++ b/src/lerobot/configs/train.py @@ -67,7 +67,6 @@ class TrainPipelineConfig(HubMixin): use_accelerate: bool = False gradient_accumulation_steps: int = 1 mixed_precision: str = "no" # Options: "no", "fp16", "bf16" - scale_lr_with_num_gpus: bool = True # Automatically scale learning rate with number of GPUs def __post_init__(self): self.checkpoint_path = None diff --git a/src/lerobot/scripts/train.py b/src/lerobot/scripts/train.py index 5a79e8a93..90e7807ba 100644 --- a/src/lerobot/scripts/train.py +++ b/src/lerobot/scripts/train.py @@ -248,17 +248,6 @@ def train(cfg: TrainPipelineConfig): logging.info("Creating optimizer and scheduler") optimizer, lr_scheduler = make_optimizer_and_scheduler(cfg, policy) - # Scale learning rate for multi-GPU training - if accelerator is not None and accelerator.num_processes > 1 and cfg.scale_lr_with_num_gpus: - # Scale learning rate linearly with number of GPUs - original_lr = optimizer.param_groups[0]["lr"] - for param_group in optimizer.param_groups: - param_group["lr"] *= accelerator.num_processes - if accelerator.is_main_process: - logging.info( - f"Scaled learning rate by {accelerator.num_processes}x for multi-GPU training: {original_lr:.2e} -> {optimizer.param_groups[0]['lr']:.2e}" - ) - grad_scaler = GradScaler(device.type, enabled=cfg.policy.use_amp) step = 0 # number of policy updates (forward + backward + optim) @@ -292,10 +281,9 @@ def train(cfg: TrainPipelineConfig): if accelerator is not None: logging.info(f"Per-GPU batch size: {cfg.batch_size}") logging.info(f"Effective batch size (total): {cfg.batch_size * accelerator.num_processes}") - logging.info(f"Learning rate (scaled): {optimizer.param_groups[0]['lr']:.2e}") else: logging.info(f"Batch size: {cfg.batch_size}") - logging.info(f"Learning rate: {optimizer.param_groups[0]['lr']:.2e}") + logging.info(f"Learning rate: {optimizer.param_groups[0]['lr']:.2e}") # create dataloader for offline training if hasattr(cfg.policy, "drop_n_last_frames"):