class_docstr: Shards embedding bags data-parallel, with no table sharding i.e.. a given embedding
  table is replicated across all ranks.
class_docstr_tok: ["Shards","embedding","bags","data-parallel",",","with","no","table","sharding","i.e","..","a","given","embedding","table","is","replicated","across","all","ranks","."]
code: def create_lookup(
      self,
      device: Optional[torch.device] = None,
      fused_params: Optional[Dict[str, Any]] = None,
      feature_processor: Optional[BaseGroupedFeatureProcessor] = None,
  ) -> BaseEmbeddingLookup:
      return GroupedPooledEmbeddingsLookup(
          grouped_configs=self._grouped_embedding_configs,
          pg=self._env.process_group,
          device=device if device is not None else self._device,
          feature_processor=feature_processor,
          # For data parallel we need to turn always gradient scaling in for weights
          # because get_gradient_scaling from comm_ops only affects model_parallel tables, not DP
          scale_weight_gradients=False,
      )
  
imports: from typing import Any, cast, Dict, List, Optional, TypeVar
  import torch
  from torchrec.distributed.embedding_lookup import GroupedPooledEmbeddingsLookup
  from torchrec.distributed.embedding_sharding import BaseEmbeddingDist, BaseEmbeddingLookup, BaseSparseFeaturesDist, EmbeddingSharding, EmbeddingShardingContext, EmbeddingShardingInfo, group_tables
  from torchrec.distributed.embedding_types import BaseGroupedFeatureProcessor, EmbeddingComputeKernel, GroupedEmbeddingConfig, ShardedEmbeddingTable
  from torchrec.distributed.types import Awaitable, NoWait, ShardingEnv, ShardMetadata
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
  from torchrec.streamable import Multistreamable
label_desc: Use image node_id 2 for calling the DpPooledEmbeddingSharding obj's underlying member method code with example usage: obj.create_lookup(device, fused_params, feature_processor) and returns: GroupedPooledEmbeddingsLookup