code: def get_scheduler(self, optimizer, total_update_steps):
      # Only warm up plm lr
      warmup_steps = int(
          total_update_steps * self.config["warmup_ratio"]
      )
  
      lr_lambda_plm = util.get_scheduler_lambda(
          self.config["plm_scheduler"], warmup_steps, total_update_steps
      )
      lr_lambda_task = util.get_scheduler_lambda(
          self.config["task_scheduler"], 0, total_update_steps
      )
  
      scheduler = LambdaLR(
          optimizer,
          [
              lr_lambda_plm,  # parameters with decay
              lr_lambda_plm,  # parameters without decay
              lr_lambda_task,
          ],
      )
      return scheduler
  
imports: import sys
  import os
  import logging
  import random
  import numpy
  import torch
  from torch import nn
  from torch.optim import AdamW
  from util.multigpu_fused_adam import FusedAdam
  from torch.optim.lr_scheduler import LambdaLR
  from torch.utils.data import DataLoader
  import time
  from os.path import join
  from datetime import datetime
  import util
  from util.tensorize_coref import CorefDataProcessor, coref_collate_fn
  from util.tensorize_ner import NERDataProcessor, ner_collate_fn
  from util.tensorize_ere import EREDataProcessor, ere_collate_fn
  from metrics import CorefEvaluator, MentionEvaluator
  from models.model_coref import CorefModel
  from models.model_ner import NERModel
  from models.model_ere import EREModel
  import wandb
label_desc: Use image node_id 6 for calling the Runner obj's underlying member method code with example usage: obj.get_scheduler(optimizer, total_update_steps) and returns: scheduler