class_docstr: Sampler that restricts data loading to a subset of the dataset for distributed,
  with repeated augmentation.
  It ensures that different each augmented version of a sample will be visible to a
  different process (GPU). Heavily based on torch.utils.data.DistributedSampler
  
  This sampler was taken from https://github.com/facebookresearch/deit/blob/0c4b8f60/samplers.py
  Used in
  Copyright (c) 2015-present, Facebook, Inc.
code: def __iter__(self):
      # deterministically shuffle based on epoch
      g = torch.Generator()
      g.manual_seed(self.epoch)
      if self.shuffle:
          indices = torch.randperm(len(self.dataset), generator=g)
      else:
          indices = torch.arange(start=0, end=len(self.dataset))
  
      # produce repeats e.g. [0, 0, 0, 1, 1, 1, 2, 2, 2....]
      if (
          isinstance(self.num_repeats, float)
          and not self.num_repeats.is_integer()
      ):
          # resample for repeats w/ non-integer ratio
          repeat_size = math.ceil(self.num_repeats * len(self.dataset))
          indices = indices[
              torch.tensor(
                  [
                      int(i // self.num_repeats)
                      for i in range(repeat_size)
                  ]
              )
          ]
      else:
          indices = torch.repeat_interleave(
              indices, repeats=int(self.num_repeats), dim=0
          )
      indices = (
          indices.tolist()
      )  # leaving as tensor thrashes dataloader memory
      # add extra samples to make it evenly divisible
      padding_size = self.total_size - len(indices)
      if padding_size > 0:
          indices += indices[:padding_size]
      assert len(indices) == self.total_size
  
      # subsample per rank
      indices = indices[self.rank : self.total_size : self.num_replicas]
      assert len(indices) == self.num_samples
  
      # return up to num selected samples
      return iter(indices[: self.num_selected_samples])
  
file_path: pytorch-image-models/timm/data/distributed_sampler.py
imports: import math
  import torch
  from torch.utils.data import Sampler
  import torch.distributed
label_desc: Use image node_id 2 for calling the RepeatAugSampler obj's underlying member method code with example usage: obj.__iter__() and returns: iter