code: def on_evaluate_start(self, max_key=None, min_key=None):
      self.checkpointer.recover_if_possible(
          max_key=max_key, min_key=min_key
      )
      checkpoints = self.checkpointer.find_checkpoints(
          max_key=max_key,
          min_key=min_key,
          max_num_checkpoints=self.hparams.checkpoint_avg,
      )
      logger.info(f"Averaging {len(checkpoints)} Checkpoints...")
      for model in self.modules:
          if (
              model not in self.hparams.frozen_models
              or hasattr(self.hparams, "unfrozen_models")
              and model in self.hparams.unfrozen_models
          ):
              model_state_dict = (
                  sb.utils.checkpoints.average_checkpoints(
                      checkpoints, model
                  )
              )
              self.modules[model].load_state_dict(model_state_dict)
  
imports: import os
  import sys
  import torch
  import torchaudio
  import logging
  import speechbrain
  from pesq import pesq
  from pystoi import stoi
  from composite_eval import eval_composite
  from hyperpyyaml import load_hyperpyyaml
  from speechbrain.utils.data_utils import undo_padding
  from speechbrain.utils.distributed import run_on_main, if_main_process
label_desc: Use image node_id 8 for calling the MTLbrain obj's underlying member method code with example usage: obj.on_evaluate_start(max_key, min_key) without return types