class_docstr: Scatter input samples from [batch x sequences] to contiguous alone experts.
  If `world_size` is greater than 1, the samples will first be locally
  scattered, and then exchanged across workers.
code: def backward(ctx, global_grad_in):
      (
          pos,
          local_expert_count,
          global_expert_count,
          stored_models,
      ) = ctx.saved_tensors
      (inp_batch_size, buf_batch_size, world_size) = ctx.moe_args
  
      if world_size > 1:
          local_grad_in = fmoe_cuda.global_gather(
              global_grad_in,
              local_expert_count,
              global_expert_count,
              stored_models,
              buf_batch_size,
              world_size,
          )
      else:
          local_grad_in = global_grad_in
      grad_in = _local_gather(local_grad_in, pos, inp_batch_size)
      return grad_in, 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 MOEScatter obj's underlying member method code with example usage: obj.backward(ctx, global_grad_in) and returns: grad_in,  None,  None,  None,  None,  None,  None,  None