class_docstr: Testing hierarchical sharding types.
  
  NOTE:
      Requires at least 4 GPUs to test.
class_docstr_tok: ["Testing","hierarchical","sharding","types",".","NOTE",":","Requires","at","least","4","GPUs","to","test","."]
code: def setUp(self) -> None:
      super().setUp()
  
      num_features = 4
  
      self.tables = [
          EmbeddingConfig(
              num_embeddings=(i + 1) * 11,
              embedding_dim=16,
              name="table_" + str(i),
              feature_names=["feature_" + str(i)],
          )
          for i in range(num_features)
      ]
      self.embedding_groups = {
          "group_0": ["feature_" + str(i) for i in range(num_features)]
      }
  
file_path: torchrec/torchrec/distributed/tests/test_sequence_model_parallel_hierarchical.py
imports: import unittest
  from typing import Any, Dict, List, Optional, Tuple, Type
  import torch
  from fbgemm_gpu.split_embedding_configs import EmbOptimType
  from hypothesis import given, settings, strategies, Verbosity
  from torchrec.distributed.embedding_types import EmbeddingComputeKernel
  from torchrec.distributed.test_utils.multi_process import MultiProcessTestBase
  from torchrec.distributed.test_utils.test_model import TestSparseNNBase
  from torchrec.distributed.test_utils.test_sharding import create_test_sharder, SharderType, sharding_single_rank_test
  from torchrec.distributed.tests.test_sequence_model import TestEmbeddingCollectionSharder, TestSequenceSparseNN, TestSequenceTowerSparseNN
  from torchrec.distributed.types import ShardingType
  from torchrec.modules.embedding_configs import EmbeddingConfig
  from torchrec.test_utils import seed_and_log, skip_if_asan_class
label_desc: Use image node_id 2 for calling the SequenceModelParallelHierarchicalTest obj's underlying member method code with example usage: obj.setUp() without return types