class_docstr: Sampler that restricts data loading to a subset of
  the dataset for elastic training.
  
  It is especially useful in conjunction with
  :class:`torch.nn.parallel.DistributedDataParallel`. In such case, each
  process can pass a DistributedSampler instance as a DataLoader sampler,
  and load a subset of the original dataset that is exclusive to it.
  
  .. note::
      Dataset is assumed to be of constant size.
  
  Args:
      dataset: Dataset used for sampling.
      num_replicas (optional): Number of processes participating in
          distributed training.
      rank (optional): Rank of the current process within num_replicas.
      start_index (optional):  Which index of the dataset to start sampling from
code: def __init__(
      self, dataset, num_replicas=None, rank=None, start_index=0
  ):
      super().__init__(
          dataset=dataset, num_replicas=num_replicas, rank=rank
      )
      if start_index >= len(dataset):
          raise ValueError(
              f"Start index {start_index} should be less than dataset size {len(dataset)}"
          )
  
      self.start_index = start_index
      self.num_samples = int(
          math.ceil(float(len(self.dataset) - self.start_index) / self.num_replicas)  # type: ignore[arg-type]
      )
      self.total_size = self.num_samples * self.num_replicas
  
file_path: pytorch/torch/distributed/elastic/utils/data/elastic_distributed_sampler.py
imports: import math
  import torch
  from torch.utils.data.distributed import DistributedSampler
label_desc: Use image node_id 1 to create a new ElasticDistributedSampler object from inherited base classes: DistributedSampler with example: obj = ElasticDistributedSampler(dataset, num_replicas, rank, start_index)