docstr: Gets called at the beginning of ``fit()``, on multiple processes
  if ``distributed_count > 0`` and backend is ddp.
  
  Default implementation compiles the jit modules, initializes
  optimizers, and loads the latest checkpoint to resume training.
docstr_tok: ["Gets","called","at","the","beginning","of","``","fit","(",")","``",",","on","multiple","processes","if","``","distributed_count",">","0","``","and","backend","is","ddp",".","Default","implementation","compiles","the","jit","modules",",","initializes","optimizers",",","and","loads","the","latest","checkpoint","to","resume","training","."]
code: def on_fit_start(self):
      """Gets called at the beginning of ``fit()``, on multiple processes
      if ``distributed_count > 0`` and backend is ddp.
  
      Default implementation compiles the jit modules, initializes
      optimizers, and loads the latest checkpoint to resume training.
      """
      # Run this *after* starting all processes since jit modules cannot be
      # pickled.
      self._compile()
  
      # Wrap modules with parallel backend after jit
      self._wrap_distributed()
  
      if self.checkpointer is not None:
          self.checkpointer.recover_if_possible()
  
      # Initialize optimizers after parameters are configured
      self.init_optimizers()
  
      current_epoch = self.hparams.epoch_counter.current
      if current_epoch > self.hparams.stage_one_epochs:
          logger.info(
              f"The checkpoint's epoch(= {current_epoch}) is greater than stage_one_epochs(= {self.hparams.stage_one_epochs}). Using the fine-tuning optimizer instead of the training one."
          )
          self.optimizer = self.hparams.SGD(self.modules.parameters())
  
          if self.checkpointer is not None:
              self.checkpointer.add_recoverable(
                  "optimizer", self.optimizer
              )
  
      # Load latest checkpoint to resume training if interrupted
      if self.checkpointer is not None:
          self.checkpointer.recover_if_possible()
  
file_path: speechbrain/recipes/CommonVoice/ASR/transformer/train.py
imports: import sys
  import torch
  import torchaudio
  import logging
  import speechbrain
  from hyperpyyaml import load_hyperpyyaml
  from speechbrain.tokenizers.SentencePiece import SentencePiece
  from speechbrain.utils.distributed import run_on_main, if_main_process
  from speechbrain.utils.data_utils import undo_padding
label_desc: Use image node_id 8 for calling the ASR obj's underlying member method code with example usage: obj.on_fit_start() without return types