class_docstr: The ``LearningRateFinder`` callback enables the user to do a range test of good initial learning rates, to
  reduce the amount of guesswork in picking a good starting learning rate.
  
  .. warning::  This is an :ref:`experimental <versioning:Experimental API>` feature.
  
  Args:
      min_lr: Minimum learning rate to investigate
      max_lr: Maximum learning rate to investigate
      num_training_steps: Number of learning rates to test
      mode: Search strategy to update learning rate after each batch:
  
          - ``'exponential'`` (default): Increases the learning rate exponentially.
          - ``'linear'``: Increases the learning rate linearly.
  
      early_stop_threshold: Threshold for stopping the search. If the
          loss at any point is larger than early_stop_threshold*best_loss
          then the search is stopped. To disable, set to None.
      update_attr: Whether to update the learning rate attribute or not.
      attr_name: Name of the attribute which stores the learning rate. The names 'learning_rate' or 'lr' get
          automatically detected. Otherwise, set the name here.
  
  Example::
  
      # Customize LearningRateFinder callback to run at different epochs.
      # This feature is useful while fine-tuning models.
      from lightning.pytorch.callbacks import LearningRateFinder
  
  
      class FineTuneLearningRateFinder(LearningRateFinder):
          def __init__(self, milestones, *args, **kwargs):
              super().__init__(*args, **kwargs)
              self.milestones = milestones
  
          def on_fit_start(self, *args, **kwargs):
              return
  
          def on_train_epoch_start(self, trainer, pl_module):
              if trainer.current_epoch in self.milestones or trainer.current_epoch == 0:
                  self.lr_find(trainer, pl_module)
  
  
      trainer = Trainer(callbacks=[FineTuneLearningRateFinder(milestones=(5, 10))])
      trainer.fit(...)
  
  Raises:
      MisconfigurationException:
          If learning rate/lr in ``model`` or ``model.hparams`` isn't overridden, or if you are using more than
          one optimizer.
code: def on_fit_start(
      self, trainer: "pl.Trainer", pl_module: "pl.LightningModule"
  ) -> None:
      self.lr_find(trainer, pl_module)
  
file_path: pytorch-lightning/src/lightning/pytorch/callbacks/lr_finder.py
imports: from typing import Optional
  from typing_extensions import override
  import lightning.pytorch
  from lightning.pytorch.callbacks.callback import Callback
  from lightning.pytorch.tuner.lr_finder import _lr_find, _LRFinder
  from lightning.pytorch.utilities.exceptions import _TunerExitException
  from lightning.pytorch.utilities.seed import isolate_rng
label_desc: Use image node_id 3 for calling the LearningRateFinder obj's underlying member method code with example usage: obj.on_fit_start(trainer, pl_module) without return types