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)]
      }
  
imports: import unittest
  from typing import cast, List, Optional, Type
  import hypothesis.strategies
  import torch
  from hypothesis import given, settings, Verbosity
  from torch import nn, quantization
  from torchrec.distributed.embedding_types import EmbeddingComputeKernel
  from torchrec.distributed.quant_embedding import QuantEmbeddingCollectionSharder
  from torchrec.distributed.shard import _shard_modules
  from torchrec.distributed.test_utils.test_model import ModelInput, TestSparseNNBase
  from torchrec.distributed.test_utils.test_model_parallel_base import InferenceModelParallelTestBase
  from torchrec.distributed.tests.test_sequence_model import TestSequenceSparseNN
  from torchrec.distributed.types import ModuleSharder, ShardingEnv, ShardingType
  from torchrec.modules.embedding_configs import EmbeddingConfig
  from torchrec.modules.embedding_modules import EmbeddingCollection
  from torchrec.quant.embedding_modules import EmbeddingCollection, quant_prep_enable_quant_state_dict_split_scale_bias_for_types
  from torchrec.test_utils import seed_and_log, skip_if_asan_class
label_desc: Use image node_id 2 for calling the QuantSequenceModelParallelTest obj's underlying member method code with example usage: obj.setUp() without return types