code: def test_sharding_dp(
      self,
      sharder_type: str,
      apply_optimizer_in_backward_config: Optional[
          Dict[str, Tuple[Type[torch.optim.Optimizer], Dict[str, Any]]]
      ],
  ) -> None:
      sharding_type = ShardingType.DATA_PARALLEL.value
      kernel_type = EmbeddingComputeKernel.DENSE.value
      self._test_sharding(
          # pyre-ignore[6]
          sharders=[
              create_test_sharder(
                  sharder_type, sharding_type, kernel_type
              ),
          ],
          backend=self.backend,
          apply_optimizer_in_backward_config=apply_optimizer_in_backward_config,
      )
  
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 3 for calling the ModelParallelBase obj's underlying member method code with example usage: obj.test_sharding_dp(sharder_type, apply_optimizer_in_backward_config) without return types