code: def forward(self, input, step=0):
      x = self.emb_lookup(input)
      x = self.emb_quant(x)
      x = self.embed_scale * x
      x += self.embed_positions(input, step)
      if self.layernorm_embedding is not None:
          x = self.layernorm_embedding(x)
      x = self.dropout(x)
  
      return x
  
imports: import math
  import uuid
  from typing import Dict, Optional, List
  import torch
  from torch import Tensor, nn
  from torch.nn import Parameter, LayerNorm, Dropout
  from lightseq.training.ops.pytorch import util
  from lightseq.training.ops.pytorch.layer_base import TransformerEmbeddingLayerBase, TransformerEncoderLayerBase, TransformerDecoderLayerBase
  from .quantization import QuantLinear, TensorQuantizer, act_quant_config, weight_quant_config, out_quant_config, emb_quant_config
label_desc: Use image node_id 2 for calling the TransformerEmbeddingLayer obj's underlying member method code with example usage: obj.forward(input, step) and returns: x