class_docstr: Base class for column-wise sharding.
class_docstr_tok: ["Base","class","for","column-wise","sharding","."]
code: def __init__(
      self,
      sharding_infos: List[EmbeddingShardingInfo],
      env: ShardingEnv,
      device: Optional[torch.device] = None,
      permute_embeddings: bool = False,
      qcomm_codecs_registry: Optional[
          Dict[str, QuantizedCommCodecs]
      ] = None,
  ) -> None:
      super().__init__(
          sharding_infos,
          env,
          device,
          qcomm_codecs_registry=qcomm_codecs_registry,
      )
      self._permute_embeddings = permute_embeddings
      if self._permute_embeddings:
          self._init_combined_embeddings()
  
imports: from typing import Any, Callable, Dict, List, Optional, Set, Tuple, TypeVar
  import torch
  import torch.distributed
  from fbgemm_gpu.permute_pooled_embedding_modules_split import PermutePooledEmbeddingsSplit
  from torchrec.distributed.dist_data import EmbeddingsAllToOne
  from torchrec.distributed.embedding_lookup import GroupedPooledEmbeddingsLookup, InferGroupedPooledEmbeddingsLookup
  from torchrec.distributed.embedding_sharding import BaseEmbeddingDist, BaseEmbeddingLookup, BaseSparseFeaturesDist, EmbeddingShardingContext, EmbeddingShardingInfo
  from torchrec.distributed.embedding_types import BaseGroupedFeatureProcessor, EmbeddingComputeKernel, KJTList, ShardedEmbeddingTable
  from torchrec.distributed.sharding.tw_sharding import BaseTwEmbeddingSharding, InferTwSparseFeaturesDist, TwPooledEmbeddingDist, TwSparseFeaturesDist
  from torchrec.distributed.types import NullShardingContext, QuantizedCommCodecs, ShardedTensorMetadata, ShardingEnv, ShardMetadata
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
  from torchrec.streamable import Multistreamable
label_desc: Use image node_id 1 to create a new BaseCwEmbeddingSharding object from inherited base classes: BaseTwEmbeddingSharding with example: obj = BaseCwEmbeddingSharding(sharding_infos, env, device, permute_embeddings, qcomm_codecs_registry)