class_docstr: A callback which logs learning rate of tracked optimizers and learning rate schedulers.
  Logs learning rate for each parameter group associated with an optimizer.
  
  Args:
      loggers: Either a :class:`torchtnt.loggers.logger.MetricLogger` or
          list of :class:`torchtnt.loggers.logger.MetricLogger`
class_docstr_tok: ["A","callback","which","logs","learning","rate","of","tracked","optimizers","and","learning","rate","schedulers",".","Logs","learning","rate","for","each","parameter","group","associated","with","an","optimizer",".","Args",":","loggers",":","Either","a",":","class",":","`","torchtnt.loggers.logger.MetricLogger","`","or","list","of",":","class",":","`","torchtnt.loggers.logger.MetricLogger","`"]
code: def on_train_step_start(self, state: State, unit: TTrainUnit) -> None:
      if not self._loggers:
          return
  
      if self.logging_interval != "step":
          return
  
      lr_stats = self._extract_lr(unit)
  
      step = unit.train_progress.num_steps_completed
      _write_stats(self._loggers, lr_stats, step)
  
file_path: tnt/torchtnt/framework/callbacks/learning_rate_monitor.py
imports: from typing import Dict, List, Union
  from torchtnt.framework.callback import Callback
  from torchtnt.framework.state import State
  from torchtnt.framework.unit import TTrainUnit
  from torchtnt.utils.loggers.logger import MetricLogger
  from torchtnt.utils.optimizer import extract_lr_from_optimizer
label_desc: Use image node_id 3 for calling the LearningRateMonitor obj's underlying member method code with example usage: obj.on_train_step_start(state, unit) without return types