code: def test_sharding_variable_batch(
      self,
      sharding_type: str,
      global_constant_batch: bool,
  ) -> None:
      self._test_sharding(
          # pyre-ignore[6]
          sharders=[
              create_test_sharder(
                  sharder_type=SharderType.EMBEDDING_BAG_COLLECTION.value,
                  sharding_type=sharding_type,
                  kernel_type=EmbeddingComputeKernel.FUSED.value,
                  device=self.device,
              ),
          ],
          backend=self.backend,
          constraints={
              table.name: ParameterConstraints(min_partition=4)
              for table in self.tables
          },
          variable_batch_per_feature=True,
          has_weighted_tables=False,
          global_constant_batch=global_constant_batch,
      )
  
imports: import unittest
  from typing import Any, cast, Dict, List, Optional, Tuple, Type
  import torch
  import torch.nn
  from fbgemm_gpu.split_embedding_configs import EmbOptimType
  from hypothesis import assume, given, settings, strategies, Verbosity
  from torchrec.distributed.embedding_types import EmbeddingComputeKernel
  from torchrec.distributed.fbgemm_qcomm_codec import CommType, QCommsConfig
  from torchrec.distributed.planner import ParameterConstraints
  from torchrec.distributed.test_utils.multi_process import MultiProcessTestBase
  from torchrec.distributed.test_utils.test_model import TestSparseNN, TestSparseNNBase
  from torchrec.distributed.test_utils.test_sharding import create_test_sharder, SharderType, sharding_single_rank_test
  from torchrec.distributed.types import ModuleSharder, ShardingType
  from torchrec.modules.embedding_configs import EmbeddingBagConfig
  from torchrec.test_utils import seed_and_log, skip_if_asan_class
label_desc: Use image node_id 6 for calling the ModelParallelBase obj's underlying member method code with example usage: obj.test_sharding_variable_batch(sharding_type, global_constant_batch) without return types