code: def backward(ctx, grad_output):
      cuda_module = transformer_cuda_module
      backward_func = (
          cuda_module.transformer_embedding_layer_bw_fp16
          if ctx.config.fp16
          else cuda_module.transformer_embedding_layer_bw_fp32
      )
      assert ctx.config.training
  
      (input,) = ctx.saved_tensors
  
      if ctx.config.fp16:
          grad_output = grad_output.to(torch.half)
  
      backward_func(ctx.config.layer_id, grad_output, input)
  
      grad = _all_layer_grads[ctx.config.layer_id]
  
      return (None, None, grad, None)
  
imports: import copy
  import torch
  from torch import nn
  from torch.autograd import Function
  from lightseq.training.ops.pytorch import TransformerBuilder
  from lightseq.training.ops.pytorch.layer_base import TransformerEmbeddingLayerBase
  from lightseq.training.ops.pytorch.util import copy_para, state_dict, calc_offset, get_pos_embedding
label_desc: Use image node_id 2 for calling the LSTransformerEmbeddingFunc obj's underlying member method code with example usage: obj.backward(ctx, grad_output) and returns: None,  None,  grad,  None