code: def add_tuning_arguments(parser):
      group = parser.add_argument_group(
          "Convergence Tuning", "Convergence tuning configurations"
      )
  
      # LR scheduler
      group.add_argument(
          "--lr_schedule",
          type=str,
          default=None,
          help="LR schedule for training.",
      )
  
      # Learning rate range test
      group.add_argument(
          "--lr_range_test_min_lr",
          type=float,
          default=0.001,
          help="Starting lr value.",
      )
      group.add_argument(
          "--lr_range_test_step_rate",
          type=float,
          default=1.0,
          help="scaling rate for LR range test.",
      )
      group.add_argument(
          "--lr_range_test_step_size",
          type=int,
          default=1000,
          help="training steps per LR change.",
      )
      group.add_argument(
          "--lr_range_test_staircase",
          type=bool,
          default=False,
          help="use staircase scaling for LR range test.",
      )
  
      # OneCycle schedule
      group.add_argument(
          "--cycle_first_step_size",
          type=int,
          default=1000,
          help="size of first step of 1Cycle schedule (training steps).",
      )
      group.add_argument(
          "--cycle_first_stair_count",
          type=int,
          default=-1,
          help="first stair count for 1Cycle schedule.",
      )
      group.add_argument(
          "--cycle_second_step_size",
          type=int,
          default=-1,
          help="size of second step of 1Cycle schedule (default first_step_size).",
      )
      group.add_argument(
          "--cycle_second_stair_count",
          type=int,
          default=-1,
          help="second stair count for 1Cycle schedule.",
      )
      group.add_argument(
          "--decay_step_size",
          type=int,
          default=1000,
          help="size of intervals for applying post cycle decay (training steps).",
      )
  
      # 1Cycle LR
      group.add_argument(
          "--cycle_min_lr",
          type=float,
          default=0.01,
          help="1Cycle LR lower bound.",
      )
      group.add_argument(
          "--cycle_max_lr",
          type=float,
          default=0.1,
          help="1Cycle LR upper bound.",
      )
      group.add_argument(
          "--decay_lr_rate",
          type=float,
          default=0.0,
          help="post cycle LR decay rate.",
      )
  
      # 1Cycle Momentum
      group.add_argument(
          "--cycle_momentum",
          default=False,
          action="store_true",
          help="Enable 1Cycle momentum schedule.",
      )
      group.add_argument(
          "--cycle_min_mom",
          type=float,
          default=0.8,
          help="1Cycle momentum lower bound.",
      )
      group.add_argument(
          "--cycle_max_mom",
          type=float,
          default=0.9,
          help="1Cycle momentum upper bound.",
      )
      group.add_argument(
          "--decay_mom_rate",
          type=float,
          default=0.0,
          help="post cycle momentum decay rate.",
      )
  
      # Warmup LR
      group.add_argument(
          "--warmup_min_lr",
          type=float,
          default=0,
          help="WarmupLR minimum/initial LR value",
      )
      group.add_argument(
          "--warmup_max_lr",
          type=float,
          default=0.001,
          help="WarmupLR maximum LR value.",
      )
      group.add_argument(
          "--warmup_num_steps",
          type=int,
          default=1000,
          help="WarmupLR step count for LR warmup.",
      )
      group.add_argument(
          "--warmup_type",
          type=str,
          default=WARMUP_LOG_RATE,
          help="WarmupLR increasing function during warmup",
      )
      return parser
  
imports: import argparse
  from torch.optim import Optimizer
  import math
  from deepspeed.utils import logger
label_desc: Use image node_id 1 for calling a global function with example usage: add_tuning_arguments(parser) and returns: parser