class_docstr: Decays the learning rate of each parameter group by gamma once the
  number of epoch reaches one of the milestones. Notice that such decay can
  happen simultaneously with other changes to the learning rate from outside
  this scheduler. When last_epoch=-1, sets initial lr as lr.
  
  Args:
      optimizer (:class:`torch.optim.Optimizer`): Wrapped optimizer.
      total_steps (int): Number of total training steps.
      milestones (List[int], optional): List of epoch indices. Must be increasing, defaults to None.
      gamma (float, optional): Multiplicative factor of learning rate decay, defaults to 0.1.
      last_epoch (int, optional): The index of last epoch, defaults to -1. When last_epoch=-1,
          the schedule is started from the beginning or When last_epoch=-1, sets initial lr as lr.
code: def __init__(
      self,
      optimizer,
      total_steps: int,
      milestones: List[int] = None,
      gamma: float = 0.1,
      last_epoch: int = -1,
      **kwargs,
  ):
      super().__init__(
          optimizer, milestones, gamma=gamma, last_epoch=last_epoch
      )
  
file_path: ColossalAI/colossalai/nn/lr_scheduler/multistep.py
imports: from typing import List
  from torch.optim.lr_scheduler import MultiStepLR
  from .delayed import WarmupScheduler
label_desc: Use image node_id 1 to create a new MultiStepLR object from inherited base classes: _MultiStepLR with example: obj = MultiStepLR(optimizer, total_steps, milestones, gamma, last_epoch)