code: def backward(ctx, output_grad):
      mask, dest_idx = ctx.saved_tensors
      if output_grad.dtype != torch.float32:
          output_grad = output_grad.to(torch.float32)
      d_tokens = MOE_KERNEL.dispatch_backward(
          ctx.s, ctx.ec, ctx.h, output_grad, mask, dest_idx
      )
      if d_tokens.dtype != ctx.dtype:
          d_tokens = d_tokens.to(ctx.dtype)
      return d_tokens, None, None, None
  
imports: from typing import Any, Optional, Tuple
  import torch
  import torch.distributed
  from torch import Tensor
  from torch.cuda.amp import custom_bwd, custom_fwd
  from torch.distributed import ProcessGroup
label_desc: Use image node_id 2 for calling the MoeDispatch obj's underlying member method code with example usage: obj.backward(ctx, output_grad) and returns: d_tokens,  None,  None,  None