class_docstr: Updates the learning rate for optimizers according to the configured LrUpdaterHook.
  
  mmcv's LrUpdaterHook replaces lr schedulers to perform lr warmup and annealing.
  See: https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/lr_updater.py
  for supported lr updaters.
  
  We mock the behavior of the mmcv hook with our PyTorchCallback.  We do not have a
  `on_batch_start` callback so that is called manually in the `train_batch` method
  of `MMDetTrial`.
  
  The LrUpaterHook is configured from the mmdet configuration file passed to the
  experiment config.
class_docstr_tok: ["Updates","the","learning","rate","for","optimizers","according","to","the","configured","LrUpdaterHook",".","mmcv","'s","LrUpdaterHook","replaces","lr","schedulers","to","perform","lr","warmup","and","annealing",".","See",":","https",":","\/\/github.com\/open-mmlab\/mmcv\/blob\/master\/mmcv\/runner\/hooks\/lr_updater.py","for","supported","lr","updaters",".","We","mock","the","behavior","of","the","mmcv","hook","with","our","PyTorchCallback",".","We","do","not","have","a","`","on_batch_start","`","callback","so","that","is","called","manually","in","the","`","train_batch","`","method","of","`","MMDetTrial","`",".","The","LrUpaterHook","is","configured","from","the","mmdet","configuration","file","passed","to","the","experiment","config","."]
code: def on_training_epoch_start(self, epoch_idx: int) -> None:
      self.hook.before_train_epoch(self.runner)
  
imports: from typing import Any, Dict, Optional, cast
  import mmcv
  import mmcv.runner.hooks
  import determined.pytorch
label_desc: Use image node_id 3 for calling the LrUpdaterCallback obj's underlying member method code with example usage: obj.on_training_epoch_start(epoch_idx) without return types