code: def forward(self, input: torch.Tensor) -> torch.Tensor:
      # default all out of bounds values to `self.null_idx` that will then be mapped to 0
      # translate for [0, self.max_id - self.min_id[
      input = torch.where(
          (self.min_id > input) | (input >= self.max_id),
          self.null_idx,
          input - self.min_id,
      )
      out = torch.nn.functional.embedding(input, self.weight)
      if self.reduce and self.process_group.size() > 1:
          torch.distributed.all_reduce(out, group=self.process_group)
      return out
  
imports: import os
  import torch
  import torch.distributed
  from torch import nn
  from torch.nn import functional
  from typing import List
  from loguru import logger
  from functools import lru_cache
  from accelerate import init_empty_weights
  from text_generation_server.utils.gptq.quant_linear import QuantLinear
  from text_generation_server.utils.import_utils import IS_CUDA_SYSTEM, IS_ROCM_SYSTEM
  from text_generation_server.utils.log import log_once
label_desc: Use image node_id 2 for calling the TensorParallelEmbedding obj's underlying member method code with example usage: obj.forward(input) and returns: out