code: def test_gather_uneven(self, world_size: Optional[int] = 4) -> None:
      config = get_pet_launch_config(2)
      launcher.elastic_launch(
          config, entrypoint=self._test_ddp_gather_uneven_tensors
      )()
  
imports: import os
  import unittest
  from typing import Literal, Optional, Union
  from unittest.mock import MagicMock, patch
  from urllib.parse import parse_qs, urlparse
  import torch
  import torch.distributed
  import torch.distributed.launcher
  from pyre_extensions import none_throws
  from torchtnt.utils.distributed import _validate_global_rank_world_size, all_gather_tensors, destroy_process_group, get_file_init_method, get_global_rank, get_local_rank, get_local_world_size, get_process_group_backend_from_device, get_tcp_init_method, get_world_size, PGWrapper, rank_zero_fn, revert_sync_batchnorm, sync_bool
  from torchtnt.utils.test_utils import get_pet_launch_config
label_desc: Use image node_id 14 for calling the DistributedTest obj's underlying member method code with example usage: obj.test_gather_uneven(world_size) without return types