class_docstr: Args:
      inputs (:class:`torch.tensor`): input tensor.
      tesseract_dim (int): dimension of TESSERACT fo 2.5D parallelism
      col_parallel_mode (:class:`colossalai.legacy.context.ParallelMode`): column parallel mode.
  
  Note:
      The parallel_mode should be concluded in ``ParallelMode``. More details about ``ParallelMode`` could be found
      in `parallel_mode <https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/context/parallel_mode.py>`_.
class_docstr_tok: ["Args",":","inputs","(",":","class",":","`","torch.tensor","`",")",":","input","tensor",".","tesseract_dim","(","int",")",":","dimension","of","TESSERACT","fo","2.5D","parallelism","col_parallel_mode","(",":","class",":","`","colossalai.legacy.context.ParallelMode","`",")",":","column","parallel","mode",".","Note",":","The","parallel_mode","should","be","concluded","in","``","ParallelMode","``",".","More","details","about","``","ParallelMode","``","could","be","found","in","`","parallel_mode","<","https",":","\/\/github.com\/hpcaitech\/ColossalAI\/blob\/main\/colossalai\/context\/parallel_mode.py",">","`","_","."]
code: def backward(ctx: Any, output_grad: Tensor) -> Tuple[Tensor, ...]:
      grad_shape = (ctx.batch_size,) + output_grad.shape[1:]
      grad = torch.empty(
          grad_shape,
          dtype=output_grad.dtype,
          device=get_current_device(),
      )
      dist.all_gather(
          list(grad.chunk(ctx.tesseract_dim, dim=0)),
          output_grad.contiguous(),
          group=gpc.get_group(ctx.para_mode),
      )
      return grad, None, None
  
imports: from typing import Any, Tuple
  import torch
  import torch.distributed
  from torch import Tensor
  from torch.cuda.amp import custom_bwd, custom_fwd
  from colossalai.legacy.communication.collective import all_gather, all_reduce, reduce_scatter
  from colossalai.legacy.context.parallel_mode import ParallelMode
  from colossalai.legacy.core import global_context
  from colossalai.utils import get_current_device
label_desc: Use image node_id 2 for calling the SplitFirst obj's underlying member method code with example usage: obj.backward(ctx, output_grad) and returns: grad,  None,  None