class_docstr: Gather output samples from contiguous alone experts back to [batch x
  sequences]. Works symmetrically with MOEScatter.
code: def backward(ctx, grad_out):
      (
          pos,
          local_expert_count,
          global_expert_count,
          stored_models,
      ) = ctx.saved_tensors
      fwd_batch_size, world_size = ctx.moe_args
      grad_out_buf = _local_scatter(grad_out.contiguous(), pos)
      if world_size > 1:
          global_grad_out_buf = fmoe_cuda.global_scatter(
              grad_out_buf,
              local_expert_count,
              global_expert_count,
              stored_models,
              fwd_batch_size,
              world_size,
          )
      else:
          global_grad_out_buf = grad_out_buf
      return (
          global_grad_out_buf,
          None,
          None,
          None,
          None,
          None,
          None,
          None,
      )
  
imports: import torch
  from torch.autograd import Function
  import fmoe_cuda
  from .utils import get_torch_default_comm
  from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors
  from copy import deepcopy
label_desc: Use image node_id 2 for calling the MOEGather obj's underlying member method code with example usage: obj.backward(ctx, grad_out) and returns: global_grad_out_buf,  None,  None,  None,  None,  None,  None,  None