code: def update_lr(self, optimizer, epoch: int, curr_iter: int):
      lr = self.get_lr(epoch=epoch, curr_iter=curr_iter)
      lr = max(0.0, lr)
      if self.lr_multipliers is not None:
          assert len(self.lr_multipliers) == len(optimizer.param_groups)
          for g_id, param_group in enumerate(optimizer.param_groups):
              param_group["lr"] = round(
                  lr * self.lr_multipliers[g_id], self.round_places
              )
      else:
          for param_group in optimizer.param_groups:
              param_group["lr"] = round(lr, self.round_places)
      return optimizer
  
file_path: ml-cvnets/optim/scheduler/base_scheduler.py
imports: import argparse
  from utils import logger
label_desc: Use image node_id 4 for calling the BaseLRScheduler obj's underlying member method code with example usage: obj.update_lr(optimizer, epoch, curr_iter) and returns: optimizer