code: def _poly_decay_lr_lambda(
      current_step: int,
      num_warmup_steps: int,
      num_training_steps: int,
      lr_init: float,
      lr_end: float,
      power: float,
  ):
      if current_step < num_warmup_steps:
          return float(current_step) / float(max(1, num_warmup_steps))
      elif current_step > num_training_steps:
          return lr_end / lr_init  # as LambdaLR multiplies by lr_init
      else:
          lr_range = lr_init - lr_end
          decay_steps = num_training_steps - num_warmup_steps
          pct_remaining = (
              1 - (current_step - num_warmup_steps) / decay_steps
          )
          decay = lr_range * pct_remaining**power + lr_end
          return decay / lr_init
  
file_path: autogluon/multimodal/src/autogluon/multimodal/optimization/lr_scheduler.py
imports: import functools
  import math
  from torch.optim.lr_scheduler import LambdaLR
label_desc: Use image node_id 3 for calling a global function with example usage: _poly_decay_lr_lambda(current_step, num_warmup_steps, num_training_steps, lr_init, lr_end, power) and returns: unknown, unknown, unknown