def METHOD_NAME(self, model_path, inputs=None, outputs=None):
    # debug prints
    # print(model_path, inputs, outputs)
    print(f"Loading model from {model_path}")
    world_size = int(os.environ["WORLD_SIZE"])
    # Set multiprocessing variables
    manager = mp.Manager()
    self.samples_q = [manager.Queue() for _ in range(world_size)]
    self.dataset_cache = manager.dict()
    self.predictions_cache = [manager.dict() for _ in range(world_size)]
    self.main_lock = manager.Event()
    # Create processes to load model
    ctx = mp.get_context("spawn")
    processes = []
    for rank in range(world_size):
        p = ctx.Process(
            target=self.distributed_setup,
            args=(
                rank, world_size, model_path,
            ),
        )
        p.start()
        processes.append(p)
    self.main_lock.wait()
    return self