code: def __init__(
      self,
      *,
      mmcv_runner_creator: Callable,
      backend: str = "ray",
      workers_per_node: int = 1,
      config: Optional[Dict] = None,
  ) -> None:
      if not (isinstance(mmcv_runner_creator, types.FunctionType)):
          invalidInputError(
              False, "Must provide a function for mmcv_runner_creator"
          )
  
      self.mmcv_runner_creator = mmcv_runner_creator
      self.backend = backend
      self.runner_cls = MMCVRayEpochRunner
      self.config = {} if config is None else config
      worker_config = copy.copy(self.config)
      params = dict(
          mmcv_runner_creator=self.mmcv_runner_creator,
          config=worker_config,
      )
      self.setup(
          params, self.backend, self.runner_cls, workers_per_node
      )
  
file_path: BigDL/python/orca/src/bigdl/orca/learn/pytorch/experimential/mmcv/mmcv_ray_estimator.py
imports: import types
  import copy
  import ray
  from bigdl.dllib.utils.log4Error import invalidInputError
  from bigdl.orca.learn.pytorch.core.base_ray_estimator import BaseRayEstimator
  from bigdl.orca.learn.pytorch.experimential.mmcv.mmcv_ray_runner import MMCVRayEpochRunner
  from bigdl.orca.learn.pytorch.utils import process_stats
  from typing import Dict, List, Optional, Tuple, Callable, Union
label_desc: Use image node_id 1 to create a new MMCVRayEstimator object from inherited base classes: BaseRayEstimator with example: obj = MMCVRayEstimator()