class_docstr: 该函数用于 DDP 训练时处理用户自己定制的 train_step 等函数；
  之所以要使用这一额外的包裹模型，是因为在使用 DDP 时，必须使用 DistributedDataParallel 的 forward 函数才能实现正常的运行；
  另一方面，我们要求用户在使用我们的框架时，需要针对不用的模式实现不同的处理函数，例如 'train_step', 'evaluate_step' 等；
  然而，当使用 DistributedDataParallel 包裹 model 后，模型看不见其除了 forward 之外的方法；并且当我们尝试在训练过程中主动提取
  `model = model.module`，这同样会导致错误，会使得每一个gpu上的模型参数不同；
  
  因此出于以上考虑，我们实现了这一函数；
  对于更详细的解释，可以参考 'pytorch_lightning' 的 ddp 的设计；
docstr: pytorch lightning 实现了先 unwrapping_model 的操作，但是感觉对于我们来说没有什么必须要，先写个注释放这里，之后有需求了再看；
docstr_tok: ["pytorch","lightning","\u5b9e\u73b0\u4e86\u5148","unwrapping_model","\u7684\u64cd\u4f5c\uff0c\u4f46\u662f\u611f\u89c9\u5bf9\u4e8e\u6211\u4eec\u6765\u8bf4\u6ca1\u6709\u4ec0\u4e48\u5fc5\u987b\u8981\uff0c\u5148\u5199\u4e2a\u6ce8\u91ca\u653e\u8fd9\u91cc\uff0c\u4e4b\u540e\u6709\u9700\u6c42\u4e86\u518d\u770b\uff1b"]
code: def forward(self, batch, **kwargs) -> Dict:
      """
      pytorch lightning 实现了先 unwrapping_model 的操作，但是感觉对于我们来说没有什么必须要，先写个注释放这里，之后有需求了再看；
      """
      fn = kwargs.pop("fastnlp_fn")
      signature_fn = kwargs.pop("fastnlp_signature_fn")
      wo_auto_param_call = kwargs.pop("wo_auto_param_call")
  
      if isinstance(batch, Dict) and not wo_auto_param_call:
          return auto_param_call(fn, batch, signature_fn=signature_fn)
      else:
          return fn(batch)
  
imports: import os
  from typing import Any, Dict, Optional, Union
  from enum import IntEnum
  import contextlib
  import random
  import numpy
  import inspect
  from fastNLP.envs.imports import _NEED_IMPORT_TORCH
  from fastNLP.envs.utils import get_global_seed
  from fastNLP.envs import get_global_rank, FASTNLP_BACKEND_LAUNCH, FASTNLP_GLOBAL_SEED
  from fastNLP.core.samplers import re_instantiate_sampler, ReproducibleBatchSampler, ReproducibleSampler
  from fastNLP.core.utils import auto_param_call, apply_to_collection
  from fastNLP.core.log import logger
label_desc: Use image node_id 2 for calling the _DDPWrappingModel obj's underlying member method code with example usage: obj.forward(batch) and returns: auto_param_call, fn