code: def _slice_embedding(self, child, name, conv_linear_layer):
      if getattr(child, "replaced", False) == True:
          return
      mp_replace = ReplaceWithTensorSlicing(mp_group=self.mp_group)
  
      if hasattr(child.weight, "ds_tensor"):
          data = child.weight.ds_tensor.data.split(
              get_shard_size_list(child.weight.shape[1], self.mp_size),
              dim=1,
          )
      else:
          data = child.weight.data.split(
              get_shard_size_list(
                  child.weight.shape[1], self.mp_size, name
              ),
              dim=1,
          )
      data = data[mp_replace.gpu_index].to(
          get_accelerator().current_device_name()
      )
      data = torch.nn.parameter.Parameter(data, requires_grad=False)
  
      new_embedding = nn.Embedding(
          child.weight.shape[0],
          get_shard_size(child.weight.shape[1], self.mp_size, name),
      )
      new_embedding.weight.data.copy_(data)
      setattr(child, "replaced", True)
      return new_embedding
  
imports: import re
  from torch import nn
  from .replace_policy import replace_policies
  from typing import Optional
  import torch
  from deepspeed import comm
  from .layers import LinearAllreduce, LinearLayer, LmHeadLinearAllreduce
  from deepspeed.accelerator import get_accelerator
  from .fusedqkv_utils import require_tp_fused_qkvw, prepare_tp_fused_qkvw
  from deepspeed.module_inject.tp_shard import get_shard_size, get_shard_size_list
label_desc: Use image node_id 11 for calling the AutoTP obj's underlying member method code with example usage: obj._slice_embedding(child, name, conv_linear_layer) and returns: new_embedding