class_docstr: 执行 ``Jittor`` 框架下分布式训练的 ``Driver``。
  
  .. note::
  
      这是一个正在开发中的功能，敬请期待。
  
  .. todo:
  
      实现断点重训中替换 dataloader 的 set_dist_repro_dataloader 函数
class_docstr_tok: ["\u6267\u884c","``","Jittor","``","\u6846\u67b6\u4e0b\u5206\u5e03\u5f0f\u8bad\u7ec3\u7684","``","Driver","``","\u3002","..","note",":",":","\u8fd9\u662f\u4e00\u4e2a\u6b63\u5728\u5f00\u53d1\u4e2d\u7684\u529f\u80fd\uff0c\u656c\u8bf7\u671f\u5f85\u3002","..","todo",":","\u5b9e\u73b0\u65ad\u70b9\u91cd\u8bad\u4e2d\u66ff\u6362","dataloader","\u7684","set_dist_repro_dataloader","\u51fd\u6570"]
code: def __fork_with_mpi__(self):
      import sys
  
      if jt.in_mpi:
          # you can mult other process output
          if jt.rank != 0:
              sys.stdout = open("/dev/null", "w")
          return
      else:
          if self.parallel_device == -1:  # device 为 -1，那么默认使用全部的显卡
              raise NotImplementedError(
                  f"Device={self.parallel_device}"
              )
          elif (
              type(self.parallel_device) is int
          ):  # device 为 *int*: 将使用 ``device_id`` 为该值的 ``gpu`` 进行训练
              num_procs = 1
              devices = self.parallel_device
          elif (
              type(self.parallel_device) is list
          ):  # device 为 *list(int)*: 多于 1 个device，应当通过该种方式进行设定
              num_procs = len(self.parallel_device)
              devices = str(self.parallel_device)[1:-1]
          else:
              raise NotImplementedError(
                  f"Device={self.parallel_device}"
              )
          print(sys.argv)
          cmd = " ".join(
              [
                  "CUDA_VISIBLE_DEVICES='%s'" % devices,
                  "mpirun",
                  "-np",
                  str(num_procs),
                  sys.executable,
              ]
              + sys.argv
          )
          print("[RUN CMD]:", cmd)
          os.system(cmd)
          exit(0)
  
imports: import os
  from typing import Optional, Union, Callable, Dict, Tuple
  from .jittor_driver import JittorDriver
  from fastNLP.core.utils import auto_param_call
  from fastNLP.core.utils.utils import _get_fun_msg
  from fastNLP.envs.imports import _NEED_IMPORT_JITTOR
  from fastNLP.core.samplers import ReproducibleBatchSampler, ReproducibleSampler
  from fastNLP.core.log import logger
label_desc: Use image node_id 3 for calling the JittorMPIDriver obj's underlying member method code with example usage: obj.__fork_with_mpi__() without return types