class_docstr: Redistributes sparse features to all devices for inference.
  
  Args:
      features_per_rank (List[int]): number of features to send to each rank.
      world_size (int): number of devices in the topology.
      fused_params (Dict[str, Any]): fused parameters of the model.
class_docstr_tok: ["Redistributes","sparse","features","to","all","devices","for","inference",".","Args",":","features_per_rank","(","List","[","int","]",")",":","number","of","features","to","send","to","each","rank",".","world_size","(","int",")",":","number","of","devices","in","the","topology",".","fused_params","(","Dict","[","str",",","Any","]",")",":","fused","parameters","of","the","model","."]
docstr: Performs OnetoAll operation on sparse features.
  
  Args:
      sparse_features (KeyedJaggedTensor): sparse features to redistribute.
  
  Returns:
      Awaitable[Awaitable[KeyedJaggedTensor]]: awaitable of awaitable of KeyedJaggedTensor.
docstr_tok: ["Performs","OnetoAll","operation","on","sparse","features",".","Args",":","sparse_features","(","KeyedJaggedTensor",")",":","sparse","features","to","redistribute",".","Returns",":","Awaitable","[","Awaitable","[","KeyedJaggedTensor","]","]",":","awaitable","of","awaitable","of","KeyedJaggedTensor","."]
code: def forward(
      self,
      sparse_features: KeyedJaggedTensor,
  ) -> KJTList:
      """
      Performs OnetoAll operation on sparse features.
  
      Args:
          sparse_features (KeyedJaggedTensor): sparse features to redistribute.
  
      Returns:
          Awaitable[Awaitable[KeyedJaggedTensor]]: awaitable of awaitable of KeyedJaggedTensor.
      """
      return self._dist.forward(sparse_features)
  
imports: from typing import Any, Callable, cast, Dict, List, Optional, TypeVar, Union
  import torch
  import torch.distributed
  from torchrec.distributed.dist_data import EmbeddingsAllToOne, KJTAllToAll, KJTOneToAll, PooledEmbeddingsAllToAll, VariableBatchPooledEmbeddingsAllToAll
  from torchrec.distributed.embedding_lookup import GroupedPooledEmbeddingsLookup, InferGroupedPooledEmbeddingsLookup
  from torchrec.distributed.embedding_sharding import BaseEmbeddingDist, BaseEmbeddingLookup, BaseSparseFeaturesDist, EmbeddingSharding, EmbeddingShardingContext, EmbeddingShardingInfo, group_tables
  from torchrec.distributed.embedding_types import BaseGroupedFeatureProcessor, EmbeddingComputeKernel, GroupedEmbeddingConfig, KJTList, ShardedEmbeddingTable
  from torchrec.distributed.types import Awaitable, CommOp, NullShardingContext, QuantizedCommCodecs, ShardedTensorMetadata, ShardingEnv, ShardMetadata
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor
  from torchrec.streamable import Multistreamable
label_desc: Use image node_id 2 for calling the InferTwSparseFeaturesDist obj's underlying member method code with example usage: obj.forward(sparse_features) and returns: self